Primeros pasos
Autenticación
Cada petición bajo
/v1 lleva una clave de API como token Bearer. GET/health es la única ruta pública.Crea una clave
Crea las claves en app.callshift.ai/api-keys, una por integración y con el nombre de esa integración (Sincronización CRM, Escenario Make), para poder revocar una sin detener las demás. Las claves también se revocan ahí.
Envíala
curl "https://api.callshift.ai/v1/agents" \
-H "Authorization: Bearer $CALLSHIFT_API_KEY"const res = await fetch("https://api.callshift.ai/v1/agents", {
headers: { Authorization: `Bearer ${process.env.CALLSHIFT_API_KEY}` },
});import os
import requests
res = requests.get(
"https://api.callshift.ai/v1/agents",
headers={"Authorization": f"Bearer {os.environ['CALLSHIFT_API_KEY']}"},
)Si la clave falta o es desconocida, la respuesta es 401:
{ "error": "Authentication error" }A qué da acceso una clave
Una clave actúa sobre toda la cuenta: todos los agentes, números, campañas y llamadas, sea cual sea la entidad a la que pertenezcan. Las entidades organizan una cuenta; no restringen una clave.
Guarda las claves en el servidor
Nunca pongas una clave en una página web, una app móvil o un archivo que compartas. Una clave que haya pasado por un chat, un ticket o una captura de pantalla debe revocarse y sustituirse.
Convenciones
| Qué | Formato |
|---|---|
| URL base | https://api.callshift.ai, cuerpos de petición y de respuesta en JSON |
| Identificadores | UUID. Tus propios identificadores van en el externalId de una entidad o en el metadata de un contacto. |
| Marcas de tiempo | ISO 8601 en UTC, como 2026-10-30T09:12:00.000Z. Los filtros de fecha requieren la fecha y la hora completas. |
| Números de teléfono | E.164, como +33612345678. Envíalos normalizados: los contactos se identifican por número. |
| Importes | Enteros en céntimos de euro (costEstimationCents, totalCents). |
| Duraciones | Segundos (billingSeconds, maxDurationSeconds). |
| Booleanos en los parámetros de consulta | Las cadenas true y false, como ?isReached=true. |
| Compartido o en una entidad | entityId o entityExternalId; null significa compartido. Consulta Entidades. |
