Registros de peticiones
Consulta el metadato de cada llamada de tu organización al API: método, ruta, código de estado y duración.
Cada llamada al API deja un registro con su método, su ruta, su código de estado y cuánto tardó. Úsalo para depurar una integración, rastrear qué llave hizo qué, o encontrar el patrón detrás de una racha de errores.
El registro guarda metadatos, no contenido. Nunca devuelve la dirección IP, el user agent ni los valores de tu query string.
Consulta tus llamadas recientes
| Método | Ruta | Acceso |
|---|---|---|
GET |
/v1/api-requests |
Cualquier miembro autenticado, o llave con api_keys:read |
Una sesión del dashboard entra sin importar el rol: VIEWER también lee. Con llave de API necesitas el alcance api_keys:read (o *).
curl "https://api.sendit.mx/v1/api-requests?method=POST&statusCode=402&limit=20" \
-H "X-API-Key: sk_test_..."
Parámetros de consulta
method?string
Filtra por método HTTP, por ejemplo POST.
stringstatusCode?integer
Filtra por código de estado exacto, por ejemplo 402.
integerapiKeyId?string
Filtra por la llave que hizo la llamada.
stringafter?string
Fecha ISO-8601. Solo peticiones creadas después de ese momento.
stringbefore?string
Fecha ISO-8601. Solo peticiones creadas antes de ese momento.
stringcursor?string
Cursor opaco de la página anterior. Pásalo tal cual.
stringlimit?integer
Cuántos registros traer por página.
integer{
"success": true,
"data": {
"data": [
{
"id": "req_01J8Z9K2M4N6P8Q0R2S4T6",
"apiKeyId": "key_a1b2c3d4e5f6",
"method": "POST",
"path": "/v1/shipments",
"statusCode": 201,
"durationMs": 142,
"requestId": "01J8Z9K2M4N6P8Q0R2S4T6",
"livemode": true,
"createdAt": "2026-08-03T18:00:00.000Z"
}
],
"total": 1,
"nextCursor": null,
"hasMore": false
}
}
Los campos apiKeyId, durationMs y requestId pueden llegar en null.
| Campo | Descripción |
|---|---|
id |
Identificador del registro |
apiKeyId |
La llave que hizo la llamada; null si fue una sesión del dashboard |
method |
Método HTTP |
path |
Ruta que se llamó |
statusCode |
Código de estado que respondimos |
durationMs |
Cuánto tardó la petición |
requestId |
El mismo identificador que devolvemos en los errores |
livemode |
false cuando la llamada ocurrió en modo de prueba |
createdAt |
Cuándo entró la petición |
Recorre las páginas
Los resultados llegan del más reciente al más antiguo. Pasa el nextCursor sin modificarlo y detente cuando hasMore sea false:
let cursor = null;
do {
const url = new URL("https://api.sendit.mx/v1/api-requests");
url.searchParams.set("limit", "100");
if (cursor) url.searchParams.set("cursor", cursor);
const res = await fetch(url, { headers: { "X-API-Key": process.env.SENDIT_KEY } });
const { data } = await res.json();
for (const row of data.data) process(row);
cursor = data.hasMore ? data.nextCursor : null;
} while (cursor);
Separa prueba de producción
Los resultados siempre quedan acotados al modo activo. Con una llave de API el modo lo fija su propio ambiente. Con una sesión del dashboard agrega ?livemode=false para leer las peticiones de prueba.
El endpoint se excluye a sí mismo, así que consultar el registro no genera registros nuevos. Puedes hacer polling sin ensuciar tus datos.
Maneja los errores
| Código | Cuándo ocurre | Cómo resolverlo |
|---|---|---|
400 VALIDATION_ERROR |
Un filtro trae un valor inválido, por ejemplo una fecha que no es ISO-8601 | Corrige el parámetro y reintenta |
401 UNAUTHORIZED |
Falta la credencial o no es válida | Manda una llave vigente o inicia sesión |
403 INSUFFICIENT_SCOPE |
La llave no tiene api_keys:read |
Emite una llave con ese alcance |
429 RATE_LIMIT_EXCEEDED |
Excediste el límite de lectura | Respeta los encabezados de límite antes de reintentar |