Parcourir la documentation

Commencer

Authentification

Chaque requête sur les routes /v1 transmet une clé API en tant que jeton Bearer. GET/health est la seule route publique.

Créer une clé

Créez vos clés sur app.callshift.ai/api-keys, une par intégration, au nom de celle-ci (Synchro CRM, Scénario Make), pour pouvoir en révoquer une sans arrêter les autres. C'est aussi là que vous révoquez une clé.

L'envoyer

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']}"},
)

Sans clé, ou avec une clé inconnue, l'API répond 401 :

JSON
{ "error": "Authentication error" }

Ce à quoi une clé donne accès

Une clé agit sur tout le compte : chaque agent, numéro, campagne et appel, quelle que soit l'entité à laquelle il appartient. Les entités organisent un compte ; elles ne restreignent pas une clé.

Gardez les clés côté serveur

Ne mettez jamais une clé dans une page web, une application mobile ou un fichier que vous partagez. Une clé qui s'est retrouvée dans un chat, un ticket ou une capture d'écran doit être révoquée et remplacée.

Conventions

ÉlémentFormat
URL de basehttps://api.callshift.ai, corps de requête et de réponse en JSON
IdentifiantsDes UUID. Vos propres identifiants vont dans l'externalId d'une entité ou dans les metadata d'un contact.
HorodatagesISO 8601 en UTC, par exemple 2026-10-30T09:12:00.000Z. Les filtres de date exigent la date et l'heure complètes.
Numéros de téléphoneE.164, par exemple +33612345678. Envoyez-les normalisés : les contacts sont identifiés par leur numéro.
MontantsEntiers en centimes d'euro (costEstimationCents, totalCents).
DuréesEn secondes (billingSeconds, maxDurationSeconds).
Booléens en paramètre de requêteLes chaînes true et false, par exemple ?isReached=true.
Partagé ou dans une entitéentityId ou entityExternalId ; null signifie partagé. Voir Entités.