Tout ce que vous devez savoir pour commencer à utiliser l'API TikTak PRO
URL de base
https://api.tiktakpro.com/api/v1
Authentification
Authorization: Token YOUR_API_TOKEN
💡 Note importante : Toutes les requêtes doivent inclure le header d'autorisation avec votre token d'API.
Documentation complète des APIs
Toutes les APIs disponibles avec exemples et paramètres détaillés
GET
/orders/{id}/
Détails d'une commande
POST
/update-order-status/
Mettre à jour le statut
PATCH
/orders/{id}/
Modifier le statut (PATCH)
POST
/back-order/
Créer / modifier une commande
GET
/products/
Lister les produits
GET
/products/{id}/
Détails d'un produit
GET
/product-variations/{id}/
Lire un produit avec ses déclinaisons
POST
/product-variations/create/
Créer un produit (payload complet)
SCHEMAObjet déclinaisonStructure et règles sur attributs
PUT
/product-variations/{id}/
Modifier un produit et ses déclinaisons
DELETE
/product-variations/{id}/
Supprimer un produit
PUT
/products/{variant_id}/
Mise à jour rapide d'une déclinaison
MODULESContenu & produits associésEndpoints liés à la fiche produit
NOTESPoints de vigilance produits
GETPOSTPATCH
/website/customers/
GETPOSTPATCH
/website/addresses/
Pack développeur
Storefront TikTak — générez votre boutique avec Claude
Générez un site vitrine + checkout COD branché sur l'API TikTak, avec un design totalement libre. Le backoffice (produits, stock, commandes, upsells) ne change pas.
STOREFRONT_API.md
Documentation humaine : logique complète + les 17 endpoints du storefront.
llms.txt
Contrat Storefront complet en texte brut, à coller dans un Projet Claude.ai comme base de connaissance.
Skill Cursor / Claude, à copier dans .cursor/skills/ du projet.
Démarrer avec Claude / Cursor
Copier tiktak-storefront/ vers .cursor/skills/tiktak-storefront/ du projet client.
(Claude.ai) coller llms.txt dans la connaissance du projet.
Utiliser le prompt type ci-dessous.
Fournir le slug boutique (sous-domaine *.tiktak.space) ou le domaine custom.
Génère une boutique (Next.js ou Nuxt) pour TikTak.
Slug {slug} ou domaine {domaine}. API https://api.tiktakpro.com/api/v1/
Suis le skill tiktak-storefront : bootstrap, catalogue, panier local,
checkout COD, upsell, confirmation. N'invente aucun endpoint.
La création de commande doit toujours être signée par la clé de
sécurité de la boutique, côté serveur uniquement.
🔐 Règle non négociable : la clé de sécurité
Toute réception de commande doit obligatoirement inclure la clé de sécurité de la boutique.
Une requête sans clé, ou avec une clé invalide, est rejetée — aucune commande n'est enregistrée.
La clé ne doit jamais apparaître dans le code front, le bundle JS ou une variable publique.
Le checkout appelle une route serveur de votre boutique, qui seule ajoute la clé avant d'appeler l'API TikTak.
En cas de fuite suspectée : régénérer immédiatement la clé depuis le backoffice.
Paiement en ligne (Flouci, Konnect…), compte client / login / VIP, wishlist, panier abandonné, CAPI Facebook, zones de livraison dynamiques signées, MCP.
Contrat Storefront — Phase 1 (MVP)
Le backoffice TikTak reste la source de vérité (produits, stock, transporteurs, upsells, réglages). Le site généré ne fait que consommer ces endpoints. Base URL : https://api.tiktakpro.com/api/v1/ — lecture publique, toujours passer company (hashid boutique).
Identifiants
Entité
Type d'id
Exemple
Boutique (company)
Hashid string
8GPmlML
Produit, variante, catégorie, transport, page
Entier
4218
Upsell
Hashid string
XyZ1
Commande (order_code = order_ref)
String
K7P2M
Ne jamais inventer d'id : toujours les lire dans les réponses.
Pagination (listes DRF)
Query : ?page=1&size=20 (size max 1000, défaut 10). Utiliser size, jamais page_size ni limit.
Domaine / slug
├─ GET get-store/ → company.id, currency, works_with_transport
└─ GET website/informations-read/ → store_settings (checkout, COD, formulaire)
├─ menus, homepage (optionnel), catalogue
Panier = localStorage (aucun endpoint panier)
├─ GET transports-read/ si works_with_transport
└─ POST website/get-auto-discount
POST create-fast-order/ payement_type = CASH
├─ upsell_id → GET upsell + offre → POST update-order-upsell | refuser
└─ sinon → confirmation
GET get-order-by-idref/{order_ref}/{company}
Le backend recalcule les totaux : total_amount envoyé est indicatif. Prix, remise, transport et stock sont repris côté serveur.
Bootstrap
Identifier la boutique par slug (boutique.tiktak.space → boutique) ou par domaine custom (?server=www.client.tn). GET get-store/ renvoie id (hashid), name, slug, logo, currency, works_with_transport, store_activated (403 si introuvable).
GET website/informations-read/ renvoie un objet : store_settings.cash_on_delivery, default_payement_type, formCheckout (champs dynamiques), checkout_message, seo_settings, css_settings, stock_settings.
Si formCheckout est vide, afficher un formulaire par défaut : nom, téléphone, adresse, gouvernorat. Navigation : GET website/menus-read/?company={id}&position=header&active=true (prendre [0].menus).
Fusionner les lignes de même product_id (+ mêmes options). subtotal = somme des final_price ; total = subtotal - discount + transport_price.
Livraison et remises
Si company.works_with_transport : GET transports-read/?company={id} (use_for_web=true, active=true). Choisir le transporteur default, envoyer order.transport_id.
Prix custom produit : si tous les articles ont custom_delivery_price, port = max(delivery_price) ; sinon max(custom…, transporteur.price).
Phase 1 : ne pas implémenter delivery_quote_token / transport_key=delivery_zone_dynamic.
POST website/get-auto-discount
{
"slug": "ma-boutique",
"details": [
{ "product_id": 4218, "product_parent_id": 4218, "quantity": 1, "final_price": 39.9 }
],
"code": "",
"delivery_price": 7
}
// Réponse Phase 1 : un nombre = montant de remise (pas un %)
code vide → remise automatique boutique ; code renseigné → code promo. Au checkout, n'envoyer promo_code que pour un vrai code saisi (l'auto-remise envoie "").
Obligatoire — challenge checkout : aucune commande ne peut être créée sans un challenge checkout déjà en place. Tout front custom doit l'implémenter avant d'appeler create-fast-order/ :
Fingerprint navigateur obligatoire dans meta_data.fingerprint.id (stable par appareil).
Rate-limit actif : la commande est comptée par IP + fingerprint ; un dépassement renvoie 429.
L'IP réelle du client doit être transmise dans meta_data.client_ip via votre proxy serveur.
Sur 429 : afficher une page succès factice, ne pas vider le panier, ne pas révéler le blocage.
Une requête sans fingerprint ni challenge est considérée comme non conforme et peut être rejetée.
Rappel : la création de commande doit toujours passer par une route serveur de votre boutique (proxy), qui seule injecte la clé de sécurité et l'IP client. Jamais de clé dans le bundle JS.
Upsell (COD uniquement) et confirmation
GET website/upsell/{company}/{upsell_id} — text_upsell, product_to_propose, discount (montant, pas %), free_shipping.
GET get-order-by-idref/{order_ref}/{company} — commande déjà créée.
GET products-read/?ids_in={product_to_propose}&company=… — prix barré = price, prix offre = price - discount.
Confirmation : GET get-order-by-idref/{order_ref}/{company} — afficher order_code, created_at, coordonnées, details[], transport_price, discount, total_after_discount et le checkout_message du store (404 si ref inconnue).
Catalogue des 17 endpoints Storefront
Méthode
Chemin
Rôle
GET
get-store/
Boutique
GET
website/informations-read/
Réglages store
GET
website/menus-read/
Navigation
GET
website/page-read/
Homepage / pages (page_type ou id)
GET
products-read/
Liste / recherche
GET
products-read/{id}/
Fiche par id
GET
product-by-slug
Fiche par seo_slug
GET
product-extra-read/
Blocs fiche
GET
categories-read/{id}/
Catégorie
GET
category-breadcrumb/{id}/{company}
Fil d'Ariane
GET
transports-read/
Transporteurs web
POST
website/get-auto-discount
Remise
POST
create-fast-order/
Créer commande
GET
get-order-by-idref/{ref}/{company}
Lire commande
GET
website/upsell/{company}/{id}
Config upsell
POST
update-order-upsell
Accepter upsell
GET
website/page-read/{id}/
Page CMS par id
Ne pas appeler d'autres routes (products/, orders/, login-jwt/, stats, Shopify, MCP…).
Pièges à éviter
company est un hashid, pas un entier.
Pas d'endpoint panier — localStorage / Pinia / cookie.
payement_type s'écrit avec un seul « e » (pas payment_type).
order_ref = order_code, pas l'id numérique interne.
Jamais d'upsell après un paiement ONLINE.
discount upsell = montant, pas un pourcentage.
Totaux recalculés côté serveur — ne pas faire confiance au front.
Le challenge checkout est exigé pour tout front custom : meta_data.fingerprint + IP client + rate-limit. Le HMAC X-Checkout-Challenge reste spécifique au store officiel Nuxt.
Le MCP TikTak (mcp.tiktak.space) pilote le thème Nuxt officiel. Ce pack sert à construire un autre front. Implémentation officielle de référence : dépôt store-nuxt.
📋 Statuts de commande disponibles
Utilisez ces codes de statut (slug) pour filtrer ou mettre à jour vos commandes
standby→En attente
confirmed→Confirmée
preparing→En préparation
expd→Expédiée
delivered→Livrée
cancelled→Annulée
abandoned-cart→Panier abandonné
💡 Bonnes pratiques
🔐
Sécurité
Ne partagez jamais votre token d'API. Stockez-le dans des variables d'environnement sécurisées.
⚡
Performance
Utilisez la pagination pour les grandes listes. Mettez en cache les données fréquemment consultées.
🔄
Gestion d'erreurs
Implémentez une gestion robuste des erreurs et des mécanismes de retry pour les requêtes critiques.
📝
Logging
Loguez toutes vos requêtes API pour faciliter le débogage et le monitoring de vos intégrations.
Prêt à commencer ?
Créez votre compte et obtenez votre clé API pour commencer à intégrer TikTak PRO dès maintenant