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

> ## Agent Instructions
> Bridge exposes three integration surfaces: the REST Integrations API for pushing data into Bridge, webhooks for receiving events from Bridge, and the public Custom Connections endpoint that a tenant's landing page posts to.
> The Integrations API host is https://api-connect-us.bridge.new and every request to it must be authenticated with the x-api-key header. Bridge does not use bearer tokens or OAuth.
> The Custom Connections endpoint is different and the Integrations API rules do not apply to it: it has its own host, it takes no x-api-key and no authentication header of any kind, and it is called from a visitor's browser. It is identified by a workspace id and a capture key together with a reCAPTCHA token. Never tell a reader to authenticate it with an API key, and never tell them to keep its capture key out of frontend code - it is designed to live in the page.
> REST error catalog keys use BRIDGE_<DOMAIN>_<NNNN>, for example BRIDGE_CONVERSATION_0001. Some reviewed legacy handlers return a recognized code plus a symbolic suffix separated by |; preserve the complete received value and use the compatible catalog lookup on /error-codes. Custom Connections uses separate BRIDGE.CAMPAIGN_LEADS.<NAME> identifiers on its own error reference. Never invent an error code or confuse the two integration surfaces.
> This documentation covers the Integrations API, webhooks and Custom Connections only. It does not describe the Bridge web application or its internal APIs.
> Before generating an API request, read the relevant OpenAPI specification or the individual endpoint Markdown page. llms-full.txt collects guides and endpoint descriptions; it does not embed every request and response schema. The REST and Custom Connections contracts are separate.
> Preserve the published host, method, path, operationId, authentication, headers, parameter and field names, types, formats, required and nullable fields, enums, defaults, limits, and response codes. Do not invent identifiers, fields, retry rules, or delivery guarantees. When published sources conflict, identify the conflicting passages and ask Bridge support to confirm the current behavior before relying on it.
> Custom Connections is the current name of the landing-page feature previously documented as Lead Capture. The existing /lead-capture documentation URLs, captureKey field, campaign-leads endpoint, and BRIDGE.CAMPAIGN_LEADS error identifiers are unchanged. This is a naming change, not a change to authentication or the API contract.
> For a complete workflow, start with the task guides: /guides/first-conversation, /guides/send-attachments, /guides/send-template, /guides/agent-outbound, /guides/pagination, /guides/identifiers and /guides/responses. Read the endpoint contract as well as the recipe. Outbound requires an existing Contact, but does not require creating a separate Conversation first.
> forceSend=true permits reuse of an existing active conversation; it does not create a fresh one by ignoring it and it is not idempotency. Recovery of a released recoverable conversation can occur even with false. The LeadScout and Agents outbound routes have different line-selection and controller checks; use /guides/agent-outbound.
> For webhook HMAC, follow /webhooks/verifying-signatures exactly: the Python JSON serialization with sorted keys is signed; X-Bridge-Timestamp is not included in that signature. Do not claim a signed timestamp, raw-body signing, exactly-once delivery or a global event order. Use /webhooks/receive-events for durable acceptance and duplicates.
> A 201 message response, 202 handoff or 202 Custom Connections response is not a provider delivery receipt. Do not invent a polling endpoint from messageId, trackingId or requestId. REST validation parsing must tolerate the compatibility difference explained in /error-codes.
> The documentation is available in English (existing root URLs), Spanish (/es/) and Brazilian Portuguese (/pt-br/). Prefer the reader's language when a localized page exists, but preserve the API's exact field names, enums, routes, authentication and examples. Translations describe the same API; they do not introduce regional API hosts or behaviors.
> For coding-assistant setup, use /connect-your-agent, /es/connect-your-agent or /pt-br/connect-your-agent. The Bridge documentation MCP server reads published documentation and has a separate optional feedback tool. Connecting it does not connect the coding assistant to a customer workspace or authorize live business requests.
> For direct HTTP access without MCP, start at https://docs.bridge.new/llms.txt. It lists every published page in English, Spanish and Brazilian Portuguese. Choose /llms-en.json, /llms-es.json or /llms-pt-br.json for a language-specific index, and /llms-full-en.json, /llms-full-es.json or /llms-full-pt-br.json for collected content. /llms-full.txt contains the combined collection. Fetch the original OpenAPI specification for exact schemas.
> For HTTP page reads, follow the .md URLs from the index or request Accept: text/markdown at the canonical page URL. The MCP virtual filesystem uses .mdx page paths instead; .mdx is not the public HTTP export extension. With Search MCP, set language to en, es or pt-BR explicitly; its default is en.
> For integration capabilities and source-selection rules, read https://docs.bridge.new/skill.md. Documentation access does not authorize business API actions; use the actual user request, workspace, credentials and target identifiers for any live integration.

