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

# List contact imports

> Recent imports for the tenant, newest first, each carrying the same
progress shape as the single-import endpoint so a list row and a detail
view render from one component.



## OpenAPI

````yaml /api/services-api.yaml get /v1/tenants/{tenantID}/contacts/imports
openapi: 3.0.3
info:
  description: >-
    Talqui is an omnichannel customer service platform that unifies
    conversations from WhatsApp, Instagram, Telegram, and many other channels
    into a single attendant panel, alongside a broader ecosystem of plugins and
    integrations. This API gives developers programmatic access to Talqui's
    services layer, exposing the operations needed to read and manage tenants,
    conversations, plugins, and related resources that power that platform.


    Authentication is available on behalf of an Operator (the default for this
    API), a Plugin Connection, or a Plugin — see the [Talqui authentication
    guide](https://docs.talqui.chat/guides/introduction/authentication/) for how
    each token is obtained and when to use it.


    Need help or have questions not covered here? Reach out to
    support@talqui.com.
  license:
    name: ISC
    url: https://opensource.org/license/isc-license-txt
  title: Talqui - Services API
  version: 0.69.1
servers:
  - description: Production
    url: https://services-api.talqui.chat
security: []
tags:
  - name: Tenants
  - name: Settings
  - name: Analytics/Reports
  - name: Analytics
  - name: Campaigns
  - name: Campaigns/Models
  - name: Contacts
  - name: Contacts/Imports
  - name: Handoff links
  - name: Inboxes
  - name: Messages
  - name: Notifications
  - name: Sessions
  - name: Operators/Shortcuts
  - name: Operators
  - name: Plugins
  - name: Setup
  - name: Uploads
paths:
  /v1/tenants/{tenantID}/contacts/imports:
    get:
      tags:
        - Contacts/Imports
      summary: List contact imports
      description: |-
        Recent imports for the tenant, newest first, each carrying the same
        progress shape as the single-import endpoint so a list row and a detail
        view render from one component.
      operationId: ListContactImportsController
      parameters:
        - in: path
          name: tenantID
          required: true
          schema:
            description: The tenant whose imports are listed.
            format: uuid
            pattern: >-
              ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
            type: string
        - in: query
          name: limit
          required: false
          schema:
            default: 20
            description: Page size.
            maximum: 100
            minimum: 1
            type: integer
        - in: query
          name: skip
          required: false
          schema:
            default: 0
            description: Offset into the tenant-scoped, newest-first listing.
            maximum: 9007199254740991
            minimum: 0
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  imports:
                    items:
                      additionalProperties: false
                      properties:
                        acceptedRows:
                          description: Contacts written.
                          type: number
                        completedAt:
                          format: date-time
                          nullable: true
                          type: string
                        createdAt:
                          format: date-time
                          type: string
                        errorMessage:
                          description: Set only when the import as a whole failed.
                          nullable: true
                          type: string
                        failedAt:
                          format: date-time
                          nullable: true
                          type: string
                        fileName:
                          type: string
                        hasAcceptedReport:
                          description: >-
                            Whether the accepted-rows report is available for
                            download.
                          type: boolean
                        hasRefusedReport:
                          description: >-
                            Whether the refused-rows report is available for
                            download.
                          type: boolean
                        importID:
                          type: string
                        importStatus:
                          description: pending | processing | completed | failed.
                          type: string
                        importTag:
                          nullable: true
                          type: string
                        percentage:
                          description: 0-100, or null while the row total is still unknown.
                          nullable: true
                          type: number
                        processedRows:
                          description: Rows read from the file so far.
                          type: number
                        refusedByCode:
                          additionalProperties:
                            type: number
                          description: Refused rows keyed by error code (E100, E110, …).
                          type: object
                        refusedRows:
                          description: Rows refused, for any reason.
                          type: number
                        totalRows:
                          description: >-
                            Null until the file has been fully read — the UI
                            shows "counting" rather than "0 of 0".
                          nullable: true
                          type: number
                      required:
                        - importID
                        - importStatus
                        - fileName
                        - importTag
                        - totalRows
                        - processedRows
                        - acceptedRows
                        - refusedRows
                        - refusedByCode
                        - percentage
                        - hasAcceptedReport
                        - hasRefusedReport
                        - createdAt
                        - completedAt
                        - failedAt
                        - errorMessage
                      type: object
                    type: array
                  total:
                    description: Total imports for this tenant, for pagination.
                    type: number
                required:
                  - imports
                  - total
                type: object
          description: Response for status 200.
        '400':
          content:
            application/json:
              schema:
                properties:
                  errors:
                    items:
                      oneOf:
                        - $ref: '#/components/schemas/MissingTenantIDError'
                        - $ref: '#/components/schemas/RequestValidationError'
                    maxItems: 1
                    minItems: 1
                    type: array
                required:
                  - errors
                type: object
          description: >-
            MissingTenantIDError (error_code 1001): tenantID absent from the
            URL. | RequestValidationError (error_code 1002): params or query
            fail schema validation.
        '401':
          content:
            application/json:
              schema:
                properties:
                  errors:
                    items:
                      $ref: '#/components/schemas/UnauthorizedError'
                    maxItems: 1
                    minItems: 1
                    type: array
                required:
                  - errors
                type: object
          description: 'UnauthorizedError (error_code 1003): missing/invalid operator token.'
        '403':
          content:
            application/json:
              schema:
                properties:
                  errors:
                    items:
                      $ref: '#/components/schemas/ForbiddenError'
                    maxItems: 1
                    minItems: 1
                    type: array
                required:
                  - errors
                type: object
          description: 'ForbiddenError (error_code 1004): operator token rejected upstream.'
        '500':
          content:
            application/json:
              schema:
                properties:
                  errors:
                    items:
                      $ref: '#/components/schemas/UnknownError'
                    maxItems: 1
                    minItems: 1
                    type: array
                required:
                  - errors
                type: object
          description: >-
            UnknownError (error_code 5999): Unexpected internal error not
            otherwise documented for this endpoint.
      security:
        - operatorAuth: []
components:
  schemas:
    MissingTenantIDError:
      additionalProperties: false
      properties:
        error:
          enum:
            - MissingTenantIDError
          type: string
        error_code:
          enum:
            - 1001
          type: number
        message:
          example: tenantID is required.
          type: string
        statusCode:
          enum:
            - 400
          type: number
      required:
        - statusCode
        - error
        - error_code
        - message
      type: object
    RequestValidationError:
      additionalProperties: false
      properties:
        error:
          enum:
            - RequestValidationError
          type: string
        error_code:
          enum:
            - 1002
          type: number
        fields:
          items:
            additionalProperties: false
            properties:
              allowed:
                type: string
              field:
                type: string
              received:
                type: string
            required:
              - field
              - received
              - allowed
            type: object
          type: array
        message:
          example: Invalid request data.
          type: string
        statusCode:
          enum:
            - 400
          type: number
      required:
        - statusCode
        - error
        - error_code
        - message
        - fields
      type: object
    UnauthorizedError:
      additionalProperties: false
      properties:
        error:
          enum:
            - UnauthorizedError
          type: string
        error_code:
          enum:
            - 1003
          type: number
        message:
          example: You are not authorized to perform this request.
          type: string
        statusCode:
          enum:
            - 401
          type: number
      required:
        - statusCode
        - error
        - error_code
        - message
      type: object
    ForbiddenError:
      additionalProperties: false
      properties:
        error:
          enum:
            - ForbiddenError
          type: string
        error_code:
          enum:
            - 1004
          type: number
        message:
          example: You do not have access to this resource.
          type: string
        statusCode:
          enum:
            - 403
          type: number
      required:
        - statusCode
        - error
        - error_code
        - message
      type: object
    UnknownError:
      additionalProperties: false
      properties:
        error:
          enum:
            - UnknownError
          type: string
        error_code:
          enum:
            - 5999
          type: number
        message:
          example: For some unknown reason your request has not succeeded.
          type: string
        statusCode:
          enum:
            - 500
          type: number
      required:
        - statusCode
        - error
        - error_code
        - message
      type: object
  securitySchemes:
    operatorAuth:
      bearerFormat: JWT
      description: >-
        Behalf of an Operator (default). A JWT issued by Talqui Core when an
        operator signs in, scoped to every tenant that operator belongs to. Send
        as `Authorization: Bearer <jwt-token>`.
      scheme: bearer
      type: http

````

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