OpenPhone Contacts API

Operations related to contacts

OpenAPI Specification

openphone-contacts-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Quo Public Calls Contacts API
  version: 1.0.0
  description: API for connecting with Quo.
  contact:
    name: Quo Support
    email: support@quo.com
    url: https://support.quo.com/
  termsOfService: https://www.quo.com/terms
servers:
- description: Production server
  url: https://api.quo.com
security:
- apiKey: []
tags:
- description: Operations related to contacts
  name: Contacts
paths:
  /contacts:
    get:
      tags:
      - Contacts
      summary: List contacts
      description: Get a paginated list of contacts.
      operationId: listContacts
      parameters:
      - in: query
        name: externalIds
        required: false
        schema:
          anyOf:
          - description: Filter by external IDs
            maxItems: 50
            type: array
            items:
              type: string
          - type: 'null'
      - in: query
        name: sources
        required: false
        schema:
          anyOf:
          - description: Filter by source labels
            maxItems: 50
            type: array
            items:
              type: string
          - type: 'null'
      - in: query
        name: limit
        required: false
        schema:
          anyOf:
          - minimum: 1
            maximum: 50
            default: 10
            description: Page size
            type: integer
          - type: 'null'
      - in: query
        name: after
        required: false
        schema:
          anyOf:
          - examples:
            - eyJsYXN0SWQiOiJVU211a09NaXBhIn0
            type: string
          - type: 'null'
      - in: header
        name: Quo-Api-Version
        required: true
        schema:
          type: string
          enum:
          - '2026-03-30'
          description: 'API version header. Supported values: 2026-03-30'
      security:
      - apiKey: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - data
                - nextCursor
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      required:
                      - id
                      - createdAt
                      - updatedAt
                      - actorId
                      properties:
                        id:
                          description: The ID of the contact.
                          examples:
                          - 6a145ff26212a192852c856e
                          pattern: ^(.*)$
                          type: string
                          example: 6a145ff26212a192852c856e
                        externalId:
                          anyOf:
                          - description: The external ID of the contact.
                            examples:
                            - '1234567890'
                            type: string
                            example: '1234567890'
                          - type: 'null'
                        source:
                          anyOf:
                          - description: The source of the contact.
                            examples:
                            - public-api
                            type: string
                            example: public-api
                          - type: 'null'
                        sourceUrl:
                          anyOf:
                          - description: A link to the contact in the source system.
                            format: uri
                            examples:
                            - https://example.com/contacts/001
                            minLength: 1
                            maxLength: 200
                            type: string
                            example: https://example.com/contacts/001
                          - type: 'null'
                        firstName:
                          anyOf:
                          - description: The first name of the contact.
                            examples:
                            - John
                            type: string
                            example: John
                          - type: 'null'
                        lastName:
                          anyOf:
                          - description: The last name of the contact.
                            examples:
                            - Doe
                            type: string
                            example: Doe
                          - type: 'null'
                        company:
                          anyOf:
                          - description: The company of the contact.
                            examples:
                            - Quo
                            type: string
                            example: Quo
                          - type: 'null'
                        role:
                          anyOf:
                          - description: The role of the contact.
                            examples:
                            - admin
                            type: string
                            example: admin
                          - type: 'null'
                        createdAt:
                          description: The timestamp of the contact creation.
                          examples:
                          - '2021-01-01T00:00:00Z'
                          format: date-time
                          type: string
                          example: '2021-01-01T00:00:00Z'
                        updatedAt:
                          description: The timestamp of the contact update.
                          examples:
                          - '2021-01-01T00:00:00Z'
                          format: date-time
                          type: string
                          example: '2021-01-01T00:00:00Z'
                        actorId:
                          description: The actor ID of the contact.
                          examples:
                          - US123abc
                          example: US123abc
                          anyOf:
                          - pattern: ^US(.*)$
                            type: string
                          - pattern: ^SYU(.*)$
                            type: string
                  nextCursor:
                    description: Cursor for the next page, or null when there are no more pages.
                    examples:
                    - eyJsYXN0SWQiOiJVU211a09NaXBhIn0
                    example: eyJsYXN0SWQiOiJVU211a09NaXBhIn0
                    anyOf:
                    - type: string
                    - type: 'null'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - message
                - docs
                - title
                properties:
                  message:
                    type: string
                  docs:
                    const: https://quo.com/docs
                    type: string
                  title:
                    const: Bad Request
                    type: string
                  trace:
                    type: string
                  errors:
                    type: array
                    items:
                      type: object
                      required:
                      - path
                      - message
                      - schema
                      properties:
                        path:
                          type: string
                        message:
                          type: string
                        value: {}
                        schema:
                          type: object
                          required:
                          - type
                          properties:
                            type:
                              type: string
              example:
                message: The input was invalid
                docs: https://quo.com/docs
                title: Bad Request
                trace: '6897907457496870895'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                required:
                - message
                - docs
                - title
                properties:
                  message:
                    type: string
                  docs:
                    const: https://quo.com/docs
                    type: string
                  title:
                    const: Unauthorized
                    type: string
                  trace:
                    type: string
                  errors:
                    type: array
                    items:
                      type: object
                      required:
                      - path
                      - message
                      - schema
                      properties:
                        path:
                          type: string
                        message:
                          type: string
                        value: {}
                        schema:
                          type: object
                          required:
                          - type
                          properties:
                            type:
                              type: string
              example:
                message: The contact was not found
                docs: https://quo.com/docs
                title: Not Found
                trace: '6897907457496870895'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                type: object
                required:
                - message
                - docs
                - title
                properties:
                  message:
                    type: string
                  docs:
                    const: https://quo.com/docs
                    type: string
                  title:
                    const: Forbidden
                    type: string
                  trace:
                    type: string
                  errors:
                    type: array
                    items:
                      type: object
                      required:
                      - path
                      - message
                      - schema
                      properties:
                        path:
                          type: string
                        message:
                          type: string
                        value: {}
                        schema:
                          type: object
                          required:
                          - type
                          properties:
                            type:
                              type: string
              example:
                message: User is forbidden to perform this action
                docs: https://quo.com/docs
                title: Forbidden
                trace: '6897907457496870895'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - message
                - docs
                - title
                properties:
                  message:
                    type: string
                  docs:
                    const: https://quo.com/docs
                    type: string
                  title:
                    const: Not Found
                    type: string
                  trace:
                    type: string
                  errors:
                    type: array
                    items:
                      type: object
                      required:
                      - path
                      - message
                      - schema
                      properties:
                        path:
                          type: string
                        message:
                          type: string
                        value: {}
                        schema:
                          type: object
                          required:
                          - type
                          properties:
                            type:
                              type: string
              example:
                message: User is unauthorized to perform this action
                docs: https://quo.com/docs
                title: Unauthorized
                trace: '6897907457496870895'
        '500':
          description: Unknown Error
          content:
            application/json:
              schema:
                type: object
                required:
                - message
                - docs
                - title
                properties:
                  message:
                    type: string
                  docs:
                    const: https://quo.com/docs
                    type: string
                  title:
                    const: Unknown
                    type: string
                  trace:
                    type: string
                  errors:
                    type: array
                    items:
                      type: object
                      required:
                      - path
                      - message
                      - schema
                      properties:
                        path:
                          type: string
                        message:
                          type: string
                        value: {}
                        schema:
                          type: object
                          required:
                          - type
                          properties:
                            type:
                              type: string
              example:
                message: An unknown error has occurred
                docs: https://quo.com/docs
                title: Unknown Error
                trace: '6897907457496870895'
  /contacts/{contactId}:
    get:
      tags:
      - Contacts
      summary: Get a contact by ID
      description: Retrieve detailed information about a specific contact in your Quo workspace using the contact's unique identifier.
      operationId: getContactById
      parameters:
      - in: path
        name: contactId
        required: true
        schema:
          description: The unique identifier of the contact being retrieved.
          examples:
          - 6a145ff26212a192852c856e
          pattern: ^(.*)$
          type: string
        example: 6a145ff26212a192852c856e
      - in: header
        name: Quo-Api-Version
        required: true
        schema:
          type: string
          enum:
          - '2026-03-30'
          description: 'API version header. Supported values: 2026-03-30'
      security:
      - apiKey: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - data
                properties:
                  data:
                    type: object
                    required:
                    - id
                    - createdAt
                    - updatedAt
                    - actorId
                    properties:
                      id:
                        description: The ID of the contact.
                        examples:
                        - 6a145ff26212a192852c856e
                        pattern: ^(.*)$
                        type: string
                        example: 6a145ff26212a192852c856e
                      externalId:
                        anyOf:
                        - description: The external ID of the contact.
                          examples:
                          - '1234567890'
                          type: string
                          example: '1234567890'
                        - type: 'null'
                      source:
                        anyOf:
                        - description: The source of the contact.
                          examples:
                          - public-api
                          type: string
                          example: public-api
                        - type: 'null'
                      sourceUrl:
                        anyOf:
                        - description: A link to the contact in the source system.
                          format: uri
                          examples:
                          - https://example.com/contacts/001
                          minLength: 1
                          maxLength: 200
                          type: string
                          example: https://example.com/contacts/001
                        - type: 'null'
                      firstName:
                        anyOf:
                        - description: The first name of the contact.
                          examples:
                          - John
                          type: string
                          example: John
                        - type: 'null'
                      lastName:
                        anyOf:
                        - description: The last name of the contact.
                          examples:
                          - Doe
                          type: string
                          example: Doe
                        - type: 'null'
                      company:
                        anyOf:
                        - description: The company of the contact.
                          examples:
                          - Quo
                          type: string
                          example: Quo
                        - type: 'null'
                      role:
                        anyOf:
                        - description: The role of the contact.
                          examples:
                          - admin
                          type: string
                          example: admin
                        - type: 'null'
                      createdAt:
                        description: The timestamp of the contact creation.
                        examples:
                        - '2021-01-01T00:00:00Z'
                        format: date-time
                        type: string
                        example: '2021-01-01T00:00:00Z'
                      updatedAt:
                        description: The timestamp of the contact update.
                        examples:
                        - '2021-01-01T00:00:00Z'
                        format: date-time
                        type: string
                        example: '2021-01-01T00:00:00Z'
                      actorId:
                        description: The actor ID of the contact.
                        examples:
                        - US123abc
                        example: US123abc
                        anyOf:
                        - pattern: ^US(.*)$
                          type: string
                        - pattern: ^SYU(.*)$
                          type: string
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - message
                - docs
                - title
                properties:
                  message:
                    type: string
                  docs:
                    const: https://quo.com/docs
                    type: string
                  title:
                    const: Bad Request
                    type: string
                  trace:
                    type: string
                  errors:
                    type: array
                    items:
                      type: object
                      required:
                      - path
                      - message
                      - schema
                      properties:
                        path:
                          type: string
                        message:
                          type: string
                        value: {}
                        schema:
                          type: object
                          required:
                          - type
                          properties:
                            type:
                              type: string
              example:
                message: The input was invalid
                docs: https://quo.com/docs
                title: Bad Request
                trace: '6897907457496870895'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                required:
                - message
                - docs
                - title
                properties:
                  message:
                    type: string
                  docs:
                    const: https://quo.com/docs
                    type: string
                  title:
                    const: Unauthorized
                    type: string
                  trace:
                    type: string
                  errors:
                    type: array
                    items:
                      type: object
                      required:
                      - path
                      - message
                      - schema
                      properties:
                        path:
                          type: string
                        message:
                          type: string
                        value: {}
                        schema:
                          type: object
                          required:
                          - type
                          properties:
                            type:
                              type: string
              example:
                message: The contact was not found
                docs: https://quo.com/docs
                title: Not Found
                trace: '6897907457496870895'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                type: object
                required:
                - message
                - docs
                - title
                properties:
                  message:
                    type: string
                  docs:
                    const: https://quo.com/docs
                    type: string
                  title:
                    const: Forbidden
                    type: string
                  trace:
                    type: string
                  errors:
                    type: array
                    items:
                      type: object
                      required:
                      - path
                      - message
                      - schema
                      properties:
                        path:
                          type: string
                        message:
                          type: string
                        value: {}
                        schema:
                          type: object
                          required:
                          - type
                          properties:
                            type:
                              type: string
              example:
                message: User is forbidden to perform this action
                docs: https://quo.com/docs
                title: Forbidden
                trace: '6897907457496870895'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - message
                - docs
                - title
                properties:
                  message:
                    type: string
                  docs:
                    const: https://quo.com/docs
                    type: string
                  title:
                    const: Not Found
                    type: string
                  trace:
                    type: string
                  errors:
                    type: array
                    items:
                      type: object
                      required:
                      - path
                      - message
                      - schema
                      properties:
                        path:
                          type: string
                        message:
                          type: string
                        value: {}
                        schema:
                          type: object
                          required:
                          - type
                          properties:
                            type:
                              type: string
              example:
                message: User is unauthorized to perform this action
                docs: https://quo.com/docs
                title: Unauthorized
                trace: '6897907457496870895'
        '500':
          description: Unknown Error
          content:
            application/json:
              schema:
                type: object
                required:
                - message
                - docs
                - title
                properties:
                  message:
                    type: string
                  docs:
                    const: https://quo.com/docs
                    type: string
                  title:
                    const: Unknown
                    type: string
                  trace:
                    type: string
                  errors:
                    type: array
                    items:
                      type: object
                      required:
                      - path
                      - message
                      - schema
                      properties:
                        path:
                          type: string
                        message:
                          type: string
                        value: {}
                        schema:
                          type: object
                          required:
                          - type
                          properties:
                            type:
                              type: string
              example:
                message: An unknown error has occurred
                docs: https://quo.com/docs
                title: Unknown Error
                trace: '6897907457496870895'
  /v1/contacts:
    post:
      tags:
      - Contacts
      summary: Create a contact
      description: Create a contact for a workspace.
      operationId: createContact_v1
      parameters: []
      security:
      - apiKey: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - defaultFields
              properties:
                defaultFields:
                  type: object
                  required:
                  - firstName
                  properties:
                    company:
                      anyOf:
                      - description: The contact's company name.
                        examples:
                        - Quo
                        type: string
                        example: Quo
                      - type: 'null'
                    emails:
                      type: array
                      items:
                        type: object
                        required:
                        - name
                        - value
                        properties:
                          name:
                            description: The name for the contact's email address.
                            examples:
                            - company email
                            type: string
                            example: company email
                          value:
                            anyOf:
                            - description: The contact's email address.
                              examples:
                              - abc@example.com
                              type: string
                              example: abc@example.com
                            - type: 'null'
                    firstName:
                      anyOf:
                      - description: The contact's first name.
                        examples:
                        - John
                        type: string
                        example: John
                      - type: 'null'
                    lastName:
                      anyOf:
                      - description: The contact's last name.
                        examples:
                        - Doe
                        type: string
                        example: Doe
                      - type: 'null'
                    phoneNumbers:
                      type: array
                      items:
                        type: object
                        required:
                        - name
                        - value
                        properties:
                          name:
                            description: The name of the contact's phone number.
                            examples:
                            - company phone
                            type: string
                            example: company phone
                          value:
                            anyOf:
                            - description: The contact's phone number.
                              examples:
                              - '+12345678901'
                              type: string
                              example: '+12345678901'
                            - type: 'null'
                    role:
                      anyOf:
                      - description: The contact's role.
                        examples:
                        - Sales
                        type: string
                        example: Sales
                      - type: 'null'
                customFields:
                  type: array
                  items:
                    allOf:
                    - type: object
                      properties:
                        key:
                          description: The identifying key for contact custom field.
                          examples:
                          - inbound-lead
                          type: string
                          example: inbound-lead
                    - anyOf:
                      - type: object
                        required:
                        - value
                        properties:
                          value:
                            description: Value defined for the multi select type custom field.
                            examples:
                            - - option1
                              - option2
                            example:
                            - option1
                            - option2
                            anyOf:
                            - type: array
                              items:
                                type: string
                            - type: 'null'
                      - type: object
                        required:
                        - value
                        properties:
                          value:
                            description: Value defined for the address, string, or url type custom field.
                            examples:
                            - 123 Main St
                            example: 123 Main St
                            anyOf:
                            - type: string
                            - type: 'null'
                      - type: object
                        required:
                        - value
                        properties:
                          value:
                            description: Value defined for the boolean type custom field.
                            examples:
                            - 'false'
                            example: 'false'
                            anyOf:
                         

# --- truncated at 32 KB (149 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/openphone/refs/heads/main/openapi/openphone-contacts-api-openapi.yml