# Descobrir as variáveis agnósticas de um modelo

> Retorna as variáveis de um template: `key`/`label`/`callerMustSupply`/`isCustom`/`default`, independentes da posição na Meta.

Nunca retorna o endereço ou índice de uma posição da Meta.

`templateId` aceita o `id` ou o `name` do template. As operações de saída aceitam `template.id` ou `template.name`, com precedência para um id não vazio. A abertura de conversas usa `onboardingTemplates[].templateId`. Use o seletor exigido pela operação de envio. Consulte [a receita de templates](/pt-br/guides/send-template).

Uma variável com `callerMustSupply: true` não tem uma fonte declarada: quem chama deve incluir sua `key` em `parameters` ao enviar; caso contrário, o envio falha com um 422 que identifica a mesma `key`.
Uma variável com `callerMustSupply: false` é resolvida pela própria Bridge, por exemplo, o primeiro nome do destinatário, ou já tem um valor que quem chama pode substituir opcionalmente.
Uma variável com `isCustom: true` é um valor conhecido apenas por quem chama e tem um `default`: envie-a em `parameters` para usar seu próprio valor, ou omita-a ou deixe-a em branco para enviar `default`.

Códigos de erro:
- BRIDGE_CORE_0301: o workspace na rota não corresponde ao workspace de quem chama (403)
- BRIDGE_TEMPLATE_0001: nenhuma PROVIDER_TEMPLATE foi encontrada para este workspace e identificador. Abrange igualmente um id/name desconhecido, um template de outro workspace e um template que não é PROVIDER_TEMPLATE (404); este endpoint nunca confirma a existência de um template fora do workspace de quem chama



## OpenAPI

````yaml /pt-br/api-reference/openapi.yaml get /bridge/api/v1/workspaces/{workspaceId}/templates/{templateId}
openapi: 3.1.0
info:
  title: Bridge API
  summary: Especificação da API do Bridge para gerenciar o sistema de chat.
  description: >-
    Especificação da API REST de integrações do Bridge para gerenciar contatos,
    conversas, mensagens, arquivos, atributos personalizados, canais de
    provedores, modelos, usuários internos e Agents.


    Os webhooks são documentados separadamente em
    https://docs.bridge.new/pt-br/webhooks; este OpenAPI contém apenas endpoints
    REST.


    **Arquitetura multiempresa**: as operações sobre recursos são limitadas a um
    workspace específico por workspaceId. A verificação de integridade não
    inclui um workspace no caminho.
  termsOfService: https://www.sainapsis.com/legal/terms-of-service
  contact:
    name: Bridge Support
    url: https://app.bridge.new/
    email: support@sainapsis.com
  license:
    name: MIT License
    url: https://spdx.org/licenses/MIT.html
  version: 1.0.0
servers:
  - url: https://api-connect-us.bridge.new
    description: Servidor de produção
