Référence Technique des Endpoints REST
https://docs.ekenno.com/api/
Authorization: Bearer ek_live_xxxxxxxxxxxxxxxxxxxxxxxx
X-Request-Id & X-RateLimit-*
/api/surveys/categories/
Lister les catégories actives
Retourne toutes les catégories de sondages actives avec leur identifiant UUID, slug, icône et couleur.
curl -X GET "https://docs.ekenno.com/api/surveys/categories/" \
-H "Authorization: Bearer ek_live_xxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Accept: application/json"
[
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "Technologie & Innovation",
"slug": "technologie",
"icon": "bx-laptop",
"color": "#3b82f6",
"is_active": true,
"order": 1
}
]
/api/surveys/manage/
Lister vos sondages
Retourne la liste paginée des sondages appartenant à votre compte ou workspace avec filtres par statut, catégorie et recherche.
Paramètres de la requête
| Paramètre | Emplacement | Type | Description |
|---|---|---|---|
| status | query | string | Filtrer par statut : draft, active, paused, closed. |
| search | query | string | Recherche plein texte dans title et description. |
| category | query | UUID | slug | Filtrer par UUID ou slug de catégorie. |
| page | query | integer | Numéro de page (20 résultats par page). |
curl -X GET "https://docs.ekenno.com/api/surveys/manage/?status=active" \
-H "Authorization: Bearer ek_live_xxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Accept: application/json"
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"id": "368de50f-5df6-4b15-b6cf-f5ff6d123c90",
"title": "Enquête Satisfaction Mobile 2026",
"status": "active",
"version_number": 1,
"max_responses": 500,
"current_responses": 142,
"question_count": 8,
"completion_rate": 88.5,
"share_token": "ek98a7b6c5d4",
"public_url": "https://ekenno.com/s/ek98a7b6c5d4/",
"embed_url": "https://ekenno.com/survey/368de50f-5df6-4b15-b6cf-f5ff6d123c90/embed/"
}
]
}
/api/surveys/manage/
Créer un nouveau sondage
Crée un sondage à l'état draft avec génération automatique du share_token public et de l'URL d'intégration embed.
Paramètres de la requête
| Paramètre | Emplacement | Type | Description |
|---|---|---|---|
| title Requis | body | string | Titre public du sondage. |
| description | body | string | Description et consignes d'introduction. |
| category_id | body | UUID | UUID de la catégorie (alias accepté : category). |
| survey_type | body | string | internal (défaut), external ou embed. |
| estimated_time | body | integer | Durée estimée en minutes (défaut : 5). |
| max_responses | body | integer | Quota maximal de réponses (0 = illimité). |
| allow_anonymous | body | boolean | Autoriser les réponses sans compte sur /s/<token>/. |
| collect_email | body | boolean | Demander l'email aux répondants anonymes. |
curl -X POST "https://docs.ekenno.com/api/surveys/manage/" \
-H "Authorization: Bearer ek_live_xxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"title": "Baromètre Expérience Client Q4",
"description": "Évaluation de nos nouveaux services digitaux",
"category_id": "550e8400-e29b-41d4-a716-446655440000",
"survey_type": "internal",
"estimated_time": 4,
"max_responses": 500,
"allow_anonymous": true,
"collect_email": true
}'
{
"id": "368de50f-5df6-4b15-b6cf-f5ff6d123c90",
"title": "Baromètre Expérience Client Q4",
"status": "draft",
"status_display": "Draft",
"version_number": 1,
"estimated_time": 4,
"max_responses": 500,
"allow_anonymous": true,
"collect_email": true,
"share_token": "ek98a7b6c5d4",
"public_url": "https://ekenno.com/s/ek98a7b6c5d4/",
"embed_url": "https://ekenno.com/survey/368de50f-5df6-4b15-b6cf-f5ff6d123c90/embed/",
"questions": [],
"eligibility_rules": []
}
/api/surveys/manage/{id}/
Récupérer les détails d'un sondage
Retourne la configuration complète d'un sondage, ses questions ordonnées, ses règles d'éligibilité et ses URLs de diffusion.
Paramètres de la requête
| Paramètre | Emplacement | Type | Description |
|---|---|---|---|
| id Requis | path | UUID | Identifiant UUID du sondage. |
curl -X GET "https://docs.ekenno.com/api/surveys/manage/368de50f-5df6-4b15-b6cf-f5ff6d123c90/" \
-H "Authorization: Bearer ek_live_xxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Accept: application/json"
{
"id": "368de50f-5df6-4b15-b6cf-f5ff6d123c90",
"title": "Baromètre Expérience Client Q4",
"status": "active",
"version_number": 1,
"question_count": 2,
"response_count": 142,
"completion_rate": 88.5,
"share_token": "ek98a7b6c5d4",
"questions": [
{
"id": "8e3678fb-2917-4824-9b88-c711aa110022",
"question_text": "Quelle est votre note globale ?",
"question_type": "stars",
"order": 1,
"is_required": true
}
],
"eligibility_rules": []
}
/api/surveys/manage/{id}/
Mettre à jour un sondage
Modifie partiellement les métadonnées, les quotas ou les options d'accès d'un sondage.
Paramètres de la requête
| Paramètre | Emplacement | Type | Description |
|---|---|---|---|
| id Requis | path | UUID | Identifiant UUID du sondage. |
| title | body | string | Nouveau titre du sondage. |
| max_responses | body | integer | Nouveau quota maximal de réponses. |
curl -X PATCH "https://docs.ekenno.com/api/surveys/manage/368de50f-5df6-4b15-b6cf-f5ff6d123c90/" \
-H "Authorization: Bearer ek_live_xxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"max_responses": 1000}'
{
"id": "368de50f-5df6-4b15-b6cf-f5ff6d123c90",
"title": "Baromètre Expérience Client Q4",
"max_responses": 1000,
"status": "draft"
}
/api/surveys/manage/{id}/publish/
Publier un sondage
Vérifie que le sondage contient au moins une question et passe son statut à active avec horodatage published_at.
Paramètres de la requête
| Paramètre | Emplacement | Type | Description |
|---|---|---|---|
| id Requis | path | UUID | Identifiant UUID du sondage à publier. |
curl -X POST "https://docs.ekenno.com/api/surveys/manage/368de50f-5df6-4b15-b6cf-f5ff6d123c90/publish/" \
-H "Authorization: Bearer ek_live_xxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Accept: application/json"
{
"message": "Survey published successfully.",
"survey": {
"id": "368de50f-5df6-4b15-b6cf-f5ff6d123c90",
"status": "active",
"is_available": true,
"published_at": "2026-11-12T16:00:00Z"
}
}
/api/surveys/manage/{id}/pause/
Mettre un sondage en pause
Suspend temporairement la collecte de réponses sur un sondage actif (passage à l'état paused).
Paramètres de la requête
| Paramètre | Emplacement | Type | Description |
|---|---|---|---|
| id Requis | path | UUID | Identifiant UUID du sondage actif. |
curl -X POST "https://docs.ekenno.com/api/surveys/manage/368de50f-5df6-4b15-b6cf-f5ff6d123c90/pause/" \
-H "Authorization: Bearer ek_live_xxxxxxxxxxxxxxxxxxxxxxxx"
{
"message": "Survey paused successfully.",
"survey": {
"id": "368de50f-5df6-4b15-b6cf-f5ff6d123c90",
"status": "paused",
"is_available": false
}
}
/api/surveys/manage/{id}/close/
Clôturer définitivement un sondage
Ferme définitivement un sondage (statut closed). Les réponses existantes restent consultables et exportables.
Paramètres de la requête
| Paramètre | Emplacement | Type | Description |
|---|---|---|---|
| id Requis | path | UUID | Identifiant UUID du sondage. |
curl -X POST "https://docs.ekenno.com/api/surveys/manage/368de50f-5df6-4b15-b6cf-f5ff6d123c90/close/" \
-H "Authorization: Bearer ek_live_xxxxxxxxxxxxxxxxxxxxxxxx"
{
"message": "Survey closed successfully.",
"survey": {
"id": "368de50f-5df6-4b15-b6cf-f5ff6d123c90",
"status": "closed",
"is_available": false
}
}
/api/surveys/manage/{id}/
Supprimer un sondage
Supprime définitivement un sondage et ses questions associées.
Paramètres de la requête
| Paramètre | Emplacement | Type | Description |
|---|---|---|---|
| id Requis | path | UUID | Identifiant UUID du sondage. |
curl -X DELETE "https://docs.ekenno.com/api/surveys/manage/368de50f-5df6-4b15-b6cf-f5ff6d123c90/" \
-H "Authorization: Bearer ek_live_xxxxxxxxxxxxxxxxxxxxxxxx"
// 204 No Content (aucun corps retourné)
/api/surveys/manage/{survey_id}/questions/
Lister les questions d'un sondage
Retourne toutes les questions ordonnées d'un sondage avec leurs options, validations et règles conditionnelles.
Paramètres de la requête
| Paramètre | Emplacement | Type | Description |
|---|---|---|---|
| survey_id Requis | path | UUID | UUID du sondage parent. |
curl -X GET "https://docs.ekenno.com/api/surveys/manage/368de50f-5df6-4b15-b6cf-f5ff6d123c90/questions/" \
-H "Authorization: Bearer ek_live_xxxxxxxxxxxxxxxxxxxxxxxx"
[
{
"id": "8e3678fb-2917-4824-9b88-c711aa110022",
"question_text": "Sur une échelle de 0 à 10, recommanderiez-vous notre service ?",
"question_type": "nps",
"type_display": "Net Promoter Score (NPS)",
"scale_min": 0,
"scale_max": 10,
"scale_labels": {"0": "Pas du tout probable", "10": "Très probable"},
"is_required": true,
"order": 1
}
]
/api/surveys/manage/{survey_id}/questions/
Ajouter une question (32 types)
Ajoute une nouvelle question au sondage. Supporte les 32 types du Question Builder, la logique conditionnelle et le screening.
Paramètres de la requête
| Paramètre | Emplacement | Type | Description |
|---|---|---|---|
| survey_id Requis | path | UUID | UUID du sondage parent. |
| question_text Requis | body | string | Intitulé de la question. |
| question_type Requis | body | string | Un des 32 codes (text, textarea, email, phone, url, radio, dropdown, yesno, checkbox, multi_dropdown, tags, stars, scale, nps, likert, slider, date, datetime, time, birthdate, file, image_upload, fullname, gender, country, city, address, number, matrix_single, consent, section, description). |
| options | body | array<string> | Requis (min 2) pour radio, dropdown, checkbox, multi_dropdown, tags. |
| is_required | body | boolean | Question obligatoire (défaut : true). |
| is_screening | body | boolean | Question éliminatoire de screening. |
| disqualify_answers | body | array<string> | Réponses entraînant une disqualification immédiate. |
curl -X POST "https://docs.ekenno.com/api/surveys/manage/368de50f-5df6-4b15-b6cf-f5ff6d123c90/questions/" \
-H "Authorization: Bearer ek_live_xxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"question_text": "Quel moyen de paiement mobile utilisez-vous principalement ?",
"question_type": "radio",
"options": ["Wave", "Orange Money", "MTN MoMo", "Moov Money"],
"is_required": true,
"order": 1
}'
{
"id": "8e3678fb-2917-4824-9b88-c711aa110022",
"question_text": "Quel moyen de paiement mobile utilisez-vous principalement ?",
"question_type": "radio",
"type_display": "Single Choice (Radio)",
"options": ["Wave", "Orange Money", "MTN MoMo", "Moov Money"],
"is_required": true,
"order": 1
}
/api/surveys/manage/{survey_id}/questions/{id}/
Modifier une question
Met à jour l'intitulé, les options, l'ordre ou les règles de validation d'une question existante.
Paramètres de la requête
| Paramètre | Emplacement | Type | Description |
|---|---|---|---|
| survey_id Requis | path | UUID | UUID du sondage parent. |
| id Requis | path | UUID | UUID de la question. |
curl -X PATCH "https://docs.ekenno.com/api/surveys/manage/368de50f-5df6-4b15-b6cf-f5ff6d123c90/questions/8e3678fb-2917-4824-9b88-c711aa110022/" \
-H "Authorization: Bearer ek_live_xxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"help_text": "Sélectionnez une seule réponse."}'
{
"id": "8e3678fb-2917-4824-9b88-c711aa110022",
"question_text": "Quel moyen de paiement mobile utilisez-vous principalement ?",
"question_type": "radio",
"help_text": "Sélectionnez une seule réponse.",
"order": 1
}
/api/surveys/manage/{survey_id}/questions/{id}/
Supprimer une question
Supprime une question d'un sondage.
Paramètres de la requête
| Paramètre | Emplacement | Type | Description |
|---|---|---|---|
| survey_id Requis | path | UUID | UUID du sondage parent. |
| id Requis | path | UUID | UUID de la question. |
curl -X DELETE "https://docs.ekenno.com/api/surveys/manage/368de50f-5df6-4b15-b6cf-f5ff6d123c90/questions/8e3678fb-2917-4824-9b88-c711aa110022/" \
-H "Authorization: Bearer ek_live_xxxxxxxxxxxxxxxxxxxxxxxx"
// 204 No Content
/api/surveys/manage/{survey_id}/eligibility/
Lister les règles d'éligibilité
Retourne toutes les règles de ciblage démographique et géographique configurées sur le sondage.
Paramètres de la requête
| Paramètre | Emplacement | Type | Description |
|---|---|---|---|
| survey_id Requis | path | UUID | UUID du sondage. |
curl -X GET "https://docs.ekenno.com/api/surveys/manage/368de50f-5df6-4b15-b6cf-f5ff6d123c90/eligibility/" \
-H "Authorization: Bearer ek_live_xxxxxxxxxxxxxxxxxxxxxxxx"
[
{
"id": "c41901a2-7b12-4d99-81b2-990122334455",
"rule_type": "country",
"rule_type_display": "Country",
"operator": "in",
"operator_display": "In",
"value": ["CI", "SN", "FR"]
}
]
/api/surveys/manage/{survey_id}/eligibility/
Ajouter une règle d'éligibilité
Ajoute un filtre de ciblage (age_min, age_max, country, city, gender, has_skill, level) avec opérateur (eq, ne, gt, lt, in, not_in).
Paramètres de la requête
| Paramètre | Emplacement | Type | Description |
|---|---|---|---|
| survey_id Requis | path | UUID | UUID du sondage. |
| rule_type Requis | body | string | age_min, age_max, country, city, gender, has_skill ou level. |
| operator Requis | body | string | eq, ne, gt, lt, in ou not_in. |
| value Requis | body | JSON | Valeur attendue (nombre, chaîne ou liste). |
curl -X POST "https://docs.ekenno.com/api/surveys/manage/368de50f-5df6-4b15-b6cf-f5ff6d123c90/eligibility/" \
-H "Authorization: Bearer ek_live_xxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"rule_type": "country",
"operator": "in",
"value": ["CI", "SN", "FR"]
}'
{
"id": "c41901a2-7b12-4d99-81b2-990122334455",
"rule_type": "country",
"rule_type_display": "Country",
"operator": "in",
"operator_display": "In",
"value": ["CI", "SN", "FR"]
}
/api/surveys/manage/{survey_id}/responses/
Lister les réponses collectées
Retourne les sessions de réponses d'un sondage avec statut, durée, quality_score et réponses détaillées.
Paramètres de la requête
| Paramètre | Emplacement | Type | Description |
|---|---|---|---|
| survey_id Requis | path | UUID | UUID du sondage. |
| status | query | string | Filtrer par statut : started, completed, abandoned, disqualified. |
curl -X GET "https://docs.ekenno.com/api/surveys/manage/368de50f-5df6-4b15-b6cf-f5ff6d123c90/responses/?status=completed" \
-H "Authorization: Bearer ek_live_xxxxxxxxxxxxxxxxxxxxxxxx"
{
"count": 1,
"results": [
{
"id": "e9b5a882-9477-44c0-9989-11f4d9c7e112",
"user_full_name": "Anonyme",
"status": "completed",
"time_spent": 142,
"quality_score": "0.92",
"answers": [
{
"question": "8e3678fb-2917-4824-9b88-c711aa110022",
"question_text": "Quel moyen de paiement mobile utilisez-vous principalement ?",
"question_type": "radio",
"question_order": 1,
"answer": "Wave"
}
]
}
]
}
/api/surveys/{id}/start/
Démarrer une session de réponse
Démarre une session de participation authentifiée (statut started) après vérification d'éligibilité.
Paramètres de la requête
| Paramètre | Emplacement | Type | Description |
|---|---|---|---|
| id Requis | path | UUID | UUID du sondage actif. |
curl -X POST "https://docs.ekenno.com/api/surveys/368de50f-5df6-4b15-b6cf-f5ff6d123c90/start/" \
-H "Authorization: Bearer ek_live_xxxxxxxxxxxxxxxxxxxxxxxx"
{
"id": "e9b5a882-9477-44c0-9989-11f4d9c7e112",
"survey": "368de50f-5df6-4b15-b6cf-f5ff6d123c90",
"status": "started",
"started_at": "2026-11-12T16:10:00Z"
}
/api/surveys/{id}/submit/
Soumettre les réponses d'un sondage
Valide et enregistre toutes les réponses d'une session active, calcule le quality_score et crédite la récompense KEN.
Paramètres de la requête
| Paramètre | Emplacement | Type | Description |
|---|---|---|---|
| id Requis | path | UUID | UUID du sondage. |
| answers Requis | body | array<object> | Liste d'objets {question_id, answer}. |
curl -X POST "https://docs.ekenno.com/api/surveys/368de50f-5df6-4b15-b6cf-f5ff6d123c90/submit/" \
-H "Authorization: Bearer ek_live_xxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"answers": [
{
"question_id": "8e3678fb-2917-4824-9b88-c711aa110022",
"answer": "Wave"
}
]
}'
{
"message": "Survey completed successfully.",
"response": {
"id": "e9b5a882-9477-44c0-9989-11f4d9c7e112",
"status": "completed",
"time_spent": 94,
"quality_score": "0.88"
}
}
/api/surveys/manage/{id}/results/
Résultats analytiques agrégés
Calcule les métriques globales (taux de complétion, durée moyenne, score global) et les statistiques par question (distributions de choix, moyenne, médiane, NPS).
Paramètres de la requête
| Paramètre | Emplacement | Type | Description |
|---|---|---|---|
| id Requis | path | UUID | UUID du sondage. |
curl -X GET "https://docs.ekenno.com/api/surveys/manage/368de50f-5df6-4b15-b6cf-f5ff6d123c90/results/" \
-H "Authorization: Bearer ek_live_xxxxxxxxxxxxxxxxxxxxxxxx"
{
"survey_id": "368de50f-5df6-4b15-b6cf-f5ff6d123c90",
"survey_title": "Baromètre Expérience Client Q4",
"total_responses": 142,
"total_started": 160,
"completed_count": 142,
"completion_rate": 88.8,
"avg_time_seconds": 185,
"avg_time_formatted": "3m 5s",
"overall_avg_score": 4.6,
"questions": [
{
"question_id": "8e3678fb-2917-4824-9b88-c711aa110022",
"order": 1,
"analytics_type": "choice",
"answer_count": 142,
"choice_stats": [
{"label": "Wave", "count": 88, "percentage": 62.0},
{"label": "Orange Money", "count": 54, "percentage": 38.0}
]
}
]
}
/api/surveys/manage/{survey_id}/export/
Exporter les réponses (CSV / JSON)
Télécharge l'intégralité des réponses d'un sondage au format CSV tabulaire (défaut) ou JSON structuré (?format=json).
Paramètres de la requête
| Paramètre | Emplacement | Type | Description |
|---|---|---|---|
| survey_id Requis | path | UUID | UUID du sondage. |
| format | query | string | csv (défaut) ou json. |
curl -X GET "https://docs.ekenno.com/api/surveys/manage/368de50f-5df6-4b15-b6cf-f5ff6d123c90/export/?format=json" \
-H "Authorization: Bearer ek_live_xxxxxxxxxxxxxxxxxxxxxxxx" \
-o export_responses.json
{
"survey_id": "368de50f-5df6-4b15-b6cf-f5ff6d123c90",
"survey_title": "Baromètre Expérience Client Q4",
"total_responses": 142,
"exported_at": "2026-11-12T16:15:00Z",
"responses": []
}
/api/developer/webhooks/
Enregistrer un endpoint Webhook
Configure un abonnement HTTP POST signé par HMAC-SHA256 pour les événements on_start, on_complete et on_abandon.
Paramètres de la requête
| Paramètre | Emplacement | Type | Description |
|---|---|---|---|
| url Requis | body | URL | URL HTTPS réceptrice de votre serveur. |
| survey_id | body | UUID | UUID du sondage cible. |
| on_start | body | boolean | Notifier au démarrage d'une réponse. |
| on_complete | body | boolean | Notifier à la validation finale (défaut : true). |
| on_abandon | body | boolean | Notifier en cas d'abandon ou disqualification. |
curl -X POST "https://docs.ekenno.com/api/developer/webhooks/" \
-H "Authorization: Bearer ek_live_xxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"url": "https://api.votre-domaine.com/webhooks/ekenno",
"survey_id": "368de50f-5df6-4b15-b6cf-f5ff6d123c90",
"on_complete": true,
"on_abandon": true
}'
{
"message": "Webhook endpoint created successfully.",
"webhook": {
"id": "a91bc220-1122-4334-9988-776655443322",
"survey_id": "368de50f-5df6-4b15-b6cf-f5ff6d123c90",
"url": "https://api.votre-domaine.com/webhooks/ekenno",
"secret_key": "whsec_9f8e7d6c5b4a3f2e1d0c9b8a7f6e5d4c",
"events": ["on_complete", "on_abandon"],
"is_active": true
}
}
/api/developer/keys/
Lister vos clés d'API
Retourne toutes les clés d'API de votre workspace avec leur préfixe masqué, leur environnement (live/test), leurs scopes et leur dernier horodatage d'utilisation.
curl -X GET "https://docs.ekenno.com/api/developer/keys/" \
-H "Authorization: Bearer ek_live_xxxxxxxxxxxxxxxxxxxxxxxx"
{
"count": 1,
"results": [
{
"id": "d1234567-89ab-4cde-9012-3456789abcde",
"name": "Default Production Key",
"mode": "live",
"key_prefix": "ek_live_...fe8b",
"scopes": ["surveys:read", "surveys:write", "questions:write", "responses:read"],
"is_active": true,
"rate_limit": 1000
}
]
}
/api/developer/keys/
Générer une nouvelle clé d'API
Crée une nouvelle clé Live ou Test avec des scopes précis. Le secret complet raw_key n'est retourné qu'une seule fois dans cette réponse 201.
Paramètres de la requête
| Paramètre | Emplacement | Type | Description |
|---|---|---|---|
| name Requis | body | string | Nom descriptif de la clé. |
| mode | body | string | live (défaut) ou test. |
| scopes | body | array<string> | Liste des scopes accordés. |
curl -X POST "https://docs.ekenno.com/api/developer/keys/" \
-H "Authorization: Bearer ek_live_xxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"name": "CI/CD Backend Service",
"mode": "live",
"scopes": ["surveys:read", "surveys:write", "questions:write", "responses:read"]
}'
{
"message": "API key created. Please save this secret key now, it cannot be displayed again.",
"api_key": {
"id": "d1234567-89ab-4cde-9012-3456789abcde",
"name": "CI/CD Backend Service",
"mode": "live",
"key_prefix": "ek_live_...9a1b",
"raw_key": "ek_live_48_hex_characters_secret_shown_only_once_9a1b",
"scopes": ["surveys:read", "surveys:write", "questions:write", "responses:read"],
"is_active": true
}
}
/api/developer/keys/{id}/roll/
Rotation (Roll) d'une clé d'API
Invalide immédiatement l'ancien secret et génère un nouveau secret raw_key tout en conservant l'ID et les scopes de la clé.
Paramètres de la requête
| Paramètre | Emplacement | Type | Description |
|---|---|---|---|
| id Requis | path | UUID | UUID de la clé à régénérer. |
curl -X POST "https://docs.ekenno.com/api/developer/keys/d1234567-89ab-4cde-9012-3456789abcde/roll/" \
-H "Authorization: Bearer ek_live_xxxxxxxxxxxxxxxxxxxxxxxx"
{
"message": "API key regenerated. Please copy and store your new key now.",
"api_key": {
"id": "d1234567-89ab-4cde-9012-3456789abcde",
"key_prefix": "ek_live_...c4d2",
"raw_key": "ek_live_new_rotated_secret_token_c4d2",
"is_active": true
}
}
/api/developer/keys/{id}/
Révoquer une clé d'API
Désactive définitivement une clé d'API (is_active = false). Toute requête ultérieure avec ce jeton recevra 401 Unauthorized.
Paramètres de la requête
| Paramètre | Emplacement | Type | Description |
|---|---|---|---|
| id Requis | path | UUID | UUID de la clé à révoquer. |
curl -X DELETE "https://docs.ekenno.com/api/developer/keys/d1234567-89ab-4cde-9012-3456789abcde/" \
-H "Authorization: Bearer ek_live_xxxxxxxxxxxxxxxxxxxxxxxx"
{
"message": "API key revoked successfully.",
"id": "d1234567-89ab-4cde-9012-3456789abcde",
"is_active": false
}