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

# Introducción a la API

> Conoce cómo puedes usar las APIs de Quentli para desarrollar integraciones con sistemas externos.

Nuestra API te permite extender la funcionalidad de Quentli para desarrollar integraciones con sistemas externos, como CRMs, ERPs y otras aplicaciones web.

## Endpoint

El endpoint base de la API REST de Quentli es el siguiente:

```
https://api.quentli.com
```

## Referencia de endpoints

La referencia de endpoints REST se genera a partir de la especificación OpenAPI de Quentli. Consulta los endpoints disponibles en la navegación de esta guía para ver sus parámetros, cuerpos de solicitud, respuestas y errores.

Incluye endpoints para clientes, facturas, suscripciones, sesiones de pago, métodos de pago y webhooks.

## Autenticación

Todas las consultas de la API en Quentli requieren una API key válida. Consulta [Autenticación](/api/autenticacion) para
obtener una key y enviarla con el encabezado `Authorization`.

## Idempotencia

Las solicitudes de escritura pueden agotarse en tránsito después de que Quentli ya creó una factura, sesión o pago. Reintentar sin control puede duplicar una operación de cobranza.

Envía un `X-Idempotency-Key` único en cada operación lógica con `POST`, `PUT`, `PATCH` o `DELETE`, y reutilízalo para reintentos de la misma solicitud. Consulta [Idempotencia](/api/idempotencia) para conocer el comportamiento, los límites y cómo manejar respuestas `409` y `5xx`.

## Ejemplos

### Crear un cliente

Ejemplo de cómo crear un cliente a través de la API REST.

```JSON POST /v1/customers theme={null}
{
    "input": {
        "name": "Alicia Pérez",
        "username": "12873",
        "email": "alicia1@ejemplo.com",
        "phoneNumber": "+528444191046"
    }
}
```

<Warning>
  Toma en cuenta que los identificadores (`username`), correo electrónico y número de teléfono deben ser únicos. No
  pueden repetirse en otros clientes.
</Warning>

### Crear una solicitud de pago

Puedes hacer la siguiente solicitud para crear una solicitud de pago a un cliente. Para ello, deberás primero crear un concepto de pago y un cliente previamente.

```JSON POST /v1/invoices theme={null}
{
    "input": {
        "customerId": "cm4k6bzfx0019rtqttpbgg0ea",
        "dueDate": "2025-01-10T06:00:00.000Z",
        "collectionMethod": "AUTOMATIC",
        "items": [
            {
                "concept": {
                    "displayName": "Licencia POS",
                    "amount": 40000,
                    "currency": "MXN"
                },
                "quantity": 1
            }
        ]
    }
}
```

## Paginación

Los endpoints que obtienen listas de recursos en Quentli máximo pueden devolver 100 registros a la vez. Para obtener la lista completa, soportamos paginación basada en *offset*.

La paginación en Quentli se maneja usando dos parámetros: `take` y `skip` . Ambos parámetros son opcionales.

* `take` : indica cuántos items deseas obtener en tu solicitud. Por default, este valor es 20. El valor máximo de `take` es 100.
* `skip` : indica cuántos items deseas "saltar". Por default, este valor es 0.

<img src="https://mintcdn.com/quentli/yHEs7Zlh0EtT_jl5/images/paginacion-api.png?fit=max&auto=format&n=yHEs7Zlh0EtT_jl5&q=85&s=596878b319a971f3b483222f59b8a7ea" alt="Paginación de la API" width="1530" height="478" data-path="images/paginacion-api.png" />

Por ejemplo, si deseas obtener los primeros 10 *invoices* y después obtener los siguientes 10 harías las siguientes llamadas:

```jsx theme={null}
GET /v1/invoices?take=10&skip=0
GET /v1/invoices?take=10&skip=10
```

## Formatos y convenciones

* Los montos en la API están en unidades menores de la moneda indicada. Por ejemplo, para cobrar \$150.00 MXN, usa `15000` con `currency: "MXN"`.
* En la API de Quentli, las fechas se admiten y devuelven en el formato [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) con la zona horaria UTC. Por ejemplo: `2025-01-09T06:00:00.000Z` indica el inicio del 9 de enero de 2025 en hora Ciudad de México.
* El formato de los números de celular es [E.164](https://en.wikipedia.org/wiki/E.164), que incluye el código de país y a continuación el número local. Por ejemplo: `+525512345678`
* El formato de las monedas internacionales es [ISO 4217](https://es.wikipedia.org/wiki/ISO_4217), que utiliza un código de 3 letras. Por ejemplo, el peso mexicano es `MXN` y el dólar estadounidense es `USD`

## Restricciones (rate limits)

La API REST permite hasta 1,000 solicitudes por minuto desde una misma dirección IP. Cuando se alcanza el límite, recibirás `429 Too Many Requests` y un encabezado `Retry-After` con el tiempo que debes esperar antes de reintentar.

Consulta [Límites de solicitudes](/api/rate-limits) para conocer los encabezados disponibles, recomendaciones de reintento y cómo combinarlo con idempotencia en operaciones de escritura.
