# API publique Insyder

Consultez et modifiez les données métier accessibles à un utilisateur Insyder. Les clés API sont personnelles, limitées aux espaces de travail et aux autorisations explicitement sélectionnés, et partagent une limite stricte de 20 requêtes acceptées par seconde UTC et par utilisateur.

Les données importées d’Instagram, de Meta et d’iClosed sont en lecture seule. Les produits et les achats exposent une `source` normalisée, `human` ou `iclosed` ; elle indique uniquement la provenance, sans révéler l’état ni la configuration de la connexion. Le nom et le montant importés d’un produit iClosed sont immuables, tandis que son indicateur `active` est un état du catalogue géré dans l’espace de travail qu’un OWNER ou ADMIN peut modifier. Les achats peuvent uniquement être ajoutés, quelle que soit leur source. Les statistiques de chiffre d’affaires incluent les achats saisis manuellement et ceux importés d’iClosed.

La devise `currency` d’un espace de travail est consultable sur le compte. Les nouveaux produits enregistrent cette devise à leur création ; un changement ultérieur de devise de l’espace de travail ne modifie pas l’interprétation des produits ou achats existants. La gestion des devises, les identifiants et la configuration des connexions, les commandes de synchronisation, l’administration des comptes, la facturation et le déclenchement des analyses ne sont jamais exposés.

Les données d’identité et de profil des prospects importés, les contenus, interactions, exécutions, instantanés, stories à la une, historiques de score, résultats iClosed, résultats des concurrents et statistiques ne disposent d’aucune opération publique de création, de remplacement, de modification ou de suppression. Le PATCH des prospects est volontairement limité aux champs gérés par l’utilisateur : statut, adresse e-mail, téléphone et notes. L’historique des statuts et les achats peuvent uniquement être enrichis par ajout ; les clients ne peuvent ni créer ni requalifier un enregistrement comme `iclosed`.

Chaque réponse passant par le routeur de données public inclut `X-Request-Id`, `X-RateLimit-Limit`, `X-RateLimit-Remaining` et `X-RateLimit-Reset`. La limite est de 20 requêtes acceptées par seconde UTC fixe, toutes clés d’un même utilisateur confondues. Une 21e requête rejetée inclut également `Retry-After` et utilise le code d’erreur `rate_limit_exceeded`.

`Idempotency-Key` est obligatoire lors de la création d’un produit, d’un achat ou d’un export. Les résultats sont conservés pendant 24 heures. Réutiliser une clé pour la même opération et le même corps renvoie la réponse initiale ; la réutiliser avec un corps différent renvoie `409 idempotency_key_conflict`.

Les endpoints de résultats de connexion exposent uniquement des champs métier normalisés. Les cookies Instagram, les métadonnées de session ou de proxy, les identifiants iClosed ou Meta, l’état OAuth, l’état et la configuration des connexions, les données brutes des fournisseurs et les commandes de connexion, de déconnexion, de rafraîchissement ou de synchronisation sont exclus. Les identifiants de liaison aux produits ou transactions des fournisseurs, les transactions et prix bruts ainsi que les compteurs et erreurs d’import sont également exclus des produits et achats.

Toutes les lectures nécessitent `data:read`. Les modifications de prospects nécessitent `leads:write`, celles des produits `products:write`, la création d’achats `purchases:write`, et la création ou l’annulation d’exports à la fois `data:read` et `exports:create`. Les écritures sur les produits nécessitent aussi le rôle actuel OWNER ou ADMIN dans l’espace de travail.

Sélectionner un espace de travail pour une clé ne remplace jamais la vérification de l’appartenance actuelle. Une ressource d’un autre espace et une ressource inexistante renvoient la même erreur `404 not_found`. Les échecs d’authentification, les requêtes préalables CORS, les traitements d’export et les téléchargements S3 directs ne consomment pas le quota par utilisateur.


Version: 1.0.0
License: Proprietary

## Servers

Production
```
https://api.insyder.io/v1
```

## Security

### ApiKeyAuth

[object Object]

Type: apiKey
In: header
Name: X-API-Key

