Rank212
REST API v1.0.0 JSON Over HTTPS Rate Limit: 60 req/min Multi-Plateformes

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.

Guide E-commerce Maroc 🇲🇦 100% Cloud / Sans Plugin

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.

1

Détection Automatique

Le webhook YouCan envoie les données de chaque produit à Rank212 dès qu'il est créé ou modifié.

2

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.

3

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 :

Événement 1 : Création de produit (product.created) POST JSON
Événement 2 : Modification de produit (product.updated) POST JSON

2 Activation de la Synchronisation Bidirectionnelle (Seller REST API)

Pour que Rank212 applique directement le SEO dans votre boutique YouCan :

  1. Rendez-vous dans votre compte YouCan > Paramètres > Développeurs / Clés d'API.
  2. Générez un Personal Access Token (Seller API Token) avec les permissions de lecture/écriture sur les produits.
  3. Rendez-vous sur votre tableau de bord Rank212 > Boutiques > Votre Boutique YouCan, puis entrez votre Store ID et votre Seller Access Token.
Requête envoyée automatiquement par Rank212 à YouCan :
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>
WordPress & WooCommerce v1.1.0 HPOS Ready

Extension Officielle WooCommerce Rank212

Télécharger l'extension .ZIP

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

1

Installer le .ZIP

Dans WordPress, allez dans Extensions > Ajouter, téléversez le fichier rank212-wordpress.zip puis cliquez sur Activer.

2

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.

3

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.

Support Bilingue Automatique (Arabe & Français) :

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

Laravel Headless & Custom Apps Package Officiel

Package Client Laravel Rank212

Télécharger le Package .ZIP

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
Variables à ajouter dans votre fichier .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

php artisan seo:optimize {id} Optimise un produit spécifique par son ID.
php artisan seo:batch-optimize Déclenche l'optimisation de tout le catalogue via workers Redis.
php artisan seo:status Vérifie l'état de la connexion et le quota restant.
Shopify Webhooks Signature HMAC SHA256 Vérifiée

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 :

Événement : Création de produit (products/create)
Événement : Mise à jour de produit (products/update)
1

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

URL racine de l'API (Production) :
https://rank212.tech/api/v1
2

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

Générer / Optimiser le SEO d'un Produit

POST /api/v1/optimize/product

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'])
Exemple de Réponse Succès (HTTP 200 OK) :
{
  "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"
  }
}
4

Optimisation par Lot (Batch)

POST /api/v1/optimize/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 }
    ]
  }'
Réponse (HTTP 202 Accepted) : {"success": true, "status": "queued", "count": 2}
5

Consulter les Métadonnées en Cache

GET /api/v1/optimizations/{id}

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: "
6

Consommation & Quota Restant

GET /api/v1/store/usage

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: "
Exemple de Réponse :
{
  "success": true,
  "data": {
    "store_name": "Ma Boutique",
    "monthly_quota": 500,
    "usage_count": 42,
    "remaining_quota": 458,
    "usage_percentage": 8.4,
    "is_active": true
  }
}
7

Flux Sitemap XML Dynamique

GET /sitemaps/{apiKey}/sitemap.xml

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.

8

Récapitulatif des Webhooks Automatisés

Événements en Temps Réel

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 :

YouCan Webhook Endpoints :
Shopify Webhooks (Signature HMAC SHA256 vérifiée) :
9

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.