Rectofil Guides Discord Créer mon compte

API Rectofil v1

Lecture des ventes d'un compte Rectofil par une application tierce.

URL de basehttps://rectofil.com/api/v1
FormatJSON, UTF-8
Authentificationclé d'accès, en-tête Authorization: Bearer
Accèslecture seule, ventes du compte titulaire de la clé

Sommaire

  1. Authentification
  2. Lister les ventes
  3. Objet Sale
  4. Pagination
  5. Synchronisation
  6. Erreurs
  7. Limites
  8. Versions

1. Authentification

Chaque requête porte une clé d'accès dans l'en-tête Authorization :

Authorization: Bearer rf_<43 caractères>
PropriétéValeur
Formatpréfixe rf_ suivi de 43 caractères base64url (46 au total)
Émissionpar le titulaire du compte, dans Rectofil : Réglages > Mon compte > Accès pour une autre application
Affichageune seule fois, à la création. Rectofil n'en conserve que l'empreinte
Portéelecture des ventes du compte émetteur, rien d'autre
Révocationà tout moment par le titulaire ; effet immédiat (réponse 401)
Nombre5 clés actives au plus par compte

La clé doit rester côté serveur et être stockée chiffrée. Elle n'est jamais acceptée en paramètre d'URL.

2. Lister les ventes

GET /api/v1/sales

Renvoie les ventes du compte, triées par date de vente croissante (sold_at, puis id).

Paramètres de requête

NomTypeRequisDéfautDescription
sincedate ISO 8601nonVentes à partir de cet instant, inclus
untildate ISO 8601nonVentes avant cet instant, exclu
limitentiernon100Nombre de ventes par page, de 1 à 500
cursorchaînenonValeur next_cursor de la page précédente

Formats de date acceptés : date seule, 2026-10-01 (minuit UTC), ou date et heure avec fuseau, 2026-10-01T08:00:00Z ou 2026-10-01T10:00:00+02:00.

Exemple

curl "https://rectofil.com/api/v1/sales?since=2026-10-01&limit=200" \
  -H "Authorization: Bearer rf_..."

Réponse 200 OK

{
  "sales": [
    {
      "id": "sal_gscbzssstrgd",
      "sold_at": "2026-10-01T10:00:00Z",
      "platform": "vinted",
      "title": "L’Étranger",
      "authors": "Albert Camus",
      "isbn": "9782070360024",
      "quantity": 1,
      "price_cents": 1200,
      "currency": "EUR"
    }
  ],
  "next_cursor": null
}
ChampTypeDescription
salestableau de SaleVentes de la page
next_cursorchaîne ou nullCurseur de la page suivante ; null sur la dernière page

En-tête de réponse : Cache-Control: no-store.

3. Objet Sale

ChampTypeDescription
idchaîneIdentifiant unique et stable de la vente
sold_atdate ISO 8601, UTCDate et heure de la vente
platformchaînePlateforme de la vente : vinted, leboncoin, bookvillage
titlechaîneTitre du livre
authorschaîneAuteurs, séparés par des virgules ; chaîne vide si inconnus
isbnchaîne ou nullISBN-13 ; null si inconnu
quantityentierNombre d'exemplaires vendus
price_centsentierPrix payé par l'acheteur pour l'article, hors frais de port, en centimes
currencychaîneCode devise ISO 4217 (EUR)

Aucune donnée relative à l'acheteur n'est exposée.

4. Pagination

Pagination par curseur. Pour lire l'ensemble des résultats, répéter la requête avec cursor égal au next_cursor reçu, en conservant les mêmes since, until et limit, jusqu'à obtenir next_cursor: null.

Le curseur est opaque : ne pas l'interpréter ni le construire.

5. Synchronisation

Une vente peut être corrigée ou supprimée (doublon) après sa création. Méthode recommandée :

  1. Lire la fenêtre des 30 derniers jours (since = date du jour moins 30 jours), toutes pages comprises.
  2. Insérer ou mettre à jour chaque vente par id.
  3. Supprimer de votre côté les ventes de la fenêtre absentes de la réponse.

6. Erreurs

Corps d'erreur :

{ "error": "Clé d’accès absente, invalide ou révoquée." }

Le message est destiné à un humain, en français ; ne pas le parser. Se fonder sur le code HTTP.

CodeSignificationConduite
400Paramètre invalide (date, limit, curseur)Corriger la requête
401Clé absente, invalide ou révoquée. En-tête WWW-Authenticate: BearerDemander une nouvelle clé au titulaire ; ne pas réessayer
429Limite de débit atteinte. En-tête Retry-After en secondesAttendre la durée indiquée
5xxErreur du serviceRéessayer plus tard avec un délai croissant

7. Limites

LimiteValeur
Requêtes par clé120 par minute
Requêtes avec une clé invalide, par adresse IP30 par minute, puis 429
Taille de page500 ventes

8. Versions

La version figure dans le chemin (/api/v1). Dans une même version, des champs peuvent être ajoutés aux réponses et de nouvelles valeurs peuvent apparaître dans platform : le client doit ignorer les champs inconnus et tolérer les valeurs inconnues. Toute modification incompatible fera l'objet d'une nouvelle version.