> ## 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.

# Crear contacto

> Crea un contacto en el workspace indicado.



## OpenAPI

````yaml /es/api-reference/openapi.yaml post /bridge/api/v1/workspaces/{workspaceId}/contacts
openapi: 3.1.0
info:
  title: Bridge API
  summary: Especificación de la API de Bridge para gestionar el sistema de chat.
  description: >-
    Especificación de la API REST de integraciones de Bridge para gestionar
    contactos, conversaciones, mensajes, archivos, atributos personalizados,
    canales de proveedores, plantillas, usuarios internos y Agents.


    Los webhooks se documentan por separado en
    https://docs.bridge.new/es/webhooks; este OpenAPI contiene únicamente
    endpoints REST.


    **Arquitectura multiempresa**: las operaciones sobre recursos se limitan a
    un workspace específico mediante workspaceId. La comprobación de estado no
    incluye un workspace en su ruta.
  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 producción
security: []
paths:
  /bridge/api/v1/workspaces/{workspaceId}/contacts:
    post:
      tags:
        - Contacts API
      summary: Crear contacto
      description: Crea un contacto en el workspace indicado.
      operationId: create_contact_bridge_api_v1_workspaces__workspaceId__contacts_post
      parameters:
        - name: workspaceId
          in: path
          required: true
          schema:
            type: string
            format: uuid
            description: Identificador único del workspace (UUID v4).
            examples:
              - b6cf1c4a-2b1e-4e63-8f3e-0f9d1a2a1234
            title: Workspaceid
          description: Identificador único del workspace (UUID v4).
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateContactBody'
              description: Cuerpo de la solicitud para crear un contacto.
      responses:
        '201':
          description: Respuesta satisfactoria
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContactResponse'
        '403':
          description: Acceso prohibido
          content:
            application/json:
              examples:
                FORBIDDEN:
                  value:
                    title: Forbidden
                    status: 403
                    code: BRIDGE_CORE_0301
              schema:
                $ref: '#/components/schemas/Problem'
        '404':
          description: No encontrado
          content:
            application/json:
              examples:
                WORKSPACE_NOT_FOUND:
                  value:
                    title: Workspace Not Found
                    status: 404
                    code: BRIDGE_WORKSPACE_0001
                INTERNAL_USER_NOT_FOUND:
                  value:
                    title: Internal User Not Found
                    status: 404
                    code: BRIDGE_INTERNAL_0001
              schema:
                $ref: '#/components/schemas/Problem'
        '409':
          description: Conflicto
          content:
            application/json:
              examples:
                EMAIL_OWNED_BY_ANOTHER_CONTACT:
                  value:
                    title: Email Owned By Another Contact
                    status: 409
                    code: BRIDGE_EXTERNAL_0013
                CELLPHONE_OWNED_BY_ANOTHER_CONTACT:
                  value:
                    title: Cellphone Owned By Another Contact
                    status: 409
                    code: BRIDGE_EXTERNAL_0007
              schema:
                $ref: '#/components/schemas/Problem'
        '422':
          description: Error de validación
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
        '429':
          description: Demasiadas solicitudes
          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:
    CreateContactBody:
      properties:
        firstName:
          type: string
          title: First Name
          description: Nombre del contacto.
          examples:
            - John
            - Alice
        lastName:
          type: string
          title: Last Name
          description: Apellido del contacto.
          examples:
            - Doe
        email:
          anyOf:
            - type: string
              format: email
            - type: 'null'
          title: Email
          description: Correo electrónico del contacto.
          examples:
            - john.doe@example.com
            - null
        languageCode:
          $ref: '#/components/schemas/LanguageCode'
          title: Language Code
          description: Código de idioma del contacto.
          examples:
            - EN
        cellphone:
          type: string
          title: Cellphone
          description: >-
            Número de celular del contacto. Si no incluye código de país, se
            interpreta según el país del workspace.
          examples:
            - '+14084029292'
        ownerIdentifier:
          anyOf:
            - $ref: '#/components/schemas/InternalUserIdentifierRequest'
            - type: 'null'
          title: Owner Identifier
          description: Identificador del vendedor o usuario propietario del contacto.
        customAttributes:
          $ref: '#/components/schemas/CustomAttributesBody'
          title: Custom Attributes
          description: Objeto con atributos personalizados abiertos y cerrados.
      additionalProperties: false
      type: object
      required:
        - firstName
        - lastName
        - languageCode
        - cellphone
      title: CreateContactBody
      description: Cuerpo de la solicitud para crear un contacto.
    ContactResponse:
      properties:
        id:
          type: string
          title: Identifier
          description: Identificador único del contacto (UUID v4).
          examples:
            - b6cf1c4a-2b1e-4e63-8f3e-0f9d1a2a1234
        workspaceId:
          type: string
          title: Workspace Identifier
          description: Identificador único del workspace al que pertenece este contacto
          examples:
            - 92b2d4f3-81e1-4b61-a7ec-6f4ff3b58be5
        type:
          $ref: '#/components/schemas/ExternalUserType'
          title: Contact Type
          description: >-
            NORMAL cuando están presentes todos los campos obligatorios de
            identidad y atributos personalizados; PARTIAL en caso contrario.
          examples:
            - NORMAL
            - PARTIAL
        firstName:
          anyOf:
            - type: string
            - type: 'null'
          title: First Name
          description: Nombre del contacto.
          examples:
            - John
            - null
        lastName:
          anyOf:
            - type: string
            - type: 'null'
          title: Last Name
          description: Apellido del contacto.
          examples:
            - Doe
            - null
        email:
          anyOf:
            - type: string
              format: email
            - type: 'null'
          title: Email
          description: Correo electrónico del contacto.
          examples:
            - john.doe@example.com
            - null
        cellphone:
          anyOf:
            - type: string
              format: phone
            - type: 'null'
          title: Cellphone
          description: Número de celular del contacto.
          examples:
            - '+14084029292'
            - null
        customAttributes:
          items:
            $ref: '#/components/schemas/CustomAttributeResponse'
          type: array
          title: Custom Attributes
          description: Lista de atributos personalizados de clave y valor.
        languageCode:
          anyOf:
            - $ref: '#/components/schemas/LanguageCode'
            - type: 'null'
          title: Language Code
          description: Código de idioma del usuario externo.
          examples:
            - EN
            - null
        ownerId:
          anyOf:
            - type: string
            - type: 'null'
          title: Owner Identifier
          description: >-
            ID del Bridge User propietario del contacto. Resuélvelo con `GET
            /users/{userId}`.
          examples:
            - 37673840-6259-40f9-bbe5-a7db40f8e3cf
            - null
        createdAt:
          type: string
          title: Created At
          description: Fecha y hora de creación del contacto.
          examples:
            - '2003-04-10T08:00:00.000Z'
        updatedAt:
          type: string
          title: Updated At
          description: Fecha y hora de la última actualización del contacto.
          examples:
            - '2003-04-10T08:00:00.000Z'
      type: object
      required:
        - id
        - workspaceId
        - type
        - createdAt
        - updatedAt
      title: ContactResponse
      description: Cuerpo de respuesta para operaciones con contactos.
    Problem:
      properties:
        title:
          type: string
          title: Title
          description: Resumen breve del tipo de problema.
        status:
          type: integer
          title: Status
          description: >-
            Código de estado HTTP generado por el servidor de origen para esta
            instancia del problema.
        detail:
          anyOf:
            - type: string
            - type: 'null'
          title: Detail
          description: Explicación específica de esta instancia del problema.
        instance:
          anyOf:
            - type: string
            - type: 'null'
          title: Instance
          description: Referencia URI que identifica esta instancia del problema.
        traceId:
          anyOf:
            - type: string
            - type: 'null'
          title: Traceid
          description: ID de seguimiento para depuración.
        code:
          anyOf:
            - type: string
            - type: 'null'
          title: Code
          description: >-
            Código para identificar el error; consulta la página de códigos de
            error para más detalles.
        errors:
          anyOf:
            - items:
                additionalProperties: true
                type: object
              type: array
            - type: 'null'
          title: Errors
          description: Lista de detalles de errores.
        extra:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Extra
          description: Información adicional sobre el problema.
      type: object
      required:
        - title
        - status
      title: Problem
      description: Objeto que representa el cuerpo de una respuesta Problem.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    LanguageCode:
      type: string
      enum:
        - ES
        - EN
        - AF
        - SQ
        - AR
        - AZ
        - BN
        - BG
        - CA
        - ZH_CN
        - HR
        - CS
        - DA
        - NL
        - ET
        - FIL
        - FI
        - FR
        - KA
        - DE
        - EL
        - GU
        - HA
        - HE
        - HI
        - HU
        - ID
        - GA
        - IT
        - JA
        - KN
        - KK
        - RW_RW
        - KO
        - KY_KG
        - LO
        - LV
        - LT
        - MK
        - MS
        - ML
        - MR
        - NB
        - FA
        - PL
        - PT_BR
        - PA
        - RO
        - RU
        - SR
        - SK
        - SL
        - SW
        - SV
        - TA
        - TE
        - TH
        - TR
        - UK
        - UR
        - UZ
        - VI
        - ZU
      title: LanguageCode
    InternalUserIdentifierRequest:
      properties:
        identifier:
          type: string
          title: Identifier
          description: Valor del identificador del usuario.
          examples:
            - john.doe@example.com
            - '+13802098869'
            - 37673840-6259-40f9-bbe5-a7db40f8e3cf
        identifierType:
          $ref: '#/components/schemas/InternalParticipantIdentifierType'
          title: Identifier Type
          description: Tipo de identificador de usuarios internos (ID o EMAIL).
          examples:
            - EMAIL
            - ID
      type: object
      required:
        - identifier
        - identifierType
      title: InternalUserIdentifierRequest
      description: Cuerpo para identificar a un usuario interno en Bridge.
    CustomAttributesBody:
      properties:
        openAttributes:
          anyOf:
            - items:
                $ref: '#/components/schemas/OpenAttributeRequest'
              type: array
            - type: 'null'
          title: Open Attributes
          description: Lista de atributos abiertos.
        closedAttributes:
          anyOf:
            - items:
                $ref: '#/components/schemas/ClosedAttributeRequest'
              type: array
            - type: 'null'
          title: Closed Attributes
          description: Lista de atributos cerrados.
      type: object
      title: CustomAttributesBody
      description: Cuerpo de la solicitud para operaciones de atributos personalizados.
    ExternalUserType:
      type: string
      enum:
        - PARTIAL
        - NORMAL
      title: ExternalUserType
    CustomAttributeResponse:
      properties:
        key:
          type: string
          title: Key
          description: Clave o nombre del atributo
        values:
          items:
            type: string
          type: array
          title: Values
          description: Valor del atributo
      type: object
      required:
        - key
      title: CustomAttributeResponse
      description: >-
        Cuerpo de respuesta para atributos personalizados en operaciones con
        contactos.
    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
    InternalParticipantIdentifierType:
      type: string
      enum:
        - ID
        - EMAIL
      title: InternalParticipantIdentifierType
    OpenAttributeRequest:
      properties:
        customAttributeId:
          type: string
          title: Custom Attribute Identifier
          description: Identificador único del atributo personalizado abierto.
          examples:
            - 651c97c1-b31d-466f-825c-fe77b39e7ae6
        content:
          type: string
          title: Content
          description: Valor del atributo abierto.
      type: object
      required:
        - customAttributeId
        - content
      title: OpenAttributeRequest
      description: >-
        Cuerpo de la solicitud para operaciones de atributos personalizados
        abiertos.
    ClosedAttributeRequest:
      properties:
        customAttributeId:
          type: string
          title: Custom Attribute Identifier
          description: Identificador único del atributo personalizado cerrado.
          examples:
            - 651c97c1-b31d-466f-825c-fe77b39e7ae6
        closedCustomAttributeIds:
          items:
            type: string
          type: array
          title: Closed Custom Attribute Identifiers
          description: Lista de identificadores únicos de valores de atributos cerrados.
          examples:
            - - 62de01f0-fd48-467c-9c35-18647c51532a
              - 6faf42bb-7d7b-44bd-9e79-5de6fd491134
      type: object
      required:
        - customAttributeId
        - closedCustomAttributeIds
      title: ClosedAttributeRequest
      description: >-
        Cuerpo de la solicitud para operaciones de atributos personalizados
        cerrados.
  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.