L’API pour les agences

Branche ton tableau de bord, ton CRM ou tes automatisations sur Nelvi : lis les projets de tes clients, leurs cartes, leurs rapports et leurs analytics, et dépose des brouillons. Rien n’est jamais publié par l’API.

Spécification OpenAPI 3.1 (JSON)

Jetons personnels

L’API est incluse dans l’offre Agence. Le propriétaire ou un admin de l’organisation crée un jeton depuis l’application (menu du compte, « API et jetons ») : un nom, des droits (lecture, ou lecture et brouillons), les projets accessibles (tous, ou une liste) et une durée de validité de 30 jours à 1 an. Le jeton n’est affiché qu’une fois ; Nelvi n’en garde qu’une empreinte. Il se révoque à tout moment, avec effet immédiat, et cesse de fonctionner si son créateur quitte l’organisation ou n’en est plus admin.

Authentification

Chaque requête porte le jeton dans l’en-tête Authorization. Les cookies de session ne sont jamais acceptés sur l’API, et un jeton n’ouvre jamais l’application ni le back-office.

curl https://nelvi.ai/api/v1/public/projects \
  -H "Authorization: Bearer nlv_…"

Routes

Base : https://nelvi.ai/api/v1/public. Réponses en JSON, dates ISO 8601 en UTC (à afficher à l’heure de Paris), pagination des cartes par curseur (nextCursor).

MéthodeRouteRôleDroits
GET/projectsLister les projets du jetonLecture
GET/projects/{projectId}Lire un projetLecture
GET/projects/{projectId}/cardsLister les cartesLecture
POST/projects/{projectId}/cardsDéposer un brouillonLecture et brouillons
GET/projects/{projectId}/cards/{cardId}Lire une carteLecture
POST/projects/{projectId}/cards/{cardId}/actionsMarquer une carte comme faite, l’archiver ou la désarchiverLecture et brouillons
GET/projects/{projectId}/reportsLister les rapportsLecture
GET/projects/{projectId}/analyticsLire le trafic et la santé SEOLecture
curl -X POST https://nelvi.ai/api/v1/public/projects/{projectId}/cards \
  -H "Authorization: Bearer nlv_…" -H "Content-Type: application/json" \
  -d '{"agentKey":"linkedin","type":"post","title":"Annonce","body":"…"}'

Limites de débit

60 requêtes par minute et par jeton, sur une fenêtre glissante. Chaque réponse donne RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset et RateLimit-Policy ; au-delà, la réponse 429 indique le délai dans Retry-After (en secondes).

Erreurs

Format unique : {"error": {"code": "…", "message": "…"}}, code stable en anglais, message en français.

StatutCas
400Corps ou paramètres invalides (`invalid_body`, `invalid_query`, `invalid_cursor`).
401Jeton absent, inconnu, expiré ou révoqué (`unauthorized`, `invalid_token`).
403Jeton en lecture seule pour une écriture (`insufficient_scope`).
404Projet ou carte hors de portée du jeton (`not_found`).
409Carte programmée ou en cours de publication (`conflict`).
429Limite atteinte : attends le nombre de secondes de `Retry-After` (`rate_limited`).

Sécurité et publication

  • Un jeton ne voit que les projets de son organisation (et de sa liste, s’il en a une) : les données de tes autres clients et des autres comptes restent inaccessibles, y compris en cas d’erreur de route.
  • Un brouillon déposé par l’API reste un brouillon : la relecture, la programmation et la publication se font dans Nelvi, par une personne, et sont journalisées.
  • Chaque écriture est inscrite au journal des actions du projet, au nom du créateur du jeton, avec la mention « via l’API ».
  • Les données sont hébergées dans l’Union européenne.