Documentation Officielle REST API & Intégrations
Guide complet et exhaustif pour connecter votre moteur e-commerce à Rank212 : intégrez l'intelligence SEO par IA, les micro-données Google Schema.org et la synchronisation automatique bilingue (Arabe & Français) sur YouCan, WooCommerce, Laravel, Shopify ou via notre API REST Headless.
Intégration YouCan.shop (Webhooks & 2-Way Sync API)
L'intégration de YouCan.shop avec Rank212 fonctionne de manière 100% cloud et ne nécessite aucun plugin à installer. Dès qu'un produit est créé ou modifié dans votre boutique YouCan, un webhook déclenche l'optimisation SEO par IA. Si vous configurez votre jeton d'accès vendeur (Seller Token), Rank212 réinjecte automatiquement le meta_title et la meta_description dans votre catalogue YouCan.
Détection Automatique
Le webhook YouCan envoie les données de chaque produit à Rank212 dès qu'il est créé ou modifié.
Génération SEO IA
L'IA génère en temps réel des métadonnées percutantes en Arabe/Darija ou Français avec les balises Schema.org.
Mise à Jour YouCan
Rank212 envoie une requête PUT à l'API Vendeur YouCan pour mettre à jour la fiche en direct.
1 Configuration des Webhooks dans YouCan
Dans votre espace vendeur YouCan > Paramètres > Webhooks (ou Applications), cliquez sur Ajouter un Webhook et configurez les 2 adresses ci-dessous :
product.created)
POST JSON
product.updated)
POST JSON
2 Activation de la Synchronisation Bidirectionnelle (Seller REST API)
Pour que Rank212 applique directement le SEO dans votre boutique YouCan :
- Rendez-vous dans votre compte YouCan > Paramètres > Développeurs / Clés d'API.
- Générez un Personal Access Token (Seller API Token) avec les permissions de lecture/écriture sur les produits.
- Rendez-vous sur votre tableau de bord Rank212 > Boutiques > Votre Boutique YouCan, puis entrez votre Store ID et votre Seller Access Token.
PUT https://seller-api.youcan.shop/products/{youCanProductId}
Headers:
Authorization: Bearer yc_sec_token_votre_cle_vendeur
Content-Type: application/json
Body:
{
"meta_title": "قفطان مغربي أصيل حرير مطرز | توصيل سريع بالمغرب",
"meta_description": "اكتشفي تشكيلة القفطان المغربي الأصيل المصنوع يدوياً بأجود أنواع الحرير. اشتري الآن مع الدفع عند الاستلام."
}
3 Balises Schema.org Rich Snippets pour Thèmes YouCan (Optionnel)
Pour afficher les avis, le prix en Dirhams (MAD) et la disponibilité en stock directement dans les résultats Google, ajoutez ce snippet dans Boutique en ligne > Paramètres du thème > Scripts d'en-tête (Header scripts) :
<!-- Rank212 Dynamic Schema.org SEO for YouCan -->
<script>
window.addEventListener('DOMContentLoaded', function() {
var apiKey = '';
var apiUrl = '/api/v1/optimizations';
// Charge et injecte les données structurées Google Product
});
</script>
Extension Officielle WooCommerce Rank212
L'extension officielle Rank212 SEO pour WooCommerce s'installe en 2 minutes dans votre administration WordPress. Entièrement compatible avec le stockage haute performance de WooCommerce (HPOS) et compatible avec les sites multilingues (WPML, Polylang).
Installer le .ZIP
Dans WordPress, allez dans Extensions > Ajouter, téléversez le fichier rank212-wordpress.zip puis cliquez sur Activer.
Lier la Clé API
Allez dans WooCommerce > Réglages > Rank212 SEO, collez l'URL API et votre Clé API secrète, puis cliquez sur Tester la connexion.
Optimisation Instantanée
Chaque publication ou mise à jour de produit déclenche instantanément l'analyse et met à jour les balises du produit.
Hooks et Événements WordPress utilisés :
• woocommerce_update_product et woocommerce_new_product : déclenchent la synchronisation temps réel avec Rank212.
• wp_head : injecte automatiquement le balisage structuré <script type="application/ld+json"> conforme à Google Search Central.
• bulk_actions-edit-product : ajoute l'option d'optimisation par lot directement dans le tableau des produits WooCommerce.
L'extension détecte automatiquement la langue du produit via WPML (wpml_current_language) ou Polylang (pll_get_post_language). Si le produit est en Arabe, les métadonnées sont générées en Arabe/Darija avec les mots-clés marocains ciblés ; s'il est en Français, elles sont générées en Français avec le vocabulaire e-commerce adapté.
Package Client Laravel Rank212
Pour vos applications Laravel sur-mesure (Marketplaces, ERP e-commerce, applications Livewire ou Inertia), utilisez notre package officiel rank212/laravel-seo pour brancher l'optimisation directement sur vos modèles Eloquent.
1. Installation et Configuration du .env
composer require rank212/laravel-seo php artisan vendor:publish --tag=seo-config php artisan vendor:publish --tag=seo-migrations php artisan migrate
.env :
RANK212_API_KEY= RANK212_API_URL= RANK212_AUTO_SYNC=true RANK212_QUEUE=default
2. Intégration sur le Modèle Product (Trait Eloquent)
Ajoutez le trait HasRank212Seo à votre modèle de produit Eloquent :
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Rank212\LaravelSeo\Traits\HasRank212Seo;
class Product extends Model
{
use HasRank212Seo;
// Optionnel : personnalisez les champs transmis à Rank212
public function toSeoPayload(): array
{
return [
'title' => $this->title,
'description' => $this->description,
'price' => $this->price,
'currency' => 'MAD',
'image_url' => $this->featured_image_url,
'language' => app()->getLocale(),
];
}
}
3. Rendu Frontend dans les Vues Blade (<head>)
Affichez automatiquement les balises Open Graph, Meta Titre, Meta Description et Schema.org JSON-LD :
<!-- Dans votre layout resources/views/layouts/app.blade.php -->
<head>
<title>{{ $product->seo_title ?? $product->title }}</title>
<x-rank212-meta :model="$product" />
<x-rank212-schema :model="$product" />
</head>
4. Commandes Artisan en Ligne de Commande
Intégration Shopify Webhooks
Connectez votre boutique Shopify grâce à nos endpoints de webhooks sécurisés avec vérification cryptographique HMAC SHA-256.
Configuration dans Shopify Admin :
Dans votre tableau de bord Shopify > Paramètres > Notifications > Webhooks, créez deux webhooks pointant vers :
Vue d'ensemble & URL Racine de l'API
L'API REST de Rank212 est conçue selon les standards RESTful stricts. Toutes les requêtes doivent être envoyées via HTTPS. Les charges utiles (payloads) et réponses sont systématiquement au format JSON (UTF-8).
https://rank212.tech/api/v1
Authentification & En-têtes Requis
Pour authentifier vos requêtes, vous devez transmettre la Store API Key de votre boutique dans l'en-tête HTTP X-API-Key.
| En-tête (Header) | Valeur requise | Description |
|---|---|---|
| X-API-Key | sk_live_votre_cle_api_secrete | Clé secrète de la boutique (générée lors de la création de la boutique). |
| Content-Type | application/json | Requis pour toutes les requêtes POST contenant un corps JSON. |
| Accept | application/json | Garantit que les réponses et messages d'erreur sont retournés en JSON. |
Générer / Optimiser le SEO d'un Produit
Point d'entrée principal pour soumettre une fiche produit. Notre moteur d'IA génère en temps réel des métadonnées bilingues (Arabe/Darija ou Français), le balisage Schema.org Product, le texte alternatif de l'image et calcule le score SERP prédictif.
Paramètres du Corps de Requête (JSON Body) :
| Champ | Type | Statut | Description |
|---|---|---|---|
| external_product_id | string | Requis | ID unique du produit dans votre boutique (ex: ID WooCommerce, YouCan ou SKU). |
| title | string | Requis | Titre ou nom du produit brut (ex: "Caftan Royal Soie de Fès"). |
| description | string | Optionnel | Description du produit. L'IA l'utilise pour extraire les caractéristiques clés. |
| price | numeric | Optionnel | Prix de vente pour les données structurées Schema.org Offers. |
| currency | string | Optionnel | Devise (défaut : MAD). |
| language | string | Optionnel | Langue cible du SEO : ar (arabe/darija) ou fr (français). Défaut: ar. |
| image_url | string (url) | Optionnel | URL HTTPS de la photo principale pour générer le ALT et OpenGraph. |
| categories | array | Optionnel | Tableau de chaînes de caractères (ex: ["Caftans", "Mariage"]). |
| async | boolean | Optionnel | Si true, retourne immédiatement 202 Accepted et traite en tâche de fond. |
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "X-API-Key: " \
-d '{
"external_product_id": "101",
"title": "Caftan Royal Soie de Fès",
"description": "Caftan traditionnel marocain brodé main en fil d\u0027or.",
"price": 1450,
"currency": "MAD",
"language": "ar",
"categories": ["Caftans", "Mariage"],
"image_url": "https://example.com/images/caftan.jpg"
}'
const response = await fetch('', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
'X-API-Key': ''
},
body: JSON.stringify({
external_product_id: '101',
title: 'Caftan Royal Soie de Fès',
price: 1450,
currency: 'MAD',
language: 'ar'
})
});
const data = await response.json();
console.log(data.data.meta_title);
<?php
$payload = [
'external_product_id' => '101',
'title' => 'Caftan Royal Soie de Fès',
'price' => 1450,
'currency' => 'MAD',
'language' => 'ar'
];
$ch = curl_init('');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Accept: application/json',
'X-API-Key: ' . ''
]);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
$response = curl_exec($ch);
curl_close($ch);
$result = json_decode($response, true);
import requests
url = ''
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'X-API-Key': ''
}
payload = {
'external_product_id': '101',
'title': 'Caftan Royal Soie de Fès',
'price': 1450,
'currency': 'MAD',
'language': 'ar'
}
response = requests.post(url, json=payload, headers=headers)
data = response.json()
print(data['data']['meta_title'])
{
"success": true,
"data": {
"external_product_id": "101",
"meta_title": "قفطان ملكي أصيل من حرير فاس مطرز باليد | شحن مجاني بالمغرب",
"meta_description": "اكتشفي فخامة القفطان الملكي المصنوع من حرير فاس الأصلي مع تطريز يدوي متقن بخيوط الصقلي الفاخر. الدفع عند الاستلام.",
"focus_keywords": [
"قفطان مغربي",
"قفطان حرير فاس",
"قفطان زفاف تقليدي"
],
"image_alt_text": "قفطان ملكي من حرير فاس مطرز باليد للمناسبات الفاخرة",
"og_tags": {
"og:title": "قفطان ملكي أصيل حرير فاس",
"og:description": "اكتشفي فخامة القفطان المغربي الأصيل المصنوع يدوياً.",
"og:image": "https://example.com/images/caftan.jpg"
},
"schema_json_ld": {
"@context": "https://schema.org",
"@type": "Product",
"name": "Caftan Royal Soie de Fès",
"description": "Caftan traditionnel marocain brodé main en fil d'or.",
"offers": {
"@type": "Offer",
"price": 1450,
"priceCurrency": "MAD",
"availability": "https://schema.org/InStock"
}
},
"score": 96,
"status": "completed",
"generated_at": "2026-09-25T11:00:00Z"
}
}
Optimisation par Lot (Batch)
Permet d'envoyer jusqu'à 50 produits dans un seul appel réseau. Les tâches sont distribuées dans notre file d'attente Redis de haute performance sans faire attendre votre boutique.
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "X-API-Key: " \
-d '{
"products": [
{ "external_product_id": "101", "title": "Produit 1", "price": 250 },
{ "external_product_id": "102", "title": "Produit 2", "price": 490 }
]
}'
{"success": true, "status": "queued", "count": 2}
Consulter les Métadonnées en Cache
Récupère instantanément le SEO généré pour un produit donné sans consommer de crédit d'IA supplémentaire.
curl -X GET \ -H "Accept: application/json" \ -H "X-API-Key: "
Consommation & Quota Restant
Vérifiez la validité de votre clé API, votre formule d'abonnement et le nombre de crédits de fiches produits restants pour le mois.
curl -X GET \ -H "Accept: application/json" \ -H "X-API-Key: "
{
"success": true,
"data": {
"store_name": "Ma Boutique",
"monthly_quota": 500,
"usage_count": 42,
"remaining_quota": 458,
"usage_percentage": 8.4,
"is_active": true
}
}
Flux Sitemap XML Dynamique
Chaque boutique dispose d'une URL publique pour son plan de site XML généré automatiquement avec les URL des fiches produits, images et balises hreflang. Vous pouvez soumettre directement cette adresse à Google Search Console.
Récapitulatif des Webhooks Automatisés
Si vous utilisez YouCan ou Shopify, configurez ces URL de Webhooks pour déclencher l'optimisation SEO automatique sans aucune ligne de code supplémentaire :
Codes d'Erreurs HTTP & Diagnostic
| Code HTTP | Signification | Solution recommandée |
|---|---|---|
| 200 OK | Succès | Requête traitée et métadonnées retournées. |
| 202 Accepted | Mis en file d'attente | Le traitement asynchrone est en cours dans le worker Redis. |
| 401 Unauthorized | Clé API manquante ou invalide | Vérifiez la présence du header X-API-Key. |
| 422 Unprocessable | Erreur de validation | Vérifiez que external_product_id et title sont bien renseignés. |
| 429 Too Many Requests | Quota mensuel atteint ou rate limit | Mettez à niveau votre formule d'abonnement ou espacez vos requêtes. |