API Projets
Créer, lister, mettre à jour des projets, gérer articles et mots-clés par projet.
Dans Rankion, un projet est le conteneur central — un projet par domaine, un team-owner, et toutes les sous-ressources (articles, mots-clés, maps de liens internes, storylines) y sont rattachées. À côté, il y a les projets de tracking, ressource distincte dédiée au monitoring AI Visibility (voir plus bas).
CRUD
| Méthode | Endpoint | Description | Crédits |
|---|---|---|---|
| GET | /v1/projects |
Liste de tous les projets de l'équipe (paginée) | — |
| POST | /v1/projects |
Créer un nouveau projet | — |
| GET | /v1/projects/{id} |
Détail d'un projet | — |
| PUT | /v1/projects/{id} |
Mettre à jour les paramètres | — |
| DELETE | /v1/projects/{id} |
Supprimer un projet (soft) | — |
# Liste
curl -H "Authorization: Bearer $TOKEN" "$BASE/projects"
# Création
curl -X POST "$BASE/projects" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"Mein Blog","domain":"meinblog.de","language":"de","country":"DE"}'
Réponse (abrégée) :
{
"data": {
"id": 12,
"name": "Mein Blog",
"domain": "meinblog.de",
"language": "de",
"country": "DE",
"team_id": 7,
"created_at": "2026-05-01T08:30:00Z"
}
}
Sous-ressources liées au projet
Articles
Tous les endpoints CRUD et de génération d'articles dépendent du projet :
| Méthode | Endpoint | Description | Crédits |
|---|---|---|---|
| GET | /v1/projects/{project}/articles |
paginé (20/page) | — |
| POST | /v1/projects/{project}/articles |
Body : {title, slug?, content?, status?} |
— |
API Articles complète → API Articles.
Mots-clés
| Méthode | Endpoint | Description | Crédits |
|---|---|---|---|
| GET | /v1/projects/{project}/keywords |
Mots-clés du projet | — |
| POST | /v1/projects/{project}/keywords |
Créer un mot-clé | — |
| DELETE | /v1/keywords/{id} |
Supprimer un mot-clé | — |
| POST | /v1/keywords/research |
Job de recherche de mots-clés | 5 |
| POST | /v1/keywords/{id}/expand |
Expansion A-Z (async) | 10 |
| GET | /v1/keywords/{id}/expansions |
Résultats d'une expansion | — |
Maillage interne
| Méthode | Endpoint | Description | Crédits |
|---|---|---|---|
| POST | /v1/projects/{project}/internal-links/analyze |
Calculer la map de liens internes du projet (async) | 5 |
| GET | /v1/articles/{id}/link-suggestions |
Suggestions pour un article | — |
| PUT | /v1/link-suggestions/{id} |
Accepter / refuser une suggestion | — |
Autres sous-ressources de projet
| Famille d'endpoints | Endpoint principal |
|---|---|
| Storylines | GET/POST /v1/projects/{project}/storylines |
| Style-Profiles | GET/POST /v1/projects/{project}/style-profiles |
| Knowledge-Base | GET/POST /v1/projects/{project}/knowledge-base |
| Link-Lists | GET/POST /v1/projects/{project}/link-lists |
| Orphan-Scans | POST /v1/projects/{project}/orphan-scans/discover |
| Calendar | GET/POST /v1/projects/{project}/calendar |
| Project-Images | GET /v1/projects/{project}/images (legacy — l'endpoint principal est le /v1/images au niveau équipe) |
Projets de tracking (ressource distincte !)
Les projets de tracking sont séparés des projets normaux. Ils constituent la base de données pour AI Visibility Tracking — un projet de tracking par marque, un set de mots-clés, un set de plateformes.
Namespace d'endpoints : /v1/tracking-projects/...
Flux de l'assistant
L'interface web propose un assistant en 5 étapes que tu peux reproduire 1:1 via l'API :
| Étape | Endpoint | Description |
|---|---|---|
| 1+2 | POST /v1/tracking-projects/analyze |
Analyser un domaine/mot-clé, dispatche AnalyzeDomainJob. Body : {mode:"domain"|"keyword", domain?, keyword?, name?, language?, country?} → 202 + project_id |
| 3+4 | GET /v1/tracking-projects/{id}/analysis-status |
Polling : renvoie {analysis_status, suggested_keywords, suggested_competitors, suggested_prompts, suggested_personas, classification} |
| 5 | POST /v1/tracking-projects/{id}/activate |
Atomique : crée mots-clés/prompts/concurrents + passe status=active |
# Étape 1+2 : démarrer l'analyse
RESP=$(curl -s -X POST "$BASE/tracking-projects/analyze" \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d '{"mode":"domain","domain":"example.com","language":"de","country":"DE"}')
PID=$(echo $RESP | jq -r .project_id)
# Étape 3+4 : poller jusqu'à completed
while [ "$(curl -s "$BASE/tracking-projects/$PID/analysis-status" \
-H "Authorization: Bearer $TOKEN" | jq -r .analysis_status)" != "completed" ]; do
sleep 3
done
# Étape 5 : activation atomique
curl -X POST "$BASE/tracking-projects/$PID/activate" \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d '{
"keywords":["best crm","crm software"],
"competitors":[{"domain":"hubspot.com"}],
"prompts":[{"prompt":"What is the best CRM?","category":"recommendation"}],
"platforms":["chatgpt","perplexity"],
"frequency":"weekly",
"with_search":true,
"reality_check_enabled":true
}'
Opérations courantes
| Méthode | Endpoint | Description |
|---|---|---|
| GET | /v1/tracking-projects |
tous les projets de tracking de l'équipe |
| GET | /v1/tracking-projects/{id} |
Détail avec KPIs courants |
| PUT | /v1/tracking-projects/{id} |
Mettre à jour les paramètres (alias de marque, fréquence, plateformes, toggle AVI) |
| POST | /v1/tracking-projects/{id}/run |
Dispatcher un run de tracking manuel |
| GET | /v1/tracking-projects/{id}/runs |
Historique des runs |
| GET | /v1/tracking-projects/{id}/scores |
Historique des scores pour les graphiques |
| GET | /v1/tracking-projects/{id}/avi |
AI Visibility Index courant (Reality Check) |
| POST | /v1/tracking-projects/{id}/generate-report |
Rapport Markdown (10 crédits, limite 1/30min) |
Tableau complet des ~30 endpoints de tracking dans docs/API_REFERENCE.md.
Exemple de workflow : projet + premier article
# 1) Créer le projet
PID=$(curl -s -X POST "$BASE/projects" \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d '{"name":"Demo Site","domain":"demo.example","language":"de","country":"DE"}' \
| jq -r .data.id)
# 2) Créer un stub d'article
ART=$(curl -s -X POST "$BASE/projects/$PID/articles" \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d '{"title":"Beste AI-Tools 2026","status":"draft"}' \
| jq -r .data.id)
# 3) Générer le contenu de l'article (5 crédits, async)
curl -X POST "$BASE/articles/$ART/generate" \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d '{"keyword":"AI Tools 2026","article_type":"blog","target_length":1500}'
# 4) Poller jusqu'à terminé
while [ "$(curl -s "$BASE/articles/$ART" \
-H "Authorization: Bearer $TOKEN" | jq -r .data.processing_status)" != "ready" ]; do
sleep 5
done
Workflows détaillés pour les articles : API Articles.
Voir aussi : Authentification & tokens API · Crédits & rate-limits · AI Visibility Tracking.