API SnapCost
Une API REST claire pour les reçus, les factures et les rapports prêts pour la fiscalité. JSON entrant, JSON sortant. Auth par jeton Bearer. Conçue pour les comptables, les intégrations ERP et vos propres automatisations.
URL de base
https://snapcost.app/api
Format
Corps de requête et de réponse en JSON, UTF-8.
Authentification
HTTP Bearer avec une clé API.
Forfait
L'accès à l'API nécessite le forfait Business.
Authentification
Chaque requête doit inclure un en-tête Authorization portant votre clé API.
Authorization: Bearer sk_live_••••••••••••••••••••••••••••••••
Les clés API sont liées à un seul compte SnapCost et héritent des permissions et limites de ce compte. Elles se comportent comme une session utilisateur authentifiée — il n'existe aujourd'hui aucun système de portée séparé.
Gestion des clés API
Générez, listez et révoquez vos clés depuis le tableau de bord SnapCost, ou utilisez les endpoints de gestion ci-dessous (ces endpoints exigent un JWT connecté, pas une clé API, pour empêcher toute escalade de privilèges).
Créer une clé
POST /api/keys
Content-Type: application/json
{ "name": "Zapier production" }
Réponse
{
"id": "9c1f…",
"name": "Zapier production",
"prefix": "sk_live_AbC",
"plaintext": "sk_live_AbCDeFGhIJKlMnOPqRsTUVwxYZ0123456789…",
"createdAt": "2026-04-21T10:42:18.000Z",
"note": "Store this key now — the full value will not be shown again."
}
La clé en clair complète n'est renvoyée qu'une seule fois, à la création. SnapCost stocke un hash SHA-256 et ne peut pas récupérer la valeur originale. Limite : 10 clés actives par compte.
Démarrage rapide
curl https://snapcost.app/api/receipts \
-H "Authorization: Bearer $SNAPCOST_API_KEY"
const res = await fetch('https://snapcost.app/api/receipts', {
headers: { Authorization: `Bearer ${process.env.SNAPCOST_API_KEY}` },
});
const { receipts } = await res.json();
import os, requests
r = requests.get(
"https://snapcost.app/api/receipts",
headers={"Authorization": f"Bearer {os.environ['SNAPCOST_API_KEY']}"},
)
receipts = r.json()["receipts"]
Reçus
Les reçus sont des dépenses scannées ou saisies manuellement.
Créer un reçu
| Champ | Type | Notes | |
|---|---|---|---|
merchant | string | requis | Nom du marchand |
amount | number | requis | Montant total dans currency |
currency | string | optionnel | ISO 4217, défaut : devise de votre compte |
date | string | requis | Date ISO (AAAA-MM-JJ) |
category | string | optionnel | p. ex. travel, meals |
notes | string | optionnel | Mémo libre |
Factures
Factures et devis émis à vos clients. Les comptes Pro+ accèdent aussi aux endpoints Factur-X / PDP / e-reporting.
Rapports
Générez des récapitulatifs prêts pour la fiscalité sur n'importe quelle plage de dates.
Erreurs
SnapCost utilise les codes HTTP standards. Les échecs renvoient toujours du JSON avec un champ error, parfois un message, et à l'occasion un upgradeUrl quand un forfait payant est requis.
| Statut | Signification |
|---|---|
| 400 | Requête mal formée — paramètres manquants ou invalides |
| 401 | Clé API / jeton manquant, invalide ou révoqué |
| 402 | Quota du forfait gratuit épuisé — mise à niveau requise |
| 403 | Endpoint nécessitant un forfait supérieur (p. ex. Pro+) |
| 404 | Ressource introuvable ou non détenue par votre compte |
| 429 | Trop de requêtes — voir les limites de débit ci-dessous |
| 5xx | Erreur serveur transitoire — ré-essayer avec backoff |
Limites de débit
Limite par défaut : 100 requêtes par minute par IP, appliquée à tous les endpoints /api/*. Les endpoints d'authentification sont plus stricts. Pour augmenter, contactez le support avec votre cas d'usage.
Versions
L'API actuelle est sans version et strictement additive — nous ajoutons champs et endpoints sans casser les clients existants. Toute rupture sera publiée sous un nouveau préfixe /api/v2/… avec une période de dépréciation d'au moins 6 mois.