> ## Documentation Index
> Fetch the complete documentation index at: https://docs.enginy.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Update a blocklist entry

> Update an existing blocklist entry. Updates to LinkedIn URL values are normalized before persisting.

    > **Required scope:** `BLOCKLIST_WRITE`
    >
    > **Rate limit:** 30 requests per minute



## OpenAPI

````yaml https://openapi.enginy.ai/definitions.json patch /v1/blocklist/{itemId}
openapi: 3.1.0
info:
  title: Enginy API
  version: 1.0.0
  description: Public API for Enginy platform
servers:
  - url: https://openapi.enginy.ai
    description: Configured server
security: []
tags:
  - name: AI Variables
    description: >-
      Manage AI variables and discover the entity fields you can reference in
      prompts and entity requests.
  - name: Inbox
    description: >-
      Inbox endpoints for listing contact threads, reading thread messages,
      managing tags, and sending manual replies.
  - name: Workflows
    description: >-
      Build, validate, publish, run, and inspect advanced (graph) workflows,
      plus the block/condition catalog needed to author a workflow plan.
paths:
  /v1/blocklist/{itemId}:
    patch:
      tags:
        - Blocklist
      summary: Update a blocklist entry
      description: >-
        Update an existing blocklist entry. Updates to LinkedIn URL values are
        normalized before persisting.

            > **Required scope:** `BLOCKLIST_WRITE`
            >
            > **Rate limit:** 30 requests per minute
      parameters:
        - schema:
            type: string
            description: The blocklist item ID
          required: true
          description: The blocklist item ID
          name: itemId
          in: path
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                reason:
                  type: string
                  enum:
                    - NOT_INTERESTED
                    - COMPETITOR
                    - CUSTOMER
                    - NOT_TARGET
                    - OTHER
                    - CHURN
                  description: New reason classification.
                value:
                  type: string
                  minLength: 1
                  description: >-
                    New raw value. `LINKEDIN_URL` / `COMPANY_LINKEDIN_URL`
                    entries are normalized server-side; if normalization fails
                    the request is rejected.
                periodDays:
                  type:
                    - integer
                    - 'null'
                  minimum: 0
                  description: >-
                    Reset the expiry relative to now. Pass `0` or `null` to make
                    the entry permanent. Ignored when `expiresAt` is supplied.
                expiresAt:
                  type:
                    - string
                    - 'null'
                  format: date-time
                  description: >-
                    Explicit ISO-8601 expiry. Pass `null` to make the entry
                    permanent. Takes precedence over `periodDays`.
            examples:
              extendExpiry:
                summary: Extend expiry by 30 days
                value:
                  periodDays: 30
              makePermanent:
                summary: Make the entry permanent
                value:
                  expiresAt: null
              changeReason:
                summary: Reclassify reason
                value:
                  reason: CHURN
      responses:
        '200':
          description: Blocklist item updated
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                      - success
                  message:
                    type: string
                  data:
                    type: object
                    properties:
                      id:
                        type: number
                        description: Unique identifier for the blocklist item
                      type:
                        type: string
                        enum:
                          - EMAIL
                          - LINKEDIN_URL
                          - DOMAIN
                          - COMPANY_LINKEDIN_URL
                        description: The kind of value being blocked
                      value:
                        type: string
                        description: >-
                          The blocked value (email, domain, or normalized
                          LinkedIn URL)
                      source:
                        type: string
                        enum:
                          - BLACKLIST
                          - INBOX
                          - WORKFLOW
                          - CAMPAIGN
                          - LIST
                        description: Where this entry originated
                      reason:
                        type: string
                        enum:
                          - NOT_INTERESTED
                          - COMPETITOR
                          - CUSTOMER
                          - NOT_TARGET
                          - OTHER
                          - CHURN
                        description: Why this entry was added
                      expiresAt:
                        type:
                          - string
                          - 'null'
                        format: date-time
                        description: >-
                          When this entry expires. `null` means it never
                          expires.
                      createdAt:
                        type: string
                        format: date-time
                        description: When the entry was created
                      updatedAt:
                        type: string
                        format: date-time
                        description: When the entry was last updated
                      createdBy:
                        type: object
                        properties:
                          id:
                            type: number
                            description: ID of the user who created the entry
                          name:
                            type:
                              - string
                              - 'null'
                            description: Name of the user who created the entry
                        required:
                          - id
                          - name
                        description: User who created the blocklist entry
                    required:
                      - id
                      - type
                      - value
                      - source
                      - reason
                      - expiresAt
                      - createdAt
                      - updatedAt
                      - createdBy
                required:
                  - status
                  - message
                  - data
        '400':
          description: Bad request - invalid input
        '404':
          description: Blocklist item not found
      security:
        - apiKey: []
components:
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: x-api-key

````