SnapCost SnapCost API

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é.

Traitez les clés comme des mots de passe. Ne les commitez jamais dans un dépôt et ne les exposez pas dans du code côté navigateur. Régénérez immédiatement si une clé a pu fuiter.

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).

GET/api/keysLister vos clés
POST/api/keysCréer une nouvelle clé
DELETE/api/keys/:idRévoquer une clé

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.

GET/api/receiptsLister les reçus
GET/api/receipts/:idRécupérer un reçu
POST/api/receiptsCréer un reçu
PUT/api/receipts/:idMettre à jour un reçu
DELETE/api/receipts/:idSupprimer un reçu

Créer un reçu

ChampTypeNotes
merchantstringrequisNom du marchand
amountnumberrequisMontant total dans currency
currencystringoptionnelISO 4217, défaut : devise de votre compte
datestringrequisDate ISO (AAAA-MM-JJ)
categorystringoptionnelp. ex. travel, meals
notesstringoptionnelMémo libre

Factures

Factures et devis émis à vos clients. Les comptes Pro+ accèdent aussi aux endpoints Factur-X / PDP / e-reporting.

GET/api/invoicesLister factures & devis
POST/api/invoicesCréer une facture ou un devis
GET/api/invoices/:idRécupérer un élément
PUT/api/invoices/:idMettre à jour
DELETE/api/invoices/:idSupprimer
GET/api/invoices/:id/facturx-pdfTélécharger le PDF Factur-X (Pro+)
POST/api/invoices/:id/pdp/sendSoumettre à la PDP (Pro+)

Rapports

Générez des récapitulatifs prêts pour la fiscalité sur n'importe quelle plage de dates.

GET/api/reportsLister les rapports enregistrés
POST/api/reportsGénérer un rapport
GET/api/reports/:idRécupérer un rapport

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.

StatutSignification
400Requête mal formée — paramètres manquants ou invalides
401Clé API / jeton manquant, invalide ou révoqué
402Quota du forfait gratuit épuisé — mise à niveau requise
403Endpoint nécessitant un forfait supérieur (p. ex. Pro+)
404Ressource introuvable ou non détenue par votre compte
429Trop de requêtes — voir les limites de débit ci-dessous
5xxErreur 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.