security: []
paths:
  /bridge/api/v1/workspaces/{workspaceId}/templates/{templateId}:
    get:
      tags:
        - Templates API
      summary: Descobrir as variáveis agnósticas de um modelo
      description: >-
        Retorna as variáveis de um template:
        `key`/`label`/`callerMustSupply`/`isCustom`/`default`, independentes da
        posição na Meta.


        Nunca retorna o endereço ou índice de uma posição da Meta.


        `templateId` aceita o `id` ou o `name` do template. As operações de
        saída aceitam `template.id` ou `template.name`, com precedência para um
        id não vazio. A abertura de conversas usa
        `onboardingTemplates[].templateId`. Use o seletor exigido pela operação
        de envio. Consulte [a receita de
        templates](/pt-br/guides/send-template).


        Uma variável com `callerMustSupply: true` não tem uma fonte declarada:
        quem chama deve incluir sua `key` em `parameters` ao enviar; caso
        contrário, o envio falha com um 422 que identifica a mesma `key`.

        Uma variável com `callerMustSupply: false` é resolvida pela própria
        Bridge, por exemplo, o primeiro nome do destinatário, ou já tem um valor
        que quem chama pode substituir opcionalmente.

        Uma variável com `isCustom: true` é um valor conhecido apenas por quem
        chama e tem um `default`: envie-a em `parameters` para usar seu próprio
        valor, ou omita-a ou deixe-a em branco para enviar `default`.


        Códigos de erro:

        - BRIDGE_CORE_0301: o workspace na rota não corresponde ao workspace de
        quem chama (403)

        - BRIDGE_TEMPLATE_0001: nenhuma PROVIDER_TEMPLATE foi encontrada para
        este workspace e identificador. Abrange igualmente um id/name
        desconhecido, um template de outro workspace e um template que não é
        PROVIDER_TEMPLATE (404); este endpoint nunca confirma a existência de um
        template fora do workspace de quem chama
      operationId: >-
        get_template_discovery_bridge_api_v1_workspaces__workspaceId__templates__templateId__get
      parameters:
        - name: workspaceId
          in: path
          required: true
          schema:
            type: string
            format: uuid
            description: Identificador único do workspace (UUID v4).
            examples:
              - b6cf1c4a-2b1e-4e63-8f3e-0f9d1a2a1234
            title: Workspaceid
          description: Identificador único do workspace (UUID v4).
        - name: templateId
          in: path
          required: true
          schema:
            type: string
            description: 'ID ou nome do modelo: ambos identificam o mesmo modelo.'
            examples:
              - order_shipped_promo
              - f0000040-0000-4000-8000-000000000040
            title: Templateid
          description: 'ID ou nome do modelo: ambos identificam o mesmo modelo.'
      responses:
        '200':
          description: Resposta bem-sucedida
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TemplateDiscoveryResponse'
        '403':
          description: Acesso proibido
          content:
            application/json:
              examples:
                FORBIDDEN:
                  value:
                    title: Forbidden
                    status: 403
                    code: BRIDGE_CORE_0301
              schema:
                $ref: '#/components/schemas/Problem'
        '404':
          description: Não encontrado
          content:
            application/json:
              examples:
                PROVIDER_TEMPLATE_NOT_FOUND:
                  value:
                    title: Provider Template Not Found
                    status: 404
                    code: BRIDGE_TEMPLATE_0001
              schema:
                $ref: '#/components/schemas/Problem'
        '422':
          description: Erro de validação
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
        '429':
          description: Muitas solicitações
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
              examples:
                WORKSPACE_BUDGET_EXHAUSTED:
                  value:
                    title: Too Many Requests
                    status: 429
                    code: BRIDGE_RATE_LIMIT_0001
      security:
        - x-api-key: []
