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

# Listar contactos

> Tus clientes y proveedores, ordenados por nombre. `bank_account` es la cuenta a la que Tesoria les paga (la favorita). Para encontrar uno tuyo usa `external_id` o `rfc`.



## OpenAPI

````yaml GET /contacts
openapi: 3.0.0
info:
  title: Tesoria API
  description: >-
    API pública de Tesoria. Solo lectura: tus **transacciones** bancarias
    (`transactions`), tus **cuentas por pagar** (`payables`), tus **cuentas
    bancarias** con su saldo (`accounts`), tus **contactos** (`contacts`) y tus
    **categorías** (`categories`).


    **Autenticación:** `Authorization: Bearer tsr_live_…` (una llave por
    empresa; pídela a soporte@tesoria.ai).


    **Paginación:** `limit` (default 50, máx 200) y `cursor` → `{ data,
    has_more, next_cursor }`.


    **Sincronizar:** `sort=updated_at&updated_since=<última corrida>` y sigue
    `next_cursor` hasta `has_more: false`.


    **Errores:** `{ "error": { "code", "message", "details" } }` con
    `unauthorized` (401), `forbidden_scope` (403), `not_found` (404),
    `invalid_parameter` (400), `rate_limited` (429, respeta `Retry-After`),
    `internal_error` (500).


    **Límites:** 600 peticiones por minuto por llave.


    **Versionado:** las rutas no llevan versión y la URL no cambia. Solo hay
    cambios aditivos (campos, filtros o endpoints nuevos). Si algún día hay un
    cambio incompatible, se pedirá con el header opcional `Tesoria-Version`;
    quien no lo mande conserva el comportamiento actual.


    **Soporte:** soporte@tesoria.ai
  version: '2026-10-01'
  contact: {}
servers:
  - url: https://api.tesoria.ai
security: []
tags: []
paths:
  /contacts:
    get:
      tags:
        - Contactos
      summary: Listar contactos
      description: >-
        Tus clientes y proveedores, ordenados por nombre. `bank_account` es la
        cuenta a la que Tesoria les paga (la favorita). Para encontrar uno tuyo
        usa `external_id` o `rfc`.
      operationId: contacts_list
      parameters:
        - name: limit
          required: false
          in: query
          schema:
            minimum: 1
            maximum: 200
            default: 50
            type: number
        - name: cursor
          required: false
          in: query
          description: El `next_cursor` de la página anterior.
          schema:
            type: string
        - name: updated_since
          required: false
          in: query
          description: >-
            Solo lo creado o modificado desde este instante (ISO-8601 con zona).
            Para sincronizar, combínalo con `sort=updated_at`.
          schema:
            example: '2026-09-30T00:00:00-06:00'
            type: string
        - name: sort
          required: false
          in: query
          description: >-
            Por nombre (A→Z) o, para sincronizar, por `updated_at` (del más
            viejo al más nuevo).
          schema:
            default: name
            type: string
            enum:
              - name
              - updated_at
        - name: external_id
          required: false
          in: query
          description: Tu id del contacto (el `external_id`).
          schema:
            type: string
        - name: rfc
          required: false
          in: query
          schema:
            example: ECE010101AB1
            type: string
        - name: q
          required: false
          in: query
          description: El nombre contiene este texto (sin distinguir mayúsculas).
          schema:
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                example:
                  data:
                    - id: 66a01b2c3d4e5f0012ab0002
                      name: Estacionamientos del Centro SA de CV
                      rfc: ECE010101AB1
                      external_id: '1234'
                      emails:
                        - pagos@estacionamientos-centro.mx
                      bank_account:
                        clabe: '012180000000000002'
                        bank_code: '40012'
                        bank_name: BBVA MEXICO
                      created_at: '2026-08-11T12:30:05.000-06:00'
                      updated_at: '2026-09-29T10:02:47.000-06:00'
                  has_more: true
                  next_cursor: eyJrIjoi…
        '400':
          description: '`invalid_parameter`'
        '401':
          description: '`unauthorized` — falta la llave, no existe o está revocada.'
        '403':
          description: '`forbidden_scope` — la llave no tiene el scope de la ruta.'
        '429':
          description: >-
            `rate_limited` — más de 600 peticiones por minuto; respeta
            `Retry-After`.
      security:
        - api-key: []
components:
  securitySchemes:
    api-key:
      scheme: bearer
      bearerFormat: JWT
      type: http
      description: tsr_live_…

````

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