---
sidebar:
  order: 1
title: "API HTTP"
description: "Authentifiez-vous, découvrez les outils et confirmez des modifications avec l’API HTTP existante."
---

Envoyez les requêtes à l’origine Influence de confiance, par exemple `https://influence.so`. Le domaine de documentation n’accepte pas les requêtes de l’API du produit. Utilisez les chemins exacts ci-dessous, sans paramètres de requête.

## Créez une clé aux permissions limitées

Dans les [paramètres d’Influence](https://influence.so/sign-in?next=%2Fapp%2Fsettings%2Faccount%23settings-developer), ouvrez Applications et automatisations → Clés API. Choisissez les permissions nécessaires et une expiration. La clé n’est affichée qu’une fois : conservez-la dans votre gestionnaire de secrets sous `PUBLISH_API_TOKEN`. Transmettez-la dans `Authorization: Bearer …`, jamais dans une URL, un corps de requête ou un chat. Révoquez-la lorsque vous n’en avez plus besoin.

## Découvrez les outils et consultez des données

Définissez `PUBLISH_API_URL` sur l’origine de confiance. Ces exemples supposent que le processus dispose déjà de `PUBLISH_API_TOKEN`. `accountList` nécessite `integrations:read` ; suivez les champs de pagination pour lire les pages suivantes.

```sh
export PUBLISH_API_URL="https://influence.so"
curl "$PUBLISH_API_URL/api/v1/tools" \
  -H "Authorization: Bearer $PUBLISH_API_TOKEN"

curl "$PUBLISH_API_URL/api/v1/tools/accountList/call" \
  -H "Authorization: Bearer $PUBLISH_API_TOKEN" \
  -H 'Content-Type: application/json' \
  --data '{"input":{}}'
```

## Chemins des requêtes

| Méthode | Chemin | Rôle |
| --- | --- | --- |
| `GET` | `/api/v1/tools` | Liste les outils accessibles avec cet identifiant. |
| `POST` | `/api/v1/tools/{tool}/call` | Appelle un outil en lecture seule. |
| `POST` | `/api/v1/tools/{tool}/prepare` | Prépare une modification précise sans l’exécuter. |
| `POST` | `/api/v1/tools/{tool}/confirm` | Confirme la modification préparée. |
| `POST` | `/api/v1/media/import` | Confirme l’envoi préparé d’une petite image binaire. |

Les requêtes JSON utilisent `Content-Type: application/json` et un corps contenant uniquement `input` : `{"input":{…}}`. Le catalogue actuel fournit le schéma d’entrée de chaque outil.

## Préparez et confirmez les modifications

1. Envoyez les données exactes à `/prepare`. La réponse attendue contient `status: "confirmation_required"`, `confirmationCapability`, `expiresAt`, `inputDigest` et éventuellement `summary`.
2. Avant l’expiration, envoyez les mêmes données à `/confirm`. Placez la valeur reçue dans `X-Publish-Confirmation` et une nouvelle clé générée par votre client dans `Idempotency-Key`.
3. Conservez ensemble les données, la valeur de confirmation et la clé. Après une interruption ou un résultat incertain, réutilisez les trois pour cette même requête. Ne préparez pas une nouvelle opération pour récupérer un résultat incertain.

La clé d’idempotence contient 16 à 200 caractères parmi `A–Z`, `a–z`, `0–9`, `.`, `_`, `:` et `-`. Les valeurs de confirmation sont des secrets opaques. Une clé envoyée à `/call` ou `/prepare` ne réserve pas une modification confirmée.

La confirmation de la requête est distincte de l’approbation de publication. Pour publier ou modifier une programmation, créez et présentez la validation complète et actuelle. Un texte nécessite une nouvelle approbation après cette présentation. Les images et vidéos exigent l’approbation visuelle de la personne dans une interface compatible ou dans Influence après connexion. Préparer une validation ne publie rien. Consultez le résultat enregistré avant de continuer ; `needs_review` exige de vérifier ce qui s’est passé, pas de renvoyer.

## Gérez les erreurs et les résultats incertains

Vérifiez le statut HTTP et le corps. Un succès renvoie `{"ok":true,"toolName":"…","output":{…}}`. Un échec d’outil renvoie `{"ok":false,"toolName":"…","error":{"code":"…","message":"…","retryable":false}}`, parfois avec HTTP 200. Un échec de transport utilise `{"error":{"code":"…","message":"…","retryable":false}}`, sans `ok` ni `toolName`.

Un 401 exige une authentification : vérifiez l’expiration ou la révocation. Une permission manquante nécessite l’autorisation correspondante, pas des requêtes répétées. Un 503 indique que l’API est indisponible dans cet environnement. Respectez les erreurs et les consignes de nouvelle tentative. Un délai dépassé ne prouve pas l’échec d’une modification : conservez ses données de confirmation et consultez l’état avant de renvoyer. Accepté, programmé et publié sont des résultats distincts.

## Envoyez des médias

Pour les fichiers locaux, privilégiez `uploadMedia` du SDK ou `media:upload` de la CLI. Ils utilisent les mêmes outils d’envoi en plusieurs parties et gardent un `clientKey` stable pour les reprises. Seul un résultat prêt avec `assetId` peut être joint. Pour une référence HTTPS autorisée, utilisez `mediaImport` ; un chemin local n’est pas une URL de téléchargement.

`POST /api/v1/media/import` prend en charge le transport existant des petites images : préparez `mediaImport` avec le descripteur exact, puis envoyez les mêmes octets en `application/octet-stream`. Incluez `X-Publish-Confirmation`, `Idempotency-Key` et `X-Publish-Upload` avec le descripteur JSON encodé pour une URI. Les octets doivent correspondre à sa taille et à son SHA-256. La limite est de 3 MiB ; utilisez l’assistant d’envoi pour les fichiers plus grands pris en charge. Envoyer un fichier n’approuve jamais sa publication.

[Consultez la référence de l’API](/fr/api-reference) ou [téléchargez la spécification OpenAPI](/specs/influence.openapi.json).
