API

L'API de Noki Mind

Tout ce que fait l'espace d'administration s'appelle aussi depuis un serveur : vos clients, vos devis, vos tâches, vos réunions, vos notes. Un point d'entrée par geste, une clé pour s'authentifier, et un document OpenAPI que vos outils avalent tel quel.

196 points d'entrée · 63 en lecture · 104 en écriture · 29 en suppression

Premier appel

Créez une clé depuis l'espace d'administration, onglet Intégrations puis API, et appelez. Voici un appel complet, à coller tel quel.

Adresse de base
https://nokimind.com/api/v1
curl https://nokimind.com/api/v1/list_clients \
  -H "Authorization: Bearer $NOKI_API_KEY"

Gardez la clé dans une variable d'environnement : collée dans un dépôt, elle vaut le compte qui l'a créée.

Authentification

Chaque appel porte une clé, créée depuis l'espace d'administration, onglet Intégrations › API. Deux en-têtes sont acceptés, au choix de votre outil.

Authorization: Bearer ecpapi_…
X-Api-Key: ecpapi_…

Une clé agit au nom de l'administrateur qui l'a créée et ne voit que ce qu'il voit. Elle n'est jamais à mettre dans une page web : ces appels vont de serveur à serveur, et aucun en-tête CORS n'est posé.

Portées

Une clé porte une ou plusieurs portées. Aucune n'implique une autre : une clé qui écrit ne supprime pas pour autant. Chaque point d'entrée annonce la sienne.

PortéeCe qu'elle ouvrePoints d'entrée
readTout ce qui lit, sans jamais rien changer.63
writeCréer et modifier. Ne supprime rien.104
destructiveSuppressions définitives.29

Méthodes et enveloppes

Ce qui lit accepte GET, paramètres dans la requête, et POST, corps JSON. Ce qui écrit ou supprime n'accepte que POST. Un tableau se dit en répétant le paramètre : ?tags=a&tags=b.

Un succès rend 200 et le résultat sous data.

{ "data": … }

Un refus rend un code stable sous error, et une phrase sous message. C'est le code qui se teste, jamais le message.

{ "error": "missing_scope", "message": "…" }

Débit

Chaque clé dispose d'un plafond par minute, calé sur ce que le geste fait. Lire beaucoup ne casse rien ; supprimer trente fois par minute n'est pas un usage normal.

PortéePlafond
read600 appels par minute
write120 appels par minute
destructive30 appels par minute

Toute réponse porte RateLimit-Limit, RateLimit-Remaining et RateLimit-Reset, y compris quand elle passe : c'est ce qui permet de ralentir avant le mur. Un dépassement rend 429 avec Retry-After.

Refus

CodeStatutQuand
missing_api_key401Aucune clé dans les en-têtes de la requête.
invalid_api_key401La clé présentée n'existe pas.
revoked_api_key401La clé a été coupée depuis l'espace d'administration.
expired_api_key401La clé a passé sa date de fin de validité.
not_admin403Le compte auquel la clé appartient n'est plus administrateur.
missing_scope403La clé ne porte pas la portée exigée par ce point d'entrée.
unknown_endpoint404L'adresse ne désigne aucun point d'entrée. La réponse propose les noms proches.
method_not_allowed405GET sur un point d'entrée qui écrit ou supprime.
invalid_json400Le corps de la requête n'est pas du JSON.
invalid_query400Un paramètre de requête est inconnu. La réponse dit lesquels existent.
invalid_payload400Les paramètres ne passent pas la validation. La réponse les détaille, champ par champ.
refused422Le geste a dit non pour une raison métier, expliquée dans le message.
payload_too_large413Le corps dépasse 4 Mo.
rate_limited429Le plafond d'appels de la clé est atteint pour ce niveau de geste. L'en-tête « Retry-After » dit dans combien de secondes réessayer.
server_error500Quelque chose a échoué de notre côté.

Document OpenAPI

Le contrat complet, généré à partir du code à chaque déploiement. Il se colle tel quel dans Postman, Insomnia, Bruno, Scalar ou Swagger UI, et sert de source à un générateur de client.

Ouvrir openapi.json

Essayer

Appelez un point d'entrée depuis cette page avec votre propre clé. La requête part de votre navigateur vers ce site, rien n'est enregistré ici.

La clé reste dans cet onglet et n'est envoyée qu'à cette API. Elle disparaît en rechargeant la page.

Points d'entrée

Les 196 gestes, avec leurs paramètres et la forme de leur réponse. On y cherche par nom ou par module.

Ouvrir la référence

searchaccountagenciesadmin-localenotificationspushadmin-invitationsclientstasksclient-userscustom-fieldsreferrersquotesquote-commentstask-commentstask-viewssocialsocial-viewsmeetingsmeeting-proposalsrecallrecall-calendarquestionnairescredentialsbillsmetricsfilesfile-foldersdecisionsassistant-conversationsmedianotesnote-foldersticketscompanycompany-searchdesigneditor-imageseditor-filestranslation