Référence API
Applications et clés
Une application a deux environnements (sandbox, production). Les clés API se créent et se révoquent ici, avec la session du portail.
Créer une application (avec ses environnements sandbox et production)#
POST/apps
- Authentification
- Session du portail (Bearer ses_…)
Corps de la requête (JSON)
| Champ | Type | Description | |
|---|---|---|---|
name | string | requis | Nom affiché dans la console (2 à 80 caractères). Unique dans votre compte pour une application. |
Exemple
curl -X POST "$INBOX_API/apps" \
-H "Authorization: Bearer $INBOX_SESSION" \
-H "Content-Type: application/json" \
-d '{
"name": "Mon CRM"
}'const res = await fetch(`${process.env.INBOX_API}/apps`, {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.INBOX_SESSION}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"name": "Mon CRM"
}),
});
const data = await res.json();import os
import requests
res = requests.post(
f"{os.environ['INBOX_API']}/apps",
headers={
"Authorization": f"Bearer {os.environ['INBOX_SESSION']}",
},
json={
"name": "Mon CRM",
},
)
print(res.json())<?php
$ch = curl_init(getenv('INBOX_API') . '/apps');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('INBOX_SESSION'),
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'name' => 'Mon CRM',
]),
]);
$data = json_decode(curl_exec($ch), true);{
"id": "8b2717b6-be9e-42c7-8889-6e3c6ea4cbe3",
"name": "Mon CRM",
"createdAt": "2026-11-12T08:33:45.324Z",
"environments": [
{
"id": "7d3d2aa8-d312-48d7-894c-25b906dfa11a",
"kind": "sandbox"
},
{
"id": "badd0f25-05da-4716-8c28-f2fe1baba427",
"kind": "production"
}
]
}Lister les applications du compte#
GET/apps
- Authentification
- Session du portail (Bearer ses_…)
Exemple
curl "$INBOX_API/apps" \
-H "Authorization: Bearer $INBOX_SESSION"const res = await fetch(`${process.env.INBOX_API}/apps`, {
headers: {
Authorization: `Bearer ${process.env.INBOX_SESSION}`,
},
});
const data = await res.json();import os
import requests
res = requests.get(
f"{os.environ['INBOX_API']}/apps",
headers={
"Authorization": f"Bearer {os.environ['INBOX_SESSION']}",
},
)
print(res.json())<?php
$ch = curl_init(getenv('INBOX_API') . '/apps');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('INBOX_SESSION'),
],
]);
$data = json_decode(curl_exec($ch), true);[
{
"id": "8b2717b6-be9e-42c7-8889-6e3c6ea4cbe3",
"name": "Mon CRM",
"createdAt": "2026-11-12T08:33:45.324Z",
"environments": [
{
"id": "7d3d2aa8-d312-48d7-894c-25b906dfa11a",
"kind": "sandbox"
},
{
"id": "badd0f25-05da-4716-8c28-f2fe1baba427",
"kind": "production"
}
]
}
]Générer une clé API. Le secret n’est affiché qu’une seule fois.#
POST/apps/{appId}/keys
- Authentification
- Session du portail (Bearer ses_…)
Paramètres
| Nom | Emplacement | Type | Description |
|---|---|---|---|
appIdrequis | chemin | string | Identifiant de l'application. |
Corps de la requête (JSON)
| Champ | Type | Description | |
|---|---|---|---|
name | string | requis | Nom affiché dans la console (2 à 80 caractères). Unique dans votre compte pour une application. |
environment | string | requis | Environnement de la clé : sandbox pour tester, production pour envoyer à de vrais destinataires.Valeurs : sandbox, production |
scopes | string[] | requis | Droits de la clé. Une clé ne peut faire que ce qu'on lui accorde. Valeurs : messages:send, messages:read, templates:manage, webhooks:manage, connections:read, connections:manage, usage:read.Valeurs : messages:send, messages:read, templates:manage, webhooks:manage, connections:read, connections:manage, usage:read |
Exemple
curl -X POST "$INBOX_API/apps/APP_ID/keys" \
-H "Authorization: Bearer $INBOX_SESSION" \
-H "Content-Type: application/json" \
-d '{
"name": "Dev local",
"environment": "sandbox",
"scopes": [
"messages:send",
"messages:read",
"connections:manage",
"connections:read",
"templates:manage",
"webhooks:manage",
"usage:read"
]
}'const res = await fetch(`${process.env.INBOX_API}/apps/APP_ID/keys`, {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.INBOX_SESSION}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"name": "Dev local",
"environment": "sandbox",
"scopes": [
"messages:send",
"messages:read",
"connections:manage",
"connections:read",
"templates:manage",
"webhooks:manage",
"usage:read"
]
}),
});
const data = await res.json();import os
import requests
res = requests.post(
f"{os.environ['INBOX_API']}/apps/APP_ID/keys",
headers={
"Authorization": f"Bearer {os.environ['INBOX_SESSION']}",
},
json={
"name": "Dev local",
"environment": "sandbox",
"scopes": [
"messages:send",
"messages:read",
"connections:manage",
"connections:read",
"templates:manage",
"webhooks:manage",
"usage:read",
],
},
)
print(res.json())<?php
$ch = curl_init(getenv('INBOX_API') . '/apps/APP_ID/keys');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('INBOX_SESSION'),
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'name' => 'Dev local',
'environment' => 'sandbox',
'scopes' => [
'messages:send',
'messages:read',
'connections:manage',
'connections:read',
'templates:manage',
'webhooks:manage',
'usage:read',
],
]),
]);
$data = json_decode(curl_exec($ch), true);{
"id": "5ef37bc9-8aac-43ef-81b1-6bb3bdb66e78",
"name": "Dev local",
"prefix": "pk_test_bwcA3X-A",
"environment": "sandbox",
"scopes": [
"messages:send",
"messages:read",
"connections:manage",
"connections:read",
"templates:manage",
"webhooks:manage",
"usage:read"
],
"lastUsedAt": null,
"revokedAt": null,
"createdAt": "2026-11-12T08:33:45.382Z",
"secret": "pk_test_26f602c48c47ef280792fd3a506473688df70b80118"
}Lister les clés d'une application (sans secret)#
GET/apps/{appId}/keys
- Authentification
- Session du portail (Bearer ses_…)
Paramètres
| Nom | Emplacement | Type | Description |
|---|---|---|---|
appIdrequis | chemin | string | Identifiant de l'application. |
Exemple
curl "$INBOX_API/apps/APP_ID/keys" \
-H "Authorization: Bearer $INBOX_SESSION"const res = await fetch(`${process.env.INBOX_API}/apps/APP_ID/keys`, {
headers: {
Authorization: `Bearer ${process.env.INBOX_SESSION}`,
},
});
const data = await res.json();import os
import requests
res = requests.get(
f"{os.environ['INBOX_API']}/apps/APP_ID/keys",
headers={
"Authorization": f"Bearer {os.environ['INBOX_SESSION']}",
},
)
print(res.json())<?php
$ch = curl_init(getenv('INBOX_API') . '/apps/APP_ID/keys');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('INBOX_SESSION'),
],
]);
$data = json_decode(curl_exec($ch), true);[
{
"id": "5ef37bc9-8aac-43ef-81b1-6bb3bdb66e78",
"name": "Dev local",
"prefix": "pk_test_bwcA3X-A",
"environment": "sandbox",
"scopes": [
"messages:send",
"messages:read",
"connections:manage",
"connections:read",
"templates:manage",
"webhooks:manage",
"usage:read"
],
"lastUsedAt": null,
"revokedAt": null,
"createdAt": "2026-11-12T08:33:45.382Z"
}
]Révoquer une clé API#
DELETE/apps/{appId}/keys/{keyId}
- Authentification
- Session du portail (Bearer ses_…)
Paramètres
| Nom | Emplacement | Type | Description |
|---|---|---|---|
keyIdrequis | chemin | string | Identifiant de la clé API. |
Exemple
curl -X DELETE "$INBOX_API/apps/APP_ID/keys/KEY_ID" \
-H "Authorization: Bearer $INBOX_SESSION"const res = await fetch(`${process.env.INBOX_API}/apps/APP_ID/keys/KEY_ID`, {
method: "DELETE",
headers: {
Authorization: `Bearer ${process.env.INBOX_SESSION}`,
},
});
const data = res.status;import os
import requests
res = requests.delete(
f"{os.environ['INBOX_API']}/apps/APP_ID/keys/KEY_ID",
headers={
"Authorization": f"Bearer {os.environ['INBOX_SESSION']}",
},
)
print(res.status_code)<?php
$ch = curl_init(getenv('INBOX_API') . '/apps/APP_ID/keys/KEY_ID');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'DELETE',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('INBOX_SESSION'),
],
]);
curl_exec($ch);
echo curl_getinfo($ch, CURLINFO_HTTP_CODE);(aucun contenu)