AIMERICAAPI · Développeurs

Jetons de synchronisation

Pour garder une copie à jour sans tout relire : demandez seulement ce qui a changé.

Les listes qui se synchronisent — /calls et /messages — acceptent sync_token en plus de limit et cursor.

  • Sans jeton : la fenêtre complète (les 30 derniers jours), paginée, et un sync_token neuf dans la réponse.
  • Avec jeton : seulement ce qui a été créé ou modifié depuis (un appel dont l'enregistrement est arrivé, un texto passé à « livré »), et un jeton frais.
  • Le jeton est opaque (un base64 de {"since", "id"}) : gardez-le tel quel, ne le construisez jamais vous-même.
  • Un jeton invalide ou de plus de 30 jours répond 400 invalid_request « sync_token expired, do a full sync » : recommencez sans jeton.
# 1. first time: no token → the last 30 days, and a token to keep
GET https://api.a1merica.ai/v1/calls?limit=200
→ {"items": [...], "next_cursor": "…", "sync_token": "eyJzaW5jZSI6IjIwMjYtMDktMjVUMTY6MDA6MDBaIiwiaWQiOm51bGx9"}

# 2. later: only what was created or changed since → a fresh token
GET https://api.a1merica.ai/v1/calls?sync_token=eyJzaW5jZSI6…
→ {"items": [ …the delta… ], "next_cursor": null, "sync_token": "eyJzaW5jZSI6…"}

# 3. a token older than 30 days
→ 400 {"error": {"type": "invalid_request", "message": "sync_token expired, do a full sync", "request_id": "…"}}

Parcourez d'abord toutes les pages (next_cursor) avant d'enregistrer le sync_token de la dernière ; c'est lui qui marque « jusqu'ici, j'ai tout ». Un objet peut apparaître dans deux synchronisations consécutives s'il a changé entre-temps : appliquez la ligne par son id, et le résultat est le même.