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

# Get a Contact

> Read a contact by UUID, including typed attributes, external identities, and current phone consent.

Use the `contact.id` UUID returned by [contact upsert](/api-reference/contacts/upsert-contact).

The response contains the contact's name, email, phone number, attributes, derived attributes, external identities, and consent records in `consents`. Consent entries apply to the current phone number and identify the source that recorded each decision. Missing, deleted, and other-organization contacts return `404`.

To find a contact using your own system's ID, use [List Contacts](/api-reference/contacts/list-contacts) with `sourceKey` and `externalId`.


## OpenAPI

````yaml GET /contacts/{contactId}
openapi: 3.1.0
info:
  title: Public API v1
  description: >-
    Public API v1 requiring API keys.


    **Timestamps:** All datetime fields in API responses are returned in UTC
    using ISO 8601 format (e.g., `2024-01-15T14:30:00Z`). When filtering by date
    parameters, provide timestamps in ISO 8601 format.
  version: 0.1.0
servers:
  - url: https://api.usesimple.ai/api/v1
    description: Production API Server
security: []
paths:
  /contacts/{contactId}:
    get:
      tags:
        - Contacts
      summary: Get Contact
      description: >-
        Read an active contact by UUID within the authenticated organization,
        including attributes, external identities, and consent records.
      operationId: get_contact_by_uuid
      parameters:
        - name: contactId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Get Contact
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SyncedContact'
        '401':
          description: Authentication failed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiError'
        '404':
          description: Contact missing, deleted, or outside the authenticated organization.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiError'
        '422':
          description: The request or an attribute value is invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiError'
      security:
        - APIKeyHeader: []
components:
  schemas:
    SyncedContact:
      type: object
      required:
        - id
        - name
        - email
        - phoneNumber
        - attributes
        - derivedAttributes
        - externalIdentities
        - consents
        - isTest
      properties:
        id:
          type: string
          format: uuid
        name:
          anyOf:
            - type: string
            - type: 'null'
        email:
          anyOf:
            - type: string
              format: email
            - type: 'null'
        phoneNumber:
          anyOf:
            - type: string
            - type: 'null'
        isTest:
          type: boolean
          description: >-
            True for contacts created as dashboard test identities. Test
            contacts never merge with production contacts.
        attributes:
          type: object
          additionalProperties:
            anyOf:
              - type: string
              - type: number
              - type: boolean
              - type: 'null'
        derivedAttributes:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/DerivedContactAttribute'
        externalIdentities:
          type: array
          items:
            $ref: '#/components/schemas/ContactExternalIdentity'
        consents:
          type: array
          items:
            $ref: '#/components/schemas/ContactConsentRecord'
          description: >-
            Consent records by source for the current phone number. Empty for
            contacts without a phone number.
      title: Synced Contact
    PublicApiError:
      type: object
      required:
        - status
        - success
        - error
        - errors
      properties:
        status:
          type: string
          const: error
        success:
          type: boolean
          const: false
        error:
          type: string
        errors:
          type: array
          items:
            type: string
      title: Public API Error
    DerivedContactAttribute:
      type: object
      required:
        - value
        - status
        - confidence
        - evaluatedAt
      properties:
        value:
          anyOf:
            - type: string
            - type: number
            - type: boolean
            - type: 'null'
        status:
          type: string
          enum:
            - ready
            - pending
            - stale
            - failed
        confidence:
          anyOf:
            - type: number
            - type: 'null'
        evaluatedAt:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
      title: Derived Contact Attribute
    ContactExternalIdentity:
      type: object
      required:
        - sourceKey
        - externalId
      properties:
        sourceKey:
          type: string
        externalId:
          type: string
      title: Contact External Identity
    ContactConsentRecord:
      type: object
      required:
        - phoneNumber
        - sourceKey
        - medium
        - category
        - status
        - observedAt
      properties:
        phoneNumber:
          type: string
        sourceKey:
          anyOf:
            - type: string
            - type: 'null'
          description: Null identifies a decision recorded by Simple.
        medium:
          type: string
          enum:
            - voice
            - text
        category:
          type: string
          enum:
            - all
            - transactional
            - marketing
        status:
          type: string
          enum:
            - opted_in
            - opted_out
            - not_opted_out
            - unknown
          description: >-
            Any opted_out record blocks the matching communication.
            not_opted_out does not grant affirmative consent.
        observedAt:
          type: string
          format: date-time
  securitySchemes:
    APIKeyHeader:
      type: http
      scheme: bearer
      description: 'Your API key, sent as `Authorization: Bearer YOUR_API_KEY`'

````

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