Visión general de la referencia de la API
Convenciones de la API REST de Tokeflow — URL base y versionado, autenticación, envoltorios de solicitud y respuesta, IDs de recursos, dinero, paginación, idempotencia y límites de tasa.
La API de Tokeflow es una interfaz JSON sobre HTTPS para la orquestación de pagos. Úsala para gestionar clientes, ejecutar sesiones de checkout, crear y capturar transacciones, emitir reembolsos, modelar tu catálogo e impulsar suscripciones — todo estandarizado bajo tu propia marca, en cada proveedor de pagos que conectes.
Tokeflow orquesta pagos; no procesa ni liquida fondos. La autorización, la captura y la liquidación las realizan los proveedores de pagos conectados. Tokeflow normaliza su comportamiento detrás de una API consistente para que tu integración siga siendo la misma sin importar quién esté detrás.
Esta página es el centro de convenciones. Léela una vez y cada página de endpoint de esta referencia se comportará de la manera que esperas.
¿Nuevo en Tokeflow? Comienza con la guía de Autenticación para aprovisionar claves y luego vuelve aquí para conocer el formato de transmisión.
URL base y versionado
Todas las solicitudes van a una única URL base:
https://api.tokeflow.comLa API utiliza versionado por URI. Cada endpoint vive bajo un prefijo de versión, y la versión actual es v1:
https://api.tokeflow.com/api/v1/{resource}Los cambios incompatibles se publican bajo un nuevo prefijo de versión (por ejemplo /api/v2). Los cambios aditivos y retrocompatibles — nuevos campos, nuevos valores de enum, nuevos endpoints — pueden aparecer dentro de v1, así que construye clientes que ignoren los campos desconocidos.
Tokeflow es de marca blanca por diseño. Que una solicitud se distribuya a un proveedor o se encadene entre varios se rige por tu configuración de enrutamiento, no por la superficie de la API. Las formas de solicitud y respuesta documentadas aquí son estables independientemente de qué proveedor maneje finalmente el pago.
Autenticación
Autentica las solicitudes servidor a servidor con una clave secreta de API en el encabezado Authorization usando el esquema Bearer:
Authorization: Bearer sk_live_mer_…Las claves están limitadas a exactamente una entidad:
| Tipo de clave | Prefijo | Alcance | Selección de Merchant |
|---|---|---|---|
| Secreta de Merchant | sk_live_mer_… | Un Merchant | El Merchant se infiere — no se necesita merchant_id |
| Secreta de Organization | sk_live_org_… | Cada Merchant de la Organization | Identifica el Merchant objetivo con merchant_id |
Las claves públicas (pk_live_org_… / pk_live_mer_…) están restringidas a alcances seguros para el cliente y es seguro incrustarlas en código de navegador. Las claves secretas (sk_*) nunca deben exponerse en el lado del cliente.
Los permisos siguen un modelo resource:action (por ejemplo transactions:read, products:write). Una solicitud que se autentica pero carece del alcance requerido devuelve 403 (authorization_error).
Trata las claves secretas como contraseñas. Nunca envíes una clave sk_* a un navegador, una aplicación móvil o cualquier cliente que no controles. Para la recopilación de tarjetas en el lado del cliente, usa en su lugar una clave pública con el Bridge SDK.
Consulta Autenticación para conocer la anatomía de las claves, la rotación y los detalles de alcance.
Claves de Organization y merchant_id
Cuando usas una clave de Organization contra un recurso limitado a un Merchant, debes indicarle a Tokeflow a qué Merchant te refieres:
- En las solicitudes de listado y obtención, pasa
merchant_idcomo parámetro de consulta. - En las solicitudes de creación, pasa
merchant_iden el cuerpo de la solicitud.
Las claves de Merchant nunca necesitan esto — el Merchant se deriva de la clave.
# Organization key: merchant_id is required
curl https://api.tokeflow.com/api/v1/customers?merchant_id=mrc_a1b2c3 \
-H "Authorization: Bearer sk_live_org_…"
# Merchant key: merchant is inferred
curl https://api.tokeflow.com/api/v1/customers \
-H "Authorization: Bearer sk_live_mer_…"Formato de solicitud
Envía y acepta JSON.
| Encabezado | Valor |
|---|---|
Authorization | Bearer <secret_key> |
Content-Type | application/json (en solicitudes con cuerpo) |
Accept | application/json |
Una solicitud típica:
curl -X POST https://api.tokeflow.com/api/v1/customers \
-H "Authorization: Bearer sk_live_mer_…" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"name": "Joao da Silva",
"email": "joao@example.com"
}'Envoltorio de respuesta
Cada respuesta se envuelve en un envoltorio consistente. Tu código lee success para ramificar y luego data para la carga útil — nunca el objeto de nivel superior directamente.
Envoltorio de éxito
Una respuesta exitosa establece success: true y transporta el recurso (o el arreglo de recursos) en data:
{
"success": true,
"data": {
"id": "cust_9a8b7c",
"name": "Joao da Silva",
"email": "joao@example.com",
"created_at": "2026-01-15T12:30:00.000Z"
},
"request_id": "req_8f3c…",
"timestamp": "2026-01-15T12:30:00.000Z"
}Dónde vive cada cosa:
| Campo | Descripción |
|---|---|
success | Siempre true en una respuesta 2xx. |
data | El recurso (objeto único) o la colección (arreglo, en los endpoints de listado). |
meta | Presente en las respuestas de listado. Contiene pagination. Se omite en las respuestas de recurso único. |
request_id | ID único de la solicitud. Cítalo en los tickets de soporte y regístralo en tu lado. |
timestamp | Hora UTC en ISO 8601 en que se generó la respuesta. |
Para un endpoint de listado, data es el arreglo y meta.pagination describe la página:
{
"success": true,
"data": [
{ "id": "cust_9a8b7c", "name": "Joao da Silva" },
{ "id": "cust_4d5e6f", "name": "Maria Souza" }
],
"meta": {
"pagination": {
"page": 1,
"limit": 20,
"total": 42,
"total_pages": 3,
"has_next": true,
"has_prev": false
}
},
"request_id": "req_8f3c…",
"timestamp": "2026-01-15T12:30:00.000Z"
}Envoltorio de error
Los errores nunca se envuelven en data. Utilizan una forma dedicada con un code estable y legible por máquina:
{
"error": {
"type": "validation_error",
"code": "INVALID_FIELD",
"message": "The 'currency' field must be a valid ISO 4217 code.",
"details": {
"field": "currency"
},
"request_id": "req_8f3c…",
"timestamp": "2026-01-15T12:30:00.000Z"
}
}El estado HTTP se corresponde directamente con el type del error:
| Estado | type |
|---|---|
| 400 | validation_error |
| 401 | authentication_error |
| 403 | authorization_error |
| 404 | not_found_error |
| 409 | conflict_error |
| 422 | business_rule_error |
| 429 | rate_limit_error |
| 500 | internal_server_error |
Ramifica según error.code (una cadena estable), no según error.message (legible por humanos y sujeto a cambios). Consulta Errores para ver el catálogo completo.
const body = await res.json();
if (!res.ok) {
// body.error.type, body.error.code, body.error.message
throw new Error(`[${body.error.code}] ${body.error.message}`);
}
return body.data;IDs de recursos
Cada recurso de Tokeflow tiene un ID estable y opaco con un prefijo de tipo. El prefijo te indica el tipo de recurso de un vistazo — trata el resto como una cadena opaca y nunca la analices.
| Prefijo | Recurso |
|---|---|
org_ | Organization |
mrc_ | Merchant |
cust_ | Cliente |
pfa_ | Familia de productos |
prd_ | Producto |
ofr_ | Oferta |
opr_ | Precio de oferta |
oft_ | Transición de oferta |
cks_ | Sesión de checkout |
cki_ | Ítem de checkout |
cke_ | Evento de checkout |
tx_ | Transacción |
ref_ | Reembolso |
ord_ | Pedido |
sub_ | Suscripción |
pi_ | Instrumento de pago |
tok_ | Token de tarjeta (SDK) |
Los IDs son opacos. No infieras significado de su contenido, no asumas una longitud fija ni los generes tú mismo — usa siempre el valor que Tokeflow devuelve.
Formatos de datos
Tokeflow estandariza los formatos para que tus datos sean inequívocos entre proveedores y regiones.
Dinero
Los montos son enteros en las unidades menores de la moneda (por ejemplo, centavos). Nunca envíes un decimal.
| Monto | Moneda | amount |
|---|---|---|
| R$150.00 | BRL | 15000 |
| US$99.00 | USD | 9900 |
Empareja siempre un monto con su código currency ISO 4217 (por ejemplo "BRL", "USD"). Un monto sin moneda es ambiguo y se rechaza.
País, moneda y fechas
| Campo | Formato | Ejemplo |
|---|---|---|
country | ISO 3166-1 alpha-2 | "BR" |
currency | ISO 4217 | "BRL" |
| Marcas de tiempo | ISO 8601, UTC | "2026-01-15T12:30:00.000Z" |
Idempotencia
Las mutaciones de creación y cobro son idempotentes. Envía un encabezado Idempotency-Key único (o un campo idempotency_key en el cuerpo) y Tokeflow garantiza que la operación se ejecute como máximo una vez.
curl -X POST https://api.tokeflow.com/api/v1/transactions \
-H "Authorization: Bearer sk_live_mer_…" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 4f1c2a9e-7b3d-4d2a-9f10-2e5a8c1b6d44" \
-d '{ "amount": 15000, "currency": "BRL", "payment_method": "pix" }'Reproducir la misma clave devuelve el resultado original — HTTP 200 en una reproducción frente a HTTP 201 en la primera creación — en lugar de crear un duplicado. Genera una clave nueva (como un UUID) por operación lógica y reutilízala al reintentar tras un fallo de red.
Establece siempre una clave de idempotencia en POST /transactions. Es tu red de seguridad contra dobles cobros cuando una solicitud agota su tiempo de espera y reintentas.
Consulta Idempotencia para conocer la semántica completa.
Límites de tasa
Las solicitudes están limitadas por tasa por clave de API y por endpoint, en ventanas de 60 segundos. Las rutas de pago y de lectura permiten 600 solicitudes por minuto de forma predeterminada; las rutas sin clase permiten 100. Superar un límite devuelve HTTP 429 con un rate_limit_error y un encabezado Retry-After.
Maneja 429 con retroceso exponencial y jitter, y distribuye las operaciones masivas en el tiempo en lugar de enviarlas en ráfagas. Consulta Límites de tasa para más detalles.
Paginación y filtrado
Los endpoints de listado se paginan con dos parámetros de consulta:
| Parámetro | Tipo | Predeterminado | Descripción |
|---|---|---|---|
page | integer | 1 (mín 1) | Número de página con índice desde 1. |
limit | integer | 20 (máx 100) | Ítems por página. |
La respuesta transporta el estado de la página en meta.pagination:
curl "https://api.tokeflow.com/api/v1/customers?page=2&limit=50" \
-H "Authorization: Bearer sk_live_mer_…"La mayoría de los endpoints de listado también aceptan filtros específicos del recurso (por ejemplo estado, rango de fechas, moneda). Cada página de endpoint documenta sus propios filtros. Consulta Paginación y filtrado para conocer las convenciones compartidas.
Cómo fluye una solicitud
Tokeflow autentica la clave, aplica tus reglas de enrutamiento (incluyendo resiliencia y respaldo), reenvía al proveedor seleccionado y normaliza la respuesta del proveedor en el envoltorio estándar. Tu cliente siempre ve la misma forma.
Grupos de recursos
Cada endpoint a continuación acepta una clave de Organization o de Merchant. Con una clave de Organization, añade merchant_id donde el endpoint esté limitado a un Merchant (como se indica en cada página).
| Grupo | Prefijo | Descripción |
|---|---|---|
| Clientes | cust_ | Crea y gestiona pagadores, incluyendo documentos y datos de contacto. |
| Sesiones de checkout | cks_ | Flujos de checkout alojados/embebidos: líneas de pedido, identificación del cliente y eventos. |
| Transacciones | tx_ | Crea, recupera, captura y anula pagos; inspecciona intentos y la línea de tiempo de enrutamiento. |
| Reembolsos | ref_ | Reembolsos totales o parciales contra transacciones capturadas. |
| Pedidos | ord_ | Registros de pedidos que agrupan transacciones entre flujos de API, checkout y renovación. |
| Suscripciones | sub_ | Facturación recurrente: ofertas, ciclo de vida, dunning, pausa/reanudación y cambios de oferta. |
| Instrumentos de pago | pi_ | Métodos de pago guardados en archivo para cobros iniciados por el Merchant y cobros recurrentes. |
| Merchants | mrc_ | Gestiona los Merchants y los miembros de sus equipos dentro de tu Organization. |
| Claves de API | ak_ | Crea, lista y revoca las claves de API que autentican tu integración. |
| Endpoints de webhook | — | Registra endpoints de webhook, inspecciona las entregas y rota los secretos de firma. |
| Sesiones y tokens | tok_ | Endpoints de sesión y token del lado del servidor detrás del Bridge SDK. |
| Conectores | conn_ | Las conexiones con proveedores de pago disponibles para un Merchant. |
| Perfiles de enrutamiento | — | Reglas de enrutamiento inteligente: perfiles, nodos de regla y orden de respaldo. |
| Proveedores de pago | — | El catálogo de proveedores de pago que Tokeflow puede orquestar. |
| Registros de auditoría | — | Registro de solo adición de la actividad de la cuenta para trazabilidad. |
| Catálogo | — | Familias de productos, productos, ofertas, precios de ofertas y transiciones de ofertas. |
| Webhooks | — | Notificaciones de eventos normalizadas y firmadas para cambios de pago y de ciclo de vida. |
El catálogo de un vistazo
El catálogo modela lo que vendes y cómo se le pone precio.
| Recurso del catálogo | Prefijo | Descripción |
|---|---|---|
| Familias de productos | pfa_ | Agrupación de nivel superior para productos relacionados. |
| Productos | prd_ | Un ítem vendible — one_time o recurring. |
| Ofertas | ofr_ | Una configuración adquirible de un producto, incluido su ciclo de facturación. |
| Precios de ofertas | opr_ | Variantes con precio de una oferta (monto + moneda). |
| Transiciones de ofertas | oft_ | Reglas para mover una suscripción de una oferta a otra. |
Próximos pasos
- Autenticación — aprovisiona claves y comprende los alcances.
- Errores — el catálogo completo de errores y códigos.
- Idempotencia y Límites de tasa — reintentos seguros a escala.
- Webhooks — recibe y verifica eventos firmados.