## Download OpenAPI description

 - [API publique Insyder](https://docs.insyder.io/_bundle/api/openapi.yaml)

## Espaces de travail

 - [GET /accounts](https://docs.insyder.io/api/openapi/accounts/listaccounts.md): Renvoie l’intersection des espaces de travail sélectionnés pour la clé et de ceux dont l’utilisateur est actuellement membre.
 - [GET /accounts/{account_id}](https://docs.insyder.io/api/openapi/accounts/getaccount.md)
## Prospects

 - [GET /accounts/{account_id}/leads](https://docs.insyder.io/api/openapi/leads/listleads.md)
 - [GET /accounts/{account_id}/leads/by-email](https://docs.insyder.io/api/openapi/leads/findleadbyemail.md): Rechercher un prospect par son adresse e-mail exacte dans l’espace sélectionné, sans tenir compte des majuscules ni des espaces autour. Renvoie les mêmes détails que la lecture d’un prospect. Renvoie
 - [GET /accounts/{account_id}/leads/{lead_id}](https://docs.insyder.io/api/openapi/leads/getlead.md)
 - [PATCH /accounts/{account_id}/leads/{lead_id}](https://docs.insyder.io/api/openapi/leads/updatelead.md): Nécessite `leads:write`. Les champs omis restent inchangés ; null efface l’adresse e-mail, le téléphone ou les notes.
 - [GET /accounts/{account_id}/leads/{lead_id}/interactions](https://docs.insyder.io/api/openapi/leads/listleadinteractions.md)
 - [GET /accounts/{account_id}/leads/{lead_id}/activity](https://docs.insyder.io/api/openapi/leads/getleadactivity.md)
 - [GET /accounts/{account_id}/leads/{lead_id}/status-history](https://docs.insyder.io/api/openapi/leads/listleadstatushistory.md)
 - [GET /accounts/{account_id}/leads/{lead_id}/score-history](https://docs.insyder.io/api/openapi/leads/listleadscorehistory.md)
 - [GET /accounts/{account_id}/leads/{lead_id}/purchases](https://docs.insyder.io/api/openapi/leads/listleadpurchases.md)
 - [GET /accounts/{account_id}/leads/{lead_id}/iclosed-calls](https://docs.insyder.io/api/openapi/leads/listleadiclosedcalls.md)
 - [GET /accounts/{account_id}/contents/{content_id}/leads](https://docs.insyder.io/api/openapi/leads/listcontentleads.md)
## Contenus

 - [GET /accounts/{account_id}/contents](https://docs.insyder.io/api/openapi/content/listcontent.md)
 - [GET /accounts/{account_id}/contents/{content_id}](https://docs.insyder.io/api/openapi/content/getcontent.md)
 - [GET /accounts/{account_id}/contents/{content_id}/interactions](https://docs.insyder.io/api/openapi/content/listcontentinteractions.md)
 - [GET /accounts/{account_id}/contents/{content_id}/leads](https://docs.insyder.io/api/openapi/content/listcontentleads.md)
 - [GET /accounts/{account_id}/contents/{content_id}/snapshots](https://docs.insyder.io/api/openapi/content/listcontentsnapshots.md)
## Interactions

 - [GET /accounts/{account_id}/leads/{lead_id}/interactions](https://docs.insyder.io/api/openapi/interactions/listleadinteractions.md)
 - [GET /accounts/{account_id}/contents/{content_id}/interactions](https://docs.insyder.io/api/openapi/interactions/listcontentinteractions.md)
 - [GET /accounts/{account_id}/interactions](https://docs.insyder.io/api/openapi/interactions/listinteractions.md)
## Produits

 - [GET /accounts/{account_id}/products](https://docs.insyder.io/api/openapi/products/listproducts.md)
 - [POST /accounts/{account_id}/products](https://docs.insyder.io/api/openapi/products/createproduct.md): Nécessite `products:write` et le rôle effectif OWNER ou ADMIN. Crée un produit `human` dans la devise actuelle de l’espace de travail ; la requête ne peut pas choisir une autre devise ni une autre sou
 - [GET /accounts/{account_id}/products/{product_id}](https://docs.insyder.io/api/openapi/products/getproduct.md)
 - [PATCH /accounts/{account_id}/products/{product_id}](https://docs.insyder.io/api/openapi/products/updateproduct.md): Nécessite `products:write` et le rôle effectif OWNER ou ADMIN. Pour un produit `human`, tous les champs documentés sont modifiables. Pour un produit `iclosed`, seul `active` est géré dans l’espace de
 - [DELETE /accounts/{account_id}/products/{product_id}](https://docs.insyder.io/api/openapi/products/archiveproduct.md): Nécessite `products:write` et le rôle effectif OWNER ou ADMIN. Archive le produit sans le supprimer physiquement ; répéter la requête est sans risque. L’archivage est autorisé pour les deux sources, c
## Achats

 - [GET /accounts/{account_id}/leads/{lead_id}/purchases](https://docs.insyder.io/api/openapi/purchases/listleadpurchases.md)
 - [GET /accounts/{account_id}/purchases](https://docs.insyder.io/api/openapi/purchases/listpurchases.md)
 - [POST /accounts/{account_id}/purchases](https://docs.insyder.io/api/openapi/purchases/createpurchase.md): Nécessite `purchases:write`. Crée un achat `human`. Les achats peuvent uniquement être ajoutés, quelle que soit leur source, et font automatiquement passer le prospect au statut `customer`.
 - [GET /accounts/{account_id}/purchases/{purchase_id}](https://docs.insyder.io/api/openapi/purchases/getpurchase.md)
## Historique

 - [GET /accounts/{account_id}/leads/{lead_id}/status-history](https://docs.insyder.io/api/openapi/history/listleadstatushistory.md)
 - [GET /accounts/{account_id}/leads/{lead_id}/score-history](https://docs.insyder.io/api/openapi/history/listleadscorehistory.md)
 - [GET /accounts/{account_id}/contents/{content_id}/snapshots](https://docs.insyder.io/api/openapi/history/listcontentsnapshots.md)
 - [GET /accounts/{account_id}/runs](https://docs.insyder.io/api/openapi/history/listruns.md)
 - [GET /accounts/{account_id}/snapshots](https://docs.insyder.io/api/openapi/history/listaccountsnapshots.md)
 - [GET /accounts/{account_id}/content-snapshots](https://docs.insyder.io/api/openapi/history/listallcontentsnapshots.md)
 - [GET /accounts/{account_id}/highlights](https://docs.insyder.io/api/openapi/history/listhighlights.md)
 - [GET /accounts/{account_id}/highlights/{highlight_id}](https://docs.insyder.io/api/openapi/history/gethighlight.md)
 - [GET /accounts/{account_id}/highlights/{highlight_id}/items](https://docs.insyder.io/api/openapi/history/listhighlightitems.md)
## Statistiques

 - [GET /accounts/{account_id}/leads/{lead_id}/activity](https://docs.insyder.io/api/openapi/analytics/getleadactivity.md)
 - [GET /accounts/{account_id}/analytics/overview](https://docs.insyder.io/api/openapi/analytics/getanalyticsoverview.md)
 - [GET /accounts/{account_id}/analytics/lead-growth](https://docs.insyder.io/api/openapi/analytics/getleadgrowthanalytics.md)
 - [GET /accounts/{account_id}/analytics/audience-series](https://docs.insyder.io/api/openapi/analytics/getaudienceseries.md)
 - [GET /accounts/{account_id}/analytics/audience-segments](https://docs.insyder.io/api/openapi/analytics/getaudiencesegments.md)
 - [GET /accounts/{account_id}/analytics/funnel](https://docs.insyder.io/api/openapi/analytics/getfunnelanalytics.md)
 - [GET /accounts/{account_id}/analytics/revenue](https://docs.insyder.io/api/openapi/analytics/getrevenueanalytics.md): Inclut les achats non modifiables des sources `human` et `iclosed` ; aucune donnée de connexion ni de transaction brute n’est renvoyée.
 - [GET /accounts/{account_id}/analytics/content-performance](https://docs.insyder.io/api/openapi/analytics/getcontentperformanceanalytics.md)
 - [GET /accounts/{account_id}/analytics/comment-behavior](https://docs.insyder.io/api/openapi/analytics/getcommentbehavioranalytics.md)
 - [GET /accounts/{account_id}/analytics/story-performance](https://docs.insyder.io/api/openapi/analytics/getstoryperformanceanalytics.md)
 - [GET /accounts/{account_id}/analytics/team-conversion](https://docs.insyder.io/api/openapi/analytics/getteamconversionanalytics.md)
## Concurrents

 - [GET /accounts/{account_id}/competitors](https://docs.insyder.io/api/openapi/competitors/listcompetitors.md)
 - [GET /accounts/{account_id}/competitors/{competitor_id}](https://docs.insyder.io/api/openapi/competitors/getcompetitor.md): Les champs de dernière exécution décrivent uniquement une analyse existante. Cette API ne peut ni en lancer ni en actualiser une.
 - [GET /accounts/{account_id}/competitors/{competitor_id}/interactions](https://docs.insyder.io/api/openapi/competitors/listcompetitorinteractions.md)
 - [GET /accounts/{account_id}/competitors/{competitor_id}/content-performance](https://docs.insyder.io/api/openapi/competitors/getcompetitorcontentperformance.md)
 - [GET /accounts/{account_id}/competitors/{competitor_id}/reactive-profiles](https://docs.insyder.io/api/openapi/competitors/listcompetitorreactiveprofiles.md)
## Résultats des connexions

 - [GET /accounts/{account_id}/leads/{lead_id}/iclosed-calls](https://docs.insyder.io/api/openapi/connection-results/listleadiclosedcalls.md)
 - [GET /accounts/{account_id}/iclosed/calls](https://docs.insyder.io/api/openapi/connection-results/listiclosedcalls.md): N’inclut jamais les jetons OAuth, l’état des connexions, les correspondances de champs, les détails internes de synchronisation ou les données brutes du fournisseur.
## Exports

 - [POST /accounts/{account_id}/exports](https://docs.insyder.io/api/openapi/exports/createexport.md): Nécessite `data:read` et `exports:create`.
 - [GET /exports/{export_id}](https://docs.insyder.io/api/openapi/exports/getexport.md)
 - [DELETE /exports/{export_id}](https://docs.insyder.io/api/openapi/exports/deleteexport.md): Nécessite à la fois `data:read` et `exports:create`. Les objets générés sont supprimés et tout traitement en cours est arrêté.
