API pour les vendeurs professionnels
Publiez, mettez à jour et retirez vos annonces automatiquement depuis votre logiciel de stock ou votre site, sans saisie à la main.
Principe
- Chaque annonce est identifiée par votre propre référence (sku) : celle de votre logiciel de stock.
- PUT /listings/{sku} crée l'annonce si elle n'existe pas, et la met à jour sinon. Vous pouvez donc renvoyer tout votre stock sans risque de doublon.
- Les annonces envoyées par l'API suivent exactement les mêmes règles que sur le site : 3 photos minimum, pas de casque, photo de l'étiquette d'homologation pour les gants, protections et airbags, etc.
- Les réponses sont en JSON, en UTF-8. Les prix sont en euros TTC (ex. 89.90).
Clé et adresse
Créez une clé dans Mon compte → Clés API (réservé aux comptes professionnels). Elle commence par rbk_ et ne s'affiche qu'une seule fois : gardez-la comme un mot de passe, côté serveur uniquement.
Adresse de l'API :
https://API-REBECANE/v1
Chaque requête porte la clé dans l'en-tête Authorization :
Authorization: Bearer rbk_votre_cle
L'en-tête X-Api-Key: rbk_… est aussi accepté.
Liste des appels
| Méthode | Chemin | Rôle |
|---|---|---|
| GET | /me | Vérifier la clé : votre société, nombre d'annonces |
| GET | /catalog/categories | Types de pièces et d'équipement, avec leur code (ex. freinage/etrier) |
| GET | /catalog/brands | Marques de motos |
| GET | /catalog/models?brand=bmw&q=1250&year=2020 | Modèles de motos et leur id, pour la compatibilité |
| GET | /listings?page=1&per_page=100&status=published | Vos annonces (500 par page maximum) |
| GET | /listings/{sku} | Une annonce |
| PUT | /listings/{sku} | Créer ou remplacer une annonce (tous les champs) |
| PATCH | /listings/{sku} | Modifier quelques champs (ex. stock, prix) |
| DELETE | /listings/{sku} | Supprimer une annonce (impossible si elle a été vendue sur Rebécane) |
| POST | /listings/batch | Créer ou remplacer jusqu'à 25 annonces en un appel |
Dans les chemins, {sku} est votre référence (jusqu'à 64 caractères ; encodez-la si elle contient des espaces ou des barres obliques). La référence Rebécane (RBC-000123) est aussi acceptée.
Champs d'une annonce
| Champ | Type | Description |
|---|---|---|
| kind | texte | Obligatoire. piece ou equipement |
| condition | texte | Obligatoire. comme_neuf, tres_bon, bon, a_reviser ou pour_pieces |
| price | nombre | Obligatoire. Prix TTC en euros, de 1 à 100 000 |
| stock | entier | Quantité disponible (1 par défaut). 0 retire l'annonce de la vente |
| status | texte | published (par défaut) ou paused (retirée de la vente) |
| title | texte | 120 caractères maximum. Généré automatiquement s'il est absent (ex. « Étrier BMW R 1250 RT 2020 ») |
| description | texte | État, défauts, essais réalisés… 5 000 caractères maximum |
| photos | liste d'adresses | 3 minimum pour publier, 12 maximum. La première est la photo principale. Voir Photos |
| Pièce (kind = piece) | ||
| part | texte | Obligatoire (ou part_subcategory_id). Code du type de pièce, ex. moteur/culasse |
| origin_model_id | entier | Moto sur laquelle la pièce a été démontée (id du catalogue). Elle est ajoutée automatiquement aux compatibilités |
| origin_year | entier | Année de cette moto |
| origin_km | entier | Kilométrage de cette moto |
| oem_ref | texte | Numéro d'origine constructeur |
| compat | liste | Autres modèles compatibles : [543, 544] ou [{"model_id": 543, "year_from": 2019, "year_to": 2021}] (200 maximum) |
| Équipement (kind = equipement) | ||
| gear | texte | Obligatoire (ou gear_subcategory_id). Code de l'article, ex. gants/gants-hiver |
| gear_brand | texte | Marque, ex. Furygan |
| size | texte | Taille, ex. L, 52, 10 |
| gender | texte | homme, femme, unisexe ou enfant |
| homologation | texte | Ex. EN 17092 classe AA |
| label_photo | adresse | Photo de l'étiquette d'homologation : obligatoire pour les gants, protections et airbags |
| has_fallen | booléen | Protections et airbags : false obligatoire (les articles ayant subi une chute sont refusés) |
La réponse renvoie l'annonce complète, dont sa référence Rebécane ref et son adresse url sur le site.
Photos
Donnez l'adresse publique de chaque photo (votre site, votre logiciel, un hébergement d'images). Rebécane télécharge l'image une seule fois et la conserve : si vous renvoyez la même adresse lors d'une mise à jour, elle n'est pas retéléchargée. Pour changer une photo, changez son adresse (ex. ajoutez ?v=2).
- Formats : JPEG, PNG ou WebP, 5 Mo maximum par image.
- Photos de l'article réel : vue d'ensemble, détails, défauts. Pas de photo de catalogue.
- Une photo inaccessible fait échouer l'appel (erreur 422, champ photos) : l'annonce n'est pas modifiée.
Exemples
Vérifier la clé
curl https://API-REBECANE/v1/me \
-H "Authorization: Bearer rbk_votre_cle"
Trouver l'id d'un modèle
curl "https://API-REBECANE/v1/catalog/models?brand=bmw&q=R%201250%20RT" \
-H "Authorization: Bearer rbk_votre_cle"
[ { "id": 543, "marque": "BMW", "modele": "R 1250 RT", "slug": "r-1250-rt",
"annee_debut": 2018, "annee_fin": null, "cylindree": 1254 } ]
Publier une pièce
curl -X PUT https://API-REBECANE/v1/listings/ETR-4471 \
-H "Authorization: Bearer rbk_votre_cle" \
-H "Content-Type: application/json" \
-d '{
"kind": "piece",
"part": "freinage/etrier",
"condition": "tres_bon",
"price": 120,
"stock": 1,
"origin_model_id": 543,
"origin_year": 2020,
"origin_km": 18000,
"oem_ref": "34 11 8 529 909",
"description": "Étrier avant droit, plaquettes à 50 %.",
"photos": [
"https://www.votre-casse.fr/photos/4471-1.jpg",
"https://www.votre-casse.fr/photos/4471-2.jpg",
"https://www.votre-casse.fr/photos/4471-3.jpg"
]
}'
Réponse 201 (créée) ou 200 (mise à jour) :
{
"ref": "RBC-000187",
"sku": "ETR-4471",
"status": "published",
"title": "Étrier BMW R 1250 RT 2020",
"price": 120,
"stock": 1,
"url": "/annonce/RBC-000187-etrier-bmw-r-1250-rt-2020",
…
}
La pièce est vendue en boutique : mettre le stock à zéro
curl -X PATCH https://API-REBECANE/v1/listings/ETR-4471 \
-H "Authorization: Bearer rbk_votre_cle" \
-H "Content-Type: application/json" \
-d '{"stock": 0}'
Publier des gants
{
"kind": "equipement",
"gear": "gants/gants-hiver",
"gear_brand": "Bering",
"size": "10",
"gender": "homme",
"homologation": "EN 13594",
"condition": "bon",
"price": 40,
"photos": ["https://…/g1.jpg", "https://…/g2.jpg", "https://…/g3.jpg"],
"label_photo": "https://…/g-etiquette.jpg"
}Erreurs et limites
| Code | Signification |
|---|---|
| 400 | Requête mal formée (JSON invalide, paramètre manquant) |
| 401 | Clé absente, invalide ou supprimée |
| 403 | Le compte n'est plus un compte professionnel |
| 404 | Annonce ou chemin inconnu |
| 409 | Action impossible (annonce déjà vendue sur Rebécane) |
| 422 | Annonce refusée : la liste errors indique chaque champ en cause |
| 429 | Plus de 300 requêtes par minute avec la même clé : attendez une minute |
HTTP 422
{
"error": "annonce_invalide",
"errors": [
{ "field": "photos", "message": "3 photos minimum pour publier : vue d'ensemble, détails, défauts." },
{ "field": "price", "message": "Prix entre 1 € et 100 000 €." }
]
}Synchroniser un stock
- Pour chaque pièce de votre stock : PUT /listings/{votre référence} (ou par lots de 25 avec POST /listings/batch).
- Quand une pièce est vendue ailleurs : PATCH avec {"stock": 0}, ou DELETE.
- Une fois par jour, comparez GET /listings avec votre stock pour retirer les annonces oubliées.
Les ventes réalisées sur Rebécane seront bientôt signalées automatiquement à votre logiciel (notification d'une nouvelle commande).
Une question technique ? Contactez-nous.