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

# Get contact import

> Get the progress and results of a contact import



## OpenAPI

````yaml /developers/openapi.yaml get /v1/contacts/imports/{import_id}
openapi: 3.0.3
info:
  title: TalkToHumans Public API
  version: 1.0.0
  license:
    name: Proprietary
  description: >
    Read and organize the LinkedIn organization data your team already manages
    in TalkToHumans: accounts, contacts, tags, notes, sequence state,
    conversations, templates, and views.
servers:
  - url: https://api.talktohumans.app
    description: TalkToHumans API
security:
  - bearerAuth: []
tags:
  - name: Organization
    description: Organization details for the current API key.
  - name: LinkedIn
    description: LinkedIn accounts, contacts, companies, and conversations.
  - name: Activity
    description: Activity for organization reporting.
  - name: Enrich
    description: Profile enrichment for LinkedIn contacts and companies.
  - name: Views
    description: Saved TalkToHumans views.
  - name: Templates
    description: Message and sequence templates.
paths:
  /v1/contacts/imports/{import_id}:
    get:
      tags:
        - LinkedIn
      summary: Get contact import
      description: Get the progress and results of a contact import
      operationId: getContactImport
      parameters:
        - name: import_id
          in: path
          required: true
          description: Import ID returned by `POST /v1/contacts`.
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Import progress and per-profile results.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContactImportEnvelope'
              example:
                data:
                  import:
                    import_id: 3f6c1a2e-8d4b-4c5a-9e7f-1b2d3c4e5f60
                    status: completed
                    account:
                      account_id: '42'
                      display_name: Jane Doe
                      provider_account_id: ACoAA000000
                      owner_user_id: '7'
                    counts:
                      total: 3
                      pending: 0
                      imported: 1
                      already_present: 1
                      failed: 1
                    results:
                      - linkedin_url: https://www.linkedin.com/in/jane-doe/
                        status: imported
                        contact_id: '123'
                      - linkedin_url: https://www.linkedin.com/in/john-smith/
                        status: already_present
                        contact_id: '456'
                      - linkedin_url: https://www.linkedin.com/in/private-profile/
                        status: failed
                        error:
                          code: linkedin_profile_not_found
                          message: LinkedIn profile not found or not publicly available
                    warnings: []
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/AccountScopedForbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/InternalServerError'
components:
  schemas:
    ContactImportEnvelope:
      type: object
      additionalProperties: false
      required:
        - data
      properties:
        data:
          $ref: '#/components/schemas/ContactImportResponse'
    ContactImportResponse:
      type: object
      additionalProperties: false
      required:
        - import
      properties:
        import:
          $ref: '#/components/schemas/ContactImport'
    Error:
      type: object
      additionalProperties: false
      required:
        - code
        - message
      properties:
        code:
          type: string
          description: Machine-readable error code.
          enum:
            - unauthorized
            - forbidden
            - not_found
            - bad_request
            - internal_error
            - conflict
            - rate_limit_exceeded
            - account_shared_access_required
            - billing_payment_failed
            - billing_subscription_incomplete
            - billing_subscription_expired
            - billing_grace_period
            - billing_feature_not_available
            - billing_insufficient_credits
            - billing_invalid
            - enrichment_failed
            - enrichment_in_progress
            - linkedin_profile_not_found
        message:
          type: string
          description: Human-readable error message.
        debug:
          type: string
          description: Development-only debug details.
    ContactImport:
      type: object
      additionalProperties: false
      required:
        - import_id
        - status
        - account
        - counts
        - results
        - warnings
      properties:
        import_id:
          type: string
          format: uuid
          description: >-
            Import ID. Pass to `GET /v1/contacts/imports/{import_id}` to check
            progress.
        status:
          type: string
          description: '`running` while any profile is pending, then `completed`.'
          enum:
            - running
            - completed
        account:
          $ref: '#/components/schemas/AccountSummary'
        counts:
          $ref: '#/components/schemas/ContactImportCounts'
        results:
          type: array
          description: One result per unique LinkedIn URL, in request order.
          items:
            $ref: '#/components/schemas/ContactImportResult'
        warnings:
          type: array
          description: >-
            Non-blocking warnings about stale LinkedIn sync state. Per-profile
            failures appear in `results`.
          items:
            $ref: '#/components/schemas/LinkedInWarning'
    AccountSummary:
      type: object
      additionalProperties: false
      required:
        - account_id
        - display_name
        - provider_account_id
        - owner_user_id
      properties:
        account_id:
          type: string
          description: TalkToHumans account ID.
        display_name:
          type: string
        provider_account_id:
          type: string
          description: LinkedIn provider account ID.
        owner_user_id:
          type: string
          description: TalkToHumans user ID that owns the account.
    ContactImportCounts:
      type: object
      additionalProperties: false
      required:
        - total
        - pending
        - imported
        - already_present
        - failed
      properties:
        total:
          type: integer
        pending:
          type: integer
        imported:
          type: integer
        already_present:
          type: integer
        failed:
          type: integer
    ContactImportResult:
      type: object
      additionalProperties: false
      required:
        - linkedin_url
        - status
      properties:
        linkedin_url:
          type: string
          description: LinkedIn profile URL as submitted.
        status:
          type: string
          description: >
            `imported` when the contact was attached to the LinkedIn account for
            the first time, `already_present` when it was already attached, and
            `failed` when it could not be imported.
          enum:
            - pending
            - imported
            - already_present
            - failed
        contact_id:
          type: string
          description: >-
            TalkToHumans contact ID, present when `status` is `imported` or
            `already_present`.
        error:
          $ref: '#/components/schemas/ContactImportError'
    LinkedInWarning:
      type: object
      additionalProperties: false
      required:
        - code
        - account_id
        - message
      properties:
        code:
          type: string
          enum:
            - linkedin_sync_required
        account_id:
          type: string
          description: LinkedIn account ID associated with the warning.
        message:
          type: string
          enum:
            - >-
              For security, TalkToHumans does not run LinkedIn actions or sync
              LinkedIn data in the cloud. Open TalkToHumans with this LinkedIn
              account connected to refresh its data before relying on it or
              running actions.
    ContactImportError:
      type: object
      additionalProperties: false
      description: Failure reason, present when `status` is `failed`.
      required:
        - code
        - message
      properties:
        code:
          type: string
          description: >-
            Machine-readable error code, such as `linkedin_profile_not_found`,
            `enrichment_failed`, or `billing_insufficient_credits`.
        message:
          type: string
          description: Human-readable error message.
  responses:
    Unauthorized:
      description: Missing, malformed, invalid, or retired local API key.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            missingAuthorization:
              value:
                code: unauthorized
                message: Authorization header is required
            invalidAuthorizationFormat:
              value:
                code: unauthorized
                message: Authorization header must use Bearer scheme
            invalidAPIKey:
              value:
                code: unauthorized
                message: Invalid API key
    AccountScopedForbidden:
      description: >-
        API access is not enabled for the organization, the API key cannot
        resolve to an active organization user, or the credential cannot access
        the requested LinkedIn account.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            accountSharedAccessRequired:
              summary: Requested account is not accessible to this credential
              value:
                code: account_shared_access_required
                message: >-
                  This account is not shared-access enabled for API or MCP. Ask
                  an admin to enable shared access before using this account
                  from this credential.
            forbidden:
              value:
                code: forbidden
                message: you don't have access to this organization
            featureUnavailable:
              value:
                code: billing_feature_not_available
                message: >-
                  Feature 'TalkToHumansAPI' is not available in your current
                  plan
            insufficientCredits:
              value:
                code: billing_insufficient_credits
                message: Insufficient credits
            apiKeyPrincipalInvalid:
              value:
                code: forbidden
                message: >-
                  This API key is no longer linked to an active organization
                  user. Ask an organization admin to regenerate it
    NotFound:
      description: Requested resource was not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            code: not_found
            message: participant not found
    RateLimited:
      description: >-
        Rate limit exceeded. Public routes allow 50 requests per 10 seconds per
        IP and endpoint.
      headers:
        Retry-After:
          description: Seconds to wait before retrying the request.
          schema:
            type: integer
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            code: rate_limit_exceeded
            message: Rate limit exceeded
    InternalServerError:
      description: Unexpected server error.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            code: internal_error
            message: An internal error occurred
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: 'Pass API key as `Authorization: Bearer <api_key>`.'

````

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