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

# Complete a callback

> Completar la ejecución de una acción bloqueada específica por ID.

export const ScopesList = ({scopes = [], description = "Esta API requiere uno de los siguientes ámbitos:"}) => {
  if (!scopes || scopes.length === 0) {
    return null;
  }
  const sortedScopes = scopes.sort((a, b) => a.localeCompare(b));
  return <div>
      <div className="text-sm mb-2">{description}</div>
      <div>
        {sortedScopes.map((scope, index) => <div key={index}>
            <code>
              <span className="text-xs">{scope}</span>
            </code>
          </div>)}
      </div>
    </div>;
};

export const SupportedProducts = ({marketing, sales, service, cms, marketingLevel, salesLevel, serviceLevel, cmsLevel}) => {
  const translations = {
    header: "Productos compatibles",
    description: "Se requiere uno de los siguientes productos o productos de ediciones superiores.",
    productNames: {
      marketing: "Marketing Hub",
      sales: "Sales Hub",
      service: "Service Hub",
      cms: "Content Hub"
    },
    tiers: {
      free: "Gratuito",
      starter: "Starter",
      professional: "Pro",
      enterprise: "Enterprise"
    }
  };
  const translateTier = tier => {
    if (!tier) return '';
    const lowerTier = tier.toLowerCase();
    return translations.tiers[lowerTier] || tier;
  };
  const products = [{
    name: marketing ? translations.productNames.marketing : '',
    level: translateTier(marketingLevel),
    icon: "https://mintlify-assets.b-cdn.net/Icons/marketing-bolt.svg",
    alt: "Marketing Hub"
  }, {
    name: sales ? translations.productNames.sales : '',
    level: translateTier(salesLevel),
    icon: "https://mintlify-assets.b-cdn.net/Icons/sales-star.svg",
    alt: "Sales Hub"
  }, {
    name: service ? translations.productNames.service : '',
    level: translateTier(serviceLevel),
    icon: "https://mintlify-assets.b-cdn.net/Icons/service-heart.svg",
    alt: "Service Hub"
  }, {
    name: cms ? translations.productNames.cms : '',
    level: translateTier(cmsLevel),
    icon: "https://mintlify-assets.b-cdn.net/Icons/content-play.svg",
    alt: "Content Hub"
  }].filter(product => product.name && product.level);
  if (products.length === 0) return null;
  return <div>
      <div className="text-sm mb-2">{translations.description}</div>
      <div className={`grid ${products.length === 1 ? 'grid-cols-1' : 'grid-cols-2'} gap-1.5`}>
        {products.map((product, index) => <div key={index} style={{
    display: 'flex',
    alignItems: 'center'
  }}>
            <img src={product.icon} alt={product.alt} className="w-3.5 h-3.5 mr-1.5 mt-2.5 mb-2.5 flex-shrink-0 align-middle" />
            <span className="font-medium mr-1 text-sm">{product.name} -</span>
            <span className="text-sm">{product.level}</span>
          </div>)}
      </div>
    </div>;
};

<AccordionGroup>
  <Accordion title="Supported products" defaultOpen="true" icon="cubes">
    <SupportedProducts marketing={true} sales={true} service={true} cms={true} marketingLevel="PROFESSIONAL" salesLevel="PROFESSIONAL" serviceLevel="PROFESSIONAL" cmsLevel="PROFESSIONAL" />
  </Accordion>

  <Accordion title="Required Scopes" icon="key">
    <ScopesList
      scopes={[
  'automation'
]}
    />
  </Accordion>
</AccordionGroup>


## OpenAPI

````yaml specs/2026-03/automation-actions-v4-v2026-03.json POST /automation/actions/callbacks/2026-03/{callbackId}/complete
openapi: 3.0.1
info:
  title: Automation Actions V4
  description: Basepom for all HubSpot Projects
  version: 2026-03
  x-hubspot-product-tier-requirements:
    marketing: PROFESSIONAL
    sales: PROFESSIONAL
    service: PROFESSIONAL
    cms: PROFESSIONAL
    commerce: PROFESSIONAL
    crmHub: PROFESSIONAL
    dataHub: PROFESSIONAL
servers:
  - url: https://api.hubapi.com
security: []
tags:
  - name: Callbacks
  - name: Definitions
  - name: Functions
  - name: Revisions
paths:
  /automation/actions/callbacks/2026-03/{callbackId}/complete:
    post:
      tags:
        - Callbacks
      summary: Completa una devolución de llamada
      description: Completar la ejecución de una acción bloqueada específica por ID.
      operationId: >-
        post-/automation/actions/callbacks/2026-03/{callbackId}/complete_complete
      parameters:
        - name: callbackId
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CallbackCompletionRequest'
        required: true
      responses:
        '204':
          description: No content
          content: {}
        default:
          $ref: '#/components/responses/Error'
          description: ''
      security:
        - oauth2:
            - automation
components:
  schemas:
    CallbackCompletionRequest:
      required:
        - outputFields
        - typedOutputs
      type: object
      properties:
        failureReasonType:
          type: string
          description: Indica el motivo del fallo al realizar la devolución de una llamada.
        outputFields:
          type: object
          additionalProperties:
            type: string
          description: >-
            Contiene los campos de salida asociados a la devolución de la
            llamada, donde cada campo se representa como un par clave-valor.
        requestContext:
          description: >-
            Especifica el contexto en el que se hace la solicitud, que puede ser
            uno de varios contextos predefinidos.
          oneOf:
            - $ref: '#/components/schemas/WorkflowsRequestContext'
            - $ref: '#/components/schemas/AgentRequestContext'
            - $ref: '#/components/schemas/CopilotRequestContext'
            - $ref: '#/components/schemas/StandaloneRequestContext'
            - $ref: '#/components/schemas/TestRequestContext'
        typedOutputs:
          type: object
          properties: {}
          description: >-
            Contiene los resultados escritos relacionados con la devolución de
            la llamada, estructurados como un objeto.
    WorkflowsRequestContext:
      title: WORKFLOWS
      required:
        - source
        - workflowId
      type: object
      properties:
        actionExecutionIndexIdentifier:
          $ref: '#/components/schemas/ActionExecutionIndexIdentifier'
        actionId:
          type: integer
          description: El ID de la acción dentro del contexto del workflow.
          format: int64
        source:
          type: string
          description: >-
            Indica el origen de la solicitud, con el valor predeterminado
            WORKFLOWS.
          default: WORKFLOWS
          enum:
            - WORKFLOWS
        workflowId:
          type: integer
          description: El ID del workflow asociado al contexto de la solicitud.
          format: int64
      x-hubspot-sub-type-impl: true
    AgentRequestContext:
      title: AGENTS
      required:
        - agentId
        - chirpAiContextObject
        - source
      type: object
      properties:
        agentId:
          type: integer
          description: El identificador único del agente que hace la solicitud.
          format: int64
        chirpAiContextObject:
          $ref: '#/components/schemas/ChirpAiContextObject'
        source:
          type: string
          description: >-
            Indica la fuente de la solicitud, cuyo valor predeterminado es
            "AGENTS".
          default: AGENTS
          enum:
            - AGENTS
        trajectoryId:
          type: string
          description: >-
            El identificador único de la trayectoria asociada a la solicitud del
            agente.
      x-hubspot-sub-type-impl: true
    CopilotRequestContext:
      title: COPILOT
      required:
        - source
      type: object
      properties:
        source:
          type: string
          description: >-
            Indica la fuente de la solicitud, con el valor predeterminado
            "COPILOT".
          default: COPILOT
          enum:
            - COPILOT
        trajectoryId:
          type: string
          description: El identificador único de la trayectoria.
      x-hubspot-sub-type-impl: true
    StandaloneRequestContext:
      title: STANDALONE
      required:
        - chirpAiContextObject
        - source
      type: object
      properties:
        chirpAiContextObject:
          $ref: '#/components/schemas/ChirpAiContextObject'
        source:
          type: string
          description: >-
            Indica la fuente de la solicitud, con el valor predeterminado
            "STANDALONE".
          default: STANDALONE
          enum:
            - STANDALONE
        trajectoryId:
          type: string
          description: >-
            Un identificador único para hacer seguimiento de la trayectoria de
            la solicitud.
      x-hubspot-sub-type-impl: true
    TestRequestContext:
      title: TEST
      required:
        - source
      type: object
      properties:
        source:
          type: string
          description: >-
            Indica la fuente de la solicitud de prueba, cuyo único valor
            aceptado es "TEST".
          default: TEST
          enum:
            - TEST
      x-hubspot-sub-type-impl: true
    Error:
      required:
        - category
        - correlationId
        - message
      type: object
      properties:
        category:
          type: string
          description: La categoría del error
        context:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
          description: Contexto de la condición de error
          example: >-
            {invalidPropertyName=[propertyValue], missingScopes=[scope1,
            scope2]}
        correlationId:
          type: string
          description: >-
            Un identificador único para la solicitud. Incluye este valor con
            cualquier informe de error o ticket de asistencia.
          format: uuid
          example: aeb5f871-7f07-4993-9211-075dc63e7cbf
        errors:
          type: array
          description: información adicional acerca del error
          items:
            $ref: '#/components/schemas/ErrorDetail'
        links:
          type: object
          additionalProperties:
            type: string
          description: >-
            Un mapa de nombres de enlaces a las URI asociadas que contienen
            documentación sobre el error o los pasos recomendados para
            solucionarlo
        message:
          type: string
          description: >-
            Un mensaje legible en el que se describa el error y los pasos para
            solucionarlo, si procede
          example: An error occurred
        subCategory:
          type: string
          description: >-
            Una categoría específica que contiene detalles más concretos acerca
            del error
      description: >-
        Representa una respuesta de error que devuelve la API cuando una
        operación falla. Este componente se usa en varios puntos de terminación
        para dar información detallada sobre el error que se encontró.
      example:
        message: Invalid input (details will vary based on the error)
        correlationId: aeb5f871-7f07-4993-9211-075dc63e7cbf
        category: VALIDATION_ERROR
        links:
          knowledge-base: https://www.hubspot.com/products/service/knowledge-base
    ActionExecutionIndexIdentifier:
      required:
        - actionExecutionIndex
        - enrollmentId
      type: object
      properties:
        actionExecutionIndex:
          type: integer
          description: >-
            El número de índice que representa el orden de ejecución de la
            acción.
          format: int32
        enrollmentId:
          type: integer
          description: El ID asociado al proceso de inscripción.
          format: int64
    ChirpAiContextObject:
      required:
        - applicationGroup
        - applicationId
        - isPrivate
        - metadata
        - otelContextHolder
        - unstructuredSources
      type: object
      properties:
        applicationGroup:
          type: string
          description: El grupo al que pertenece la aplicación.
        applicationId:
          type: string
          description: El identificador de la aplicación asociada al contexto.
        complianceIds:
          $ref: '#/components/schemas/ComplianceIds'
        conversationId:
          type: string
        featureId:
          type: string
          description: El identificador de la función asociada al contexto.
        inferenceId:
          type: string
          description: El identificador de la inferencia asociada al contexto.
        isPrivate:
          type: boolean
        metadata:
          type: object
          additionalProperties:
            type: string
          description: >-
            Metadatos adicionales relacionados con el contexto, representados
            como pares clave-valor.
        otelContextHolder:
          type: object
          additionalProperties:
            type: string
          description: >-
            Guarda la información de contexto de OpenTelemetry como pares
            clave-valor.
        trajectoryId:
          type: string
          description: El identificador de la trayectoria, con formato UUID.
          format: uuid
        unstructuredSources:
          type: array
          items:
            type: string
            enum:
              - NONE
              - USER_INPUT
              - LOGGED_EMAIL
              - VIDEO_CALL
              - AUDIO_CALL
              - CALL_TRANSCRIPT
              - MEETING_TRANSCRIPT
              - FORMS
              - FEEDBACK_SURVEY
              - PDF
              - QUOTE
              - INVOICE
              - OTHER_ATTACHMENT_DOC
              - WHATSAPP
              - SMS
              - CHAT
              - FACEBOOK_MESSENGER
              - CUSTOM_CHANNEL_OR_API
              - MANY
              - NOTE
              - DERIVED
    ErrorDetail:
      required:
        - message
      type: object
      properties:
        code:
          type: string
          description: El código de estado asociado al detalle del error
        context:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
          description: Contexto de la condición de error
          example: '{missingScopes=[scope1, scope2]}'
        in:
          type: string
          description: El nombre del campo o parámetro en el que se encontró el error.
        message:
          type: string
          description: >-
            Un mensaje legible en el que se describa el error y los pasos para
            solucionarlo, si procede
        subCategory:
          type: string
          description: >-
            Una categoría específica que contiene detalles más concretos acerca
            del error
      description: >-
        Representa información detallada sobre un error que ocurrió en la API.
        Este componente se usa para dar contexto adicional y detalles
        específicos sobre los errores, normalmente como parte de una respuesta
        de error.
    ComplianceIds:
      required:
        - contactIds
        - portalIds
        - userIds
      type: object
      properties:
        contactIds:
          type: array
          items:
            $ref: '#/components/schemas/ContactId'
        noContactIdReason:
          type: string
          description: La razón por la que no hay un ID de contacto disponible.
        noPortalIdReason:
          type: string
          description: La razón por la que no hay un ID de portal disponible.
        noUserIdReason:
          type: string
          description: La razón por la que no hay un ID de usuario disponible.
        portalIds:
          type: array
          items:
            type: integer
            format: int32
        userIds:
          type: array
          items:
            type: integer
            format: int32
    ContactId:
      required:
        - portalId
      type: object
      properties:
        email:
          type: string
          description: La dirección de correo del contacto.
        portalId:
          type: integer
          description: El ID del portal asociado al contacto.
          format: int32
        vid:
          type: integer
          description: El identificador único del contacto.
          format: int64
  responses:
    Error:
      description: An error occurred.
      content:
        '*/*':
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    oauth2:
      type: oauth2
      flows:
        authorizationCode:
          authorizationUrl: https://app.hubspot.com/oauth/authorize
          tokenUrl: https://api.hubapi.com/oauth/v1/token
          scopes:
            automation: ''
            developers-read: ''
            developers-write: ''

````