Explorar la documentación

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:

JSON
{ "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 basehttps://api.callshift.ai, cuerpos de petición y de respuesta en JSON
IdentificadoresUUID. Tus propios identificadores van en el externalId de una entidad o en el metadata de un contacto.
Marcas de tiempoISO 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éfonoE.164, como +33612345678. Envíalos normalizados: los contactos se identifican por número.
ImportesEnteros en céntimos de euro (costEstimationCents, totalCents).
DuracionesSegundos (billingSeconds, maxDurationSeconds).
Booleanos en los parámetros de consultaLas cadenas true y false, como ?isReached=true.
Compartido o en una entidadentityId o entityExternalId; null significa compartido. Consulta Entidades.