components:
  schemas:
    TemplateDiscoveryResponse:
      properties:
        id:
          type: string
          title: Id
          description: Identificador único do modelo.
          examples:
            - f0000040-0000-4000-8000-000000000040
        name:
          type: string
          title: Name
          description: Nome do modelo, usado para identificá-lo no envio.
          examples:
            - order_shipped_promo
        language:
          type: string
          title: Language
          description: >-
            Idioma do pivot resolvido (idioma padrão do modelo), como código da
            Meta: es, en, pt_BR.
          examples:
            - es
            - pt_BR
        variables:
          items:
            $ref: '#/components/schemas/TemplateVariableResponse'
          type: array
          title: Variables
          description: Inventário agnóstico das variáveis deste modelo.
        driftWarning:
          $ref: '#/components/schemas/TemplateDriftWarningResponse'
          title: Drift warning
          description: >-
            Diferença entre declaração e snapshot, apenas para diagnóstico.
            Nunca bloqueia um envio.
      type: object
      required:
        - id
        - name
        - language
        - driftWarning
      title: TemplateDiscoveryResponse
      description: >-
        Inventário agnóstico das variáveis de um modelo para um cliente que deve
        enviá-lo sem conhecer o modelo da Meta.
      examples:
        - id: f0000040-0000-4000-8000-000000000040
          language: es
          name: order_shipped_promo
          driftWarning:
            hasDrift: false
            stale: []
            missingLabels: []
          variables:
            - callerMustSupply: false
              key: first_name
              label: Contact first name
            - callerMustSupply: false
              key: order_code
              label: Order code
            - callerMustSupply: false
              key: shipment_id
              label: Shipment ID
            - callerMustSupply: true
              key: promo_code
              label: Promo code
    Problem:
      properties:
        title:
          type: string
          title: Title
          description: Resumo breve do tipo de problema.
        status:
          type: integer
          title: Status
          description: >-
            Código de status HTTP gerado pelo servidor de origem para esta
            ocorrência do problema.
        detail:
          anyOf:
            - type: string
            - type: 'null'
          title: Detail
          description: Explicação específica desta ocorrência do problema.
        instance:
          anyOf:
            - type: string
            - type: 'null'
          title: Instance
          description: Referência URI que identifica esta ocorrência do problema.
        traceId:
          anyOf:
            - type: string
            - type: 'null'
          title: Traceid
          description: ID de rastreamento para depuração.
        code:
          anyOf:
            - type: string
            - type: 'null'
          title: Code
          description: >-
            Código para identificar o erro; consulte a página de códigos de erro
            para mais detalhes.
        errors:
          anyOf:
            - items:
                additionalProperties: true
                type: object
              type: array
            - type: 'null'
          title: Errors
          description: Lista de detalhes dos erros.
        extra:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Extra
          description: Informações adicionais sobre o problema.
      type: object
      required:
        - title
        - status
      title: Problem
      description: Objeto que representa o corpo de uma resposta Problem.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    TemplateVariableResponse:
      properties:
        key:
          type: string
          title: Key
          description: Identificador agnóstico desta variável, estável entre provedores.
          examples:
            - tracking_code
        label:
          type: string
          title: Label
          description: Rótulo legível desta variável.
          examples:
            - Tracking code
        callerMustSupply:
          type: boolean
          title: Caller must supply
          description: >-
            Indica se o cliente deve fornecer um valor para esta variável ao
            enviar o modelo: true quando o modelo não tem uma origem declarada
            para o valor (por exemplo, um código promocional conhecido apenas
            pelo cliente) e false quando o Bridge o resolve por conta própria
            (por exemplo, a partir do perfil do destinatário).
          examples:
            - true
            - false
        isCustom:
          type: boolean
          title: Is custom
          description: >-
            Indica se é uma variável personalizada: um valor conhecido apenas
            pelo cliente e que tem um texto padrão. O cliente pode enviá-lo em
            `parameters`; quando omitido ou enviado em branco, usa-se `default`.
          default: false
          examples:
            - true
            - false
        default:
          anyOf:
            - type: string
            - type: 'null'
          title: Default
          description: >-
            Para uma variável personalizada, o texto enviado quando quem chama
            não fornece um valor; nos demais casos, null.
          examples:
            - pending
            - null
      type: object
      required:
        - key
        - label
        - callerMustSupply
      title: TemplateVariableResponse
      description: >-
        Variável de modelo identificada por sua chave agnóstica; um endereço de
        slot da Meta nunca aparece aqui.
      examples:
        - callerMustSupply: false
          isCustom: false
          key: first_name
          label: Contact first name
        - callerMustSupply: false
          default: pending
          isCustom: true
          key: tracking_code
          label: Tracking code
        - callerMustSupply: true
          isCustom: false
          key: promo_code
          label: Promo code
    TemplateDriftWarningResponse:
      properties:
        hasDrift:
          type: boolean
          title: Has drift
        stale:
          items:
            $ref: '#/components/schemas/TemplateVariableRef'
          type: array
          title: Stale
          description: Declarado, mas não mais exigido pelo snapshot.
        missingLabels:
          items:
            $ref: '#/components/schemas/TemplateVariableRef'
          type: array
          title: Missing labels
          description: Exigido pelo snapshot, mas ainda não declarado.
      type: object
      required:
        - hasDrift
      title: TemplateDriftWarningResponse
      description: >-
        Diferença, apenas para diagnóstico, entre as variáveis declaradas e o
        que o snapshot da Meta exige.


        Conforme a regra de autoridade, isso nunca afeta o sucesso de um envio:
        apenas o snapshot determina o resultado. Permite que o cliente ou o
        console identifique um modelo cujos rótulos precisam ser atualizados
        após uma edição feita diretamente no WhatsApp Manager.
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
    TemplateVariableRef:
      properties:
        key:
          type: string
          title: Key
          examples:
            - delivery_date
        label:
          type: string
          title: Label
          examples:
            - Delivery date
      type: object
      required:
        - key
        - label
      title: TemplateVariableRef
      description: >-
        Slot identificado apenas por sua chave e rótulo agnósticos, sem endereço
        de slot da Meta.
  securitySchemes:
    x-api-key:
      type: apiKey
      description: Copy the API key as provided by the Bridge Console.
      in: header
      name: x-api-key

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.