Bâtissez sur Canner.
Tout ce que font le tableau de bord et la CLI, votre propre code peut le faire aussi. L’API REST de Canner est documentée par une spécification OpenAPI 3.1 et une référence interactive — gérez projets, déploiements, domaines, bases de données et facturation depuis n’importe quel langage capable d’envoyer une requête HTTP.
Authentification
Chaque requête est authentifiée par un jeton Bearer. Créez-en un dans Compte → Jetons API du tableau de bord; il est affiché une seule fois et commence par cnr_. Envoyez-le dans l’en-tête Authorization. Le témoin de session du tableau de bord fonctionne aussi, donc les appels côté navigateur n’ont pas besoin de jeton.
curl https://api.canner.ca/v1/projects \ -H "Authorization: Bearer cnr_your_token_here"
Gestion des versions
La surface stable et documentée est montée sous /v1. Les anciens chemins sans version (sans préfixe /v1) continuent de fonctionner comme alias de compatibilité pour le tableau de bord et la CLI existante, mais les nouvelles intégrations devraient viser /v1 — c’est ce que décrit la spécification OpenAPI.
Ressources
Huit groupes de ressources, 45 opérations. Chacune est entièrement décrite — corps de requête, réponses et codes d’erreur — dans la référence interactive.
Créez, listez, configurez, arrêtez et supprimez des projets; gérez le cache en périphérie.
Lancez, relancez, annulez et restaurez des compilations; lisez métriques, journaux et captures.
Reliez des domaines personnalisés, vérifiez le DNS, cherchez et achetez un domaine via Canner.
Lisez, créez, modifiez et supprimez des secrets par environnement.
Lisez le forfait et l'essai, enregistrez une carte et gérez l'abonnement.
Provisionnez, inspectez et supprimez une base Postgres isolée par projet.
Créez, listez et révoquez les jetons cnr_ qui authentifient cette API.
Téléversez un .zip ou .tar.gz de votre code et lancez une compilation.
Erreurs
Les erreurs partagent une même enveloppe : un code lisible par machine, un message humain facultatif et un request_id à citer au soutien. Les échecs de validation (400) ajoutent un tableau issues des problèmes par champ.
{
"error": "project_not_found",
"message": "No project with that slug.",
"request_id": "req_a1b2c3d4e5f6"
}Limites de débit
Les requêtes authentifiées sont limitées à 300/minute (30/minute sans authentification). Chaque réponse indique le budget courant pour ralentir avant d’être limité :
X-RateLimit-LimitRequêtes permises dans la fenêtre courante.X-RateLimit-RemainingRequêtes restantes avant un 429.X-RateLimit-ResetSecondes Unix avant la réinitialisation de la fenêtre.Retry-AfterLors d’un 429, secondes à attendre avant de réessayer.Pagination
Les points de terminaison de liste utilisent une pagination par clé. Passez limit (1–100, défaut 50); la réponse contient un next_cursor. Renvoyez-le comme cursor pour la page suivante. next_cursor est nul à la dernière page. Sans ces paramètres, vous obtenez la page la plus récente, inchangée.
curl "https://api.canner.ca/v1/projects?limit=20" \
-H "Authorization: Bearer cnr_your_token_here"
# → { "projects": [ ... ], "next_cursor": "MjAyNi0w..." }Démarrage rapide
Listez vos projets, puis lancez un déploiement — deux requêtes, n’importe quel client HTTP.
# List projects curl https://api.canner.ca/v1/projects \ -H "Authorization: Bearer $CANNER_TOKEN" # Trigger a deployment curl -X POST https://api.canner.ca/v1/projects/my-site/deploy \ -H "Authorization: Bearer $CANNER_TOKEN"
Vous préférez un terminal ?
La CLI Canner enrobe cette API pour le travail quotidien : canner login enregistre un jeton, canner deploy --follow expédie un répertoire et diffuse le journal de compilation. Ce sont les mêmes points de terminaison en coulisse.
Vous bâtissez un agent IA ? Le fichier llms.txt décrit Canner pour les modèles de langage, et la spécification OpenAPI ci-dessus est prête pour la génération de code et les définitions d’outils.