Autenticação
Every request must include your API key as a Bearer token and your Workspace ID. You can create API keys from Dashboard → Settings → API Keys (Growth plan required).
En-têtes obligatoires
Authorization: Bearer sk_aBcDeFgHiJkLmNoPqRsTuVwXyZ1234567890abcd Content-Type: application/json
L'espace de travail est déterminé automatiquement à partir de la clé API. Aucun en-tête X-Workspace-Id n'est requis. La clé n'est affichée qu'une seule fois lors de la création ; conservez-la en toute sécurité.
Exemple rapide. Créer un post
curl https://useinmedia.com/api/v1/posts \
-X POST \
-H "Authorization: Bearer sk_..." \
-H "Content-Type: application/json" \
-d '{"title":"My post","prompt":"Bold product post for Instagram"}'import requests
response = requests.post(
"https://useinmedia.com/api/v1/posts",
headers={"Authorization": "Bearer sk_..."},
json={
"title": "My post",
"prompt": "Bold product post for Instagram",
}
)
post = response.json()const response = await fetch("https://useinmedia.com/api/v1/posts", {
method: "POST",
headers: {
"Authorization": "Bearer sk_...",
"Content-Type": "application/json",
},
body: JSON.stringify({
title: "My post",
prompt: "Bold product post for Instagram",
}),
});
const post = await response.json();using var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer sk_...");
var payload = new {
title = "My post",
prompt = "Bold product post for Instagram"
};
var response = await client.PostAsJsonAsync(
"https://useinmedia.com/api/v1/posts", payload);
var post = await response.Content.ReadFromJsonAsync<JsonDocument>();<?php
$ch = curl_init("https://useinmedia.com/api/v1/posts");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer sk_...",
"Content-Type: application/json",
],
CURLOPT_POSTFIELDS => json_encode([
"title" => "My post",
"prompt" => "Bold product post for Instagram",
]),
]);
$post = json_decode(curl_exec($ch), true);Codes d'erreur
| Code | Signification |
|---|---|
| 400 | Requête invalide. Paramètres incorrects |
| 401 | Non autorisé. Clé API manquante ou invalide |
| 403 | Interdit. Ressource non disponible sur votre plan |
| 404 | Non trouvé. La ressource n'existe pas |
| 429 | Limite de débit dépassée. Réduisez la fréquence |
Événements de Webhook
Passez une liste d'événements séparés par des virgules au champ events lors de la création d'un webhook.
Format du payload
Chaque livraison de webhook est une requête POST avec le corps JSON suivant :
{
"event": "post.published",
"workspaceId": "a1b2c3d4-...",
"timestamp": "2026-04-14T15:30:00Z",
"data": {
"id": "3f7a1b2c-...",
"title": "Air Jordan launch",
"status": "published",
"imageUrl": "https://...",
"publishedAt": "2026-04-14T15:30:00Z"
}
}
Segurança do Webhook
Si vous fournissez un secret lors de la création d'un webhook, InMedia signera chaque livraison avec HMAC-SHA256. Vérifiez la signature pour vous assurer que la requête provient d'InMedia.
En-tête de signature
X-InMedia-Signature: sha256=abc123...
La valeur est le digest hexadécimal HMAC-SHA256 du corps brut de la requête en utilisant votre secret webhook comme clé.
Vérification de signature
const crypto = require('crypto');
function verifySignature(payload, signature, secret) {
const expected = 'sha256=' +
crypto.createHmac('sha256', secret)
.update(payload, 'utf8')
.digest('hex');
return crypto.timingSafeEqual(
Buffer.from(signature),
Buffer.from(expected)
);
}import hmac, hashlib
def verify_signature(payload: bytes, signature: str, secret: str) -> bool:
expected = 'sha256=' + hmac.new(
secret.encode(), payload, hashlib.sha256
).hexdigest()
return hmac.compare_digest(signature, expected)using System.Security.Cryptography;
using System.Text;
bool VerifySignature(byte[] payload, string signature, string secret)
{
using var hmac = new HMACSHA256(Encoding.UTF8.GetBytes(secret));
var hash = hmac.ComputeHash(payload);
var expected = "sha256=" + Convert.ToHexString(hash).ToLower();
return CryptographicOperations.FixedTimeEquals(
Encoding.UTF8.GetBytes(signature),
Encoding.UTF8.GetBytes(expected)
);
}<?php
function verify_signature(
string $payload,
string $signature,
string $secret
): bool {
$expected = 'sha256=' . hash_hmac('sha256', $payload, $secret);
return hash_equals($expected, $signature);
}Posts
Créer et gérer des publications. Appelez POST /{id}/generate après avoir créé une publication pour produire du contenu AI.
| Nom | Type | Obrigatório | Descrição |
|---|---|---|---|
| status | string | optional | Filtrer par statut : brouillon | programmé | publié | échoué |
| page | integer | optional | Numéro de page (défaut : 1) |
| pageSize | integer | optional | Éléments par page, max 100 (défaut : 20) |
curl https://useinmedia.com/api/v1/posts \ -H "Authorization: Bearer sk_..."
[
{
"id": "3f7a1b2c-...",
"workspaceId": "a1b2c3d4-...",
"projectId": "e5f6g7h8-...",
"title": "Air Jordan launch",
"prompt": "Bold Instagram post for sneaker drop",
"status": "published",
"imageUrl": "https://...",
"hasVideo": false,
"format": "instagram_square",
"createdAt": "2026-04-14T12:00:00Z"
}
]| Nom | Type | Obrigatório | Descrição |
|---|---|---|---|
| title | string | required | Titre du post (max 200 caractères) |
| prompt | string | required | Invite de génération (max 5000 caractères) |
| projectId | guid | required | Projet à associer au post |
| brandKitId | guid | optional | Brand Kit à appliquer lors de la génération |
{
"title": "Air Jordan launch",
"prompt": "Bold Instagram post for a sneaker drop. Black and gold palette.",
"projectId": "e5f6g7h8-...",
"brandKitId": "k1l2m3n4-..."
}curl https://useinmedia.com/api/v1/posts \
-X POST \
-H "Authorization: Bearer sk_..." \
-H "Content-Type: application/json" \
-d '{ "title": "Air Jordan launch", "prompt": "Bold Instagram post for a sneaker drop. Black and gold palette.", "projectId": "e5f6g7h8-...", "brandKitId": "k1l2m3n4-..." }'
{
"id": "3f7a1b2c-...",
"title": "Air Jordan launch",
"status": "draft",
"imageUrl": "https://...",
"hasVideo": false,
"createdAt": "2026-04-14T12:00:00Z"
}curl https://useinmedia.com/api/v1/posts/<id> \ -H "Authorization: Bearer sk_..."
{
"id": "3f7a1b2c-...",
"workspaceId": "a1b2c3d4-...",
"projectId": "e5f6g7h8-...",
"title": "Air Jordan launch",
"prompt": "Bold Instagram post for sneaker drop",
"status": "published",
"imageUrl": "https://...",
"hasVideo": false,
"format": "instagram_square",
"brandKitId": null,
"scheduledAt": null,
"publishedAt": "2026-04-14T15:30:00Z",
"createdAt": "2026-04-14T12:00:00Z",
"updatedAt": "2026-04-14T15:30:00Z"
}curl https://useinmedia.com/api/v1/posts/project/<projectId> \ -H "Authorization: Bearer sk_..."
[ { "id": "...", "title": "..." } ]| Nom | Type | Obrigatório | Descrição |
|---|---|---|---|
| title | string | optional | Nouveau titre (max 200 caractères) |
| prompt | string | optional | Nouveau prompt (max 5000 caractères) |
| status | string | optional | draft | scheduled | published | failed |
| scheduledAt | datetime | optional | Date/heure programmée ISO 8601 |
| brandKitId | guid | optional | Brand Kit à appliquer |
{ "title": "Updated title", "status": "draft" }curl https://useinmedia.com/api/v1/posts/<id> \
-X PUT \
-H "Authorization: Bearer sk_..." \
-H "Content-Type: application/json" \
-d '{ "title": "Updated title", "status": "draft" }'
{
"id": "3f7a1b2c-...",
"title": "Updated title",
"status": "draft",
"updatedAt": "2026-04-14T13:00:00Z"
}curl https://useinmedia.com/api/v1/posts/<id> \ -X DELETE \ -H "Authorization: Bearer sk_..."
204 No Content
| Nom | Type | Obrigatório | Descrição |
|---|---|---|---|
| prompt | string | optional | Nouveau prompt ; omettre pour régénérer avec le prompt existant |
| format | string | optional | Proporção: 1:1 | 9:16 | 16:9 (padrão: 1:1) |
{ "prompt": "Make it more energetic", "format": "1:1" }curl https://useinmedia.com/api/v1/posts/<id>/generate \
-X POST \
-H "Authorization: Bearer sk_..." \
-H "Content-Type: application/json" \
-d '{ "prompt": "Make it more energetic", "format": "1:1" }'
{
"post": {
"id": "3f7a1b2c-...",
"status": "draft",
"imageUrl": "https://...",
"hasVideo": false,
"updatedAt": "2026-04-14T13:00:00Z"
},
"respond": "Updated the design with more vibrant colors."
}curl https://useinmedia.com/api/v1/posts/<id>/render \ -X POST \ -H "Authorization: Bearer sk_..."
{ "id": "...", "imageUrl": "https://...", "status": "draft" }curl https://useinmedia.com/api/v1/posts/<id>/publish \ -X POST \ -H "Authorization: Bearer sk_..."
{ "id": "...", "status": "published", "publishedAt": "2026-04-14T15:30:00Z" }| Nom | Type | Obrigatório | Descrição |
|---|---|---|---|
| scheduledAt | datetime | required | Date/heure de publication ISO 8601 (UTC) |
{ "scheduledAt": "2026-04-15T09:00:00Z" }curl https://useinmedia.com/api/v1/posts/<id>/schedule \
-X POST \
-H "Authorization: Bearer sk_..." \
-H "Content-Type: application/json" \
-d '{ "scheduledAt": "2026-04-15T09:00:00Z" }'
{ "id": "...", "status": "scheduled", "scheduledAt": "2026-04-15T09:00:00Z" }| Nom | Type | Obrigatório | Descrição |
|---|---|---|---|
| connectionIds | guid[] | required | Liste des ID de connexion sociale à publier |
| scheduledAt | datetime | optional | Si renseigné, planifier au lieu de publier immédiatement |
{
"connectionIds": ["conn-uuid-1", "conn-uuid-2"],
"scheduledAt": null
}curl https://useinmedia.com/api/v1/posts/<id>/publish-social \
-X POST \
-H "Authorization: Bearer sk_..." \
-H "Content-Type: application/json" \
-d '{ "connectionIds": ["conn-uuid-1", "conn-uuid-2"], "scheduledAt": null }'
[
{
"connectionId": "conn-uuid-1",
"platform": "Instagram",
"status": "Published",
"externalPostId": "ext-123",
"errorMessage": null
}
]curl https://useinmedia.com/api/v1/posts/<id>/publish-targets \ -H "Authorization: Bearer sk_..."
[
{
"connectionId": "conn-uuid-1",
"platform": "Instagram",
"status": "Published",
"externalPostId": "ext-123",
"errorMessage": null
}
]| Nom | Type | Obrigatório | Descrição |
|---|---|---|---|
| format | string | optional | png (padrão) ou jpg |
curl https://useinmedia.com/api/v1/posts/<id>/download \ -H "Authorization: Bearer sk_..."
Fichier binaire (image/png ou image/jpeg)
curl https://useinmedia.com/api/v1/posts/<id>/versions \ -H "Authorization: Bearer sk_..."
[
{
"id": "ver-uuid-...",
"versionNumber": 3,
"label": "Dark theme variant",
"createdAt": "2026-04-14T12:00:00Z"
}
]curl https://useinmedia.com/api/v1/posts/<id>/versions/<versionId>/restore \ -X POST \ -H "Authorization: Bearer sk_..."
{ "id": "...", "status": "draft", "imageUrl": "https://...", "updatedAt": "2026-04-14T13:00:00Z" }Projects
Organisez les publications sous des projets. Le plan Starter est limité à 3 projets actifs.
| Nom | Type | Obrigatório | Descrição |
|---|---|---|---|
| status | string | optional | Filtrer : actif | archivé |
curl https://useinmedia.com/api/v1/projects \ -H "Authorization: Bearer sk_..."
[
{
"id": "e5f6g7h8-...",
"name": "Nike Campaign",
"description": "Q2 2026 drop",
"icon": "👟",
"color": "#00f2ff",
"status": "active",
"createdAt": "2026-01-10T09:00:00Z"
}
]| Nom | Type | Obrigatório | Descrição |
|---|---|---|---|
| name | string | required | Nom du projet |
| description | string | optional | Description optionnelle |
| icon | string | optional | Emoji icône |
| color | string | optional | Couleur hex ex : #00f2ff |
{
"name": "Nike Campaign",
"description": "Q2 2026 drop",
"icon": "👟",
"color": "#00f2ff"
}curl https://useinmedia.com/api/v1/projects \
-X POST \
-H "Authorization: Bearer sk_..." \
-H "Content-Type: application/json" \
-d '{ "name": "Nike Campaign", "description": "Q2 2026 drop", "icon": "👟", "color": "#00f2ff" }'
{
"id": "e5f6g7h8-...",
"name": "Nike Campaign",
"status": "active",
"createdAt": "2026-04-14T12:00:00Z"
}| Nom | Type | Obrigatório | Descrição |
|---|---|---|---|
| name | string | optional | Nouveau nom |
| description | string | optional | Nouvelle description |
| status | string | optional | actif | archivé |
{ "name": "Nike Campaign v2", "status": "archived" }curl https://useinmedia.com/api/v1/projects/<id> \
-X PUT \
-H "Authorization: Bearer sk_..." \
-H "Content-Type: application/json" \
-d '{ "name": "Nike Campaign v2", "status": "archived" }'
{ "id": "...", "name": "Nike Campaign v2", "status": "archived" }curl https://useinmedia.com/api/v1/projects/<id> \ -H "Authorization: Bearer sk_..."
{
"id": "e5f6g7h8-...",
"name": "Nike Campaign",
"description": "Q2 2026 drop",
"icon": "👟",
"color": "#00f2ff",
"status": "active",
"coverUrl": "https://...",
"createdAt": "2026-01-10T09:00:00Z"
}| Nom | Type | Obrigatório | Descrição |
|---|---|---|---|
| file | file | required | JPEG, PNG ou WebP. Max 10 Mo |
curl https://useinmedia.com/api/v1/projects/<id>/cover \ -X POST \ -H "Authorization: Bearer sk_..."
{ "id": "...", "coverUrl": "https://...", "name": "Nike Campaign" }curl https://useinmedia.com/api/v1/projects/<id>/cover \ -X DELETE \ -H "Authorization: Bearer sk_..."
204 No Content
curl https://useinmedia.com/api/v1/projects/<id> \ -X DELETE \ -H "Authorization: Bearer sk_..."
204 No Content
Brand Kits
Enregistrez les couleurs, polices et logos de la marque. Le plan Starter est limité à 1 Brand Kit.
curl https://useinmedia.com/api/v1/brandkits \ -H "Authorization: Bearer sk_..."
[
{
"id": "k1l2m3n4-...",
"name": "Main Brand",
"colorsJson": "{\"primary\":\"#00f2ff\",\"secondary\":\"#020408\"}",
"fontsJson": "{\"heading\":\"Plus Jakarta Sans\",\"body\":\"Inter\"}",
"logoUrl": "https://..."
}
]| Nom | Type | Obrigatório | Descrição |
|---|---|---|---|
| name | string | required | Nom du Brand Kit |
| colors.primary | string | optional | Couleur principale hex |
| colors.secondary | string | optional | Couleur secondaire hex |
| colors.accent | string | optional | Couleur de mise en évidence hex |
| colors.neutral | string | optional | Couleur neutre hex |
| fonts.heading | string | optional | Police de titre |
| fonts.body | string | optional | Police du corps |
| logoUrl | string | optional | URL publique de l'image du logo |
{
"name": "Main Brand",
"colors": {
"primary": "#00f2ff",
"secondary": "#020408",
"accent": "#ffffff",
"neutral": "#888888"
},
"fonts": {
"heading": "Plus Jakarta Sans",
"body": "Inter"
},
"logoUrl": "https://example.com/logo.png"
}curl https://useinmedia.com/api/v1/brandkits \
-X POST \
-H "Authorization: Bearer sk_..." \
-H "Content-Type: application/json" \
-d '{ "name": "Main Brand", "colors": { "primary": "#00f2ff", "secondary": "#020408", "accent": "#ffffff", "neutral": "#888888" }, "fonts": { "heading": "Plus Jakarta Sans", "body": "Inter" }, "logoUrl": "https://example.com/logo.png" }'
{ "id": "k1l2m3n4-...", "name": "Main Brand", ... }| Nom | Type | Obrigatório | Descrição |
|---|---|---|---|
| name | string | optional | Nouveau nom |
| colors | object | optional | Couleurs à mettre à jour (même format que la création) |
| fonts | object | optional | Polices à mettre à jour |
{ "colors": { "primary": "#ff5733" } }curl https://useinmedia.com/api/v1/brandkits/<id> \
-X PUT \
-H "Authorization: Bearer sk_..." \
-H "Content-Type: application/json" \
-d '{ "colors": { "primary": "#ff5733" } }'
{ "id": "...", "name": "Main Brand", ... }curl https://useinmedia.com/api/v1/brandkits/<id> \ -H "Authorization: Bearer sk_..."
{
"id": "k1l2m3n4-...",
"name": "Main Brand",
"colorsJson": "{\"primary\":\"#00f2ff\",\"secondary\":\"#020408\"}",
"fontsJson": "{\"heading\":\"Plus Jakarta Sans\",\"body\":\"Inter\"}",
"logoUrl": "https://..."
}curl https://useinmedia.com/api/v1/brandkits/<id> \ -X DELETE \ -H "Authorization: Bearer sk_..."
204 No Content
Programmes
Automatisez la génération de contenu récurrente avec des horaires cron. Nécessite le plan Growth.
curl https://useinmedia.com/api/v1/schedules \ -H "Authorization: Bearer sk_..."
[
{
"id": "s1s2s3s4-...",
"name": "Daily Instagram Post",
"cronExpression": "0 9 * * *",
"isActive": true,
"promptTemplate": "Generate a motivational post for today.",
"nextRunAt": "2026-04-15T09:00:00Z"
}
]| Nom | Type | Obrigatório | Descrição |
|---|---|---|---|
| name | string | required | Nom du planning |
| cronExpression | string | required | Expression cron à 5 champs, ex: "0 9 * * 1" |
| promptTemplate | string | optional | Invite utilisée à chaque exécution (max 5000 caractères) |
| projectId | guid | optional | Projet des publications générées |
| brandKitId | guid | optional | Brand Kit à appliquer |
{
"name": "Daily Instagram Post",
"cronExpression": "0 9 * * *",
"promptTemplate": "Generate a motivational post for today.",
"projectId": "e5f6g7h8-...",
"brandKitId": "k1l2m3n4-..."
}curl https://useinmedia.com/api/v1/schedules \
-X POST \
-H "Authorization: Bearer sk_..." \
-H "Content-Type: application/json" \
-d '{ "name": "Daily Instagram Post", "cronExpression": "0 9 * * *", "promptTemplate": "Generate a motivational post for today.", "projectId": "e5f6g7h8-...", "brandKitId": "k1l2m3n4-..." }'
{
"id": "s1s2s3s4-...",
"name": "Daily Instagram Post",
"cronExpression": "0 9 * * *",
"isActive": true,
"nextRunAt": "2026-04-15T09:00:00Z"
}| Nom | Type | Obrigatório | Descrição |
|---|---|---|---|
| name | string | optional | Nouveau nom |
| cronExpression | string | optional | Nouvelle expression cron |
| isActive | boolean | optional | Activer ou désactiver le planning |
| promptTemplate | string | optional | Nouveau modèle de prompt |
{ "isActive": false }curl https://useinmedia.com/api/v1/schedules/<id> \
-X PUT \
-H "Authorization: Bearer sk_..." \
-H "Content-Type: application/json" \
-d '{ "isActive": false }'
{ "id": "...", "isActive": false, ... }curl https://useinmedia.com/api/v1/schedules/<id> \ -H "Authorization: Bearer sk_..."
{
"id": "s1s2s3s4-...",
"name": "Daily Instagram Post",
"cronExpression": "0 9 * * *",
"isActive": true,
"promptTemplate": "Generate a motivational post for today.",
"lastRunAt": "2026-04-13T09:00:00Z",
"nextRunAt": "2026-04-15T09:00:00Z"
}curl https://useinmedia.com/api/v1/schedules/<id> \ -X DELETE \ -H "Authorization: Bearer sk_..."
204 No Content
Webhooks
Recevez des notifications HTTP en temps réel lorsque des événements se produisent dans votre espace de travail. Nécessite le plan Growth.
curl https://useinmedia.com/api/v1/webhooks \ -H "Authorization: Bearer sk_..."
[
{
"id": "w1w2w3w4-...",
"url": "https://yourapp.com/hooks/inmedia",
"events": "post.published,post.failed",
"isActive": true,
"lastTriggeredAt": "2026-04-14T10:00:00Z"
}
]| Nom | Type | Obrigatório | Descrição |
|---|---|---|---|
| url | string | required | Point de terminaison HTTPS pour recevoir des événements |
| events | string | required | Noms d'événements séparés par des virgules (voir section Événements) |
| secret | string | optional | Secret optionnel pour la vérification de signature HMAC-SHA256 |
{
"url": "https://yourapp.com/hooks/inmedia",
"events": "post.published,post.failed",
"secret": "my-webhook-secret"
}curl https://useinmedia.com/api/v1/webhooks \
-X POST \
-H "Authorization: Bearer sk_..." \
-H "Content-Type: application/json" \
-d '{ "url": "https://yourapp.com/hooks/inmedia", "events": "post.published,post.failed", "secret": "my-webhook-secret" }'
{
"id": "w1w2w3w4-...",
"url": "https://yourapp.com/hooks/inmedia",
"events": "post.published,post.failed",
"isActive": true,
"createdAt": "2026-04-14T12:00:00Z"
}| Nom | Type | Obrigatório | Descrição |
|---|---|---|---|
| url | string | optional | Nouvelle URL du point de terminaison |
| events | string | optional | Nouvelle liste d'événements |
| isActive | boolean | optional | Activer ou désactiver |
{ "isActive": false }curl https://useinmedia.com/api/v1/webhooks/<id> \
-X PUT \
-H "Authorization: Bearer sk_..." \
-H "Content-Type: application/json" \
-d '{ "isActive": false }'
{ "id": "...", "isActive": false, ... }curl https://useinmedia.com/api/v1/webhooks/<id> \ -X DELETE \ -H "Authorization: Bearer sk_..."
204 No Content
Video
Interrogez les tâches de génération vidéo et récupérez les URLs pré-signées. La génération vidéo est initiée depuis l'éditeur du tableau de bord.
curl https://useinmedia.com/api/v1/video/jobs/<jobId> \ -H "Authorization: Bearer sk_..."
{
"status": "done",
"postId": "e5f6g7h8-...",
"videoUrl": "https://presigned-s3-url...",
"message": "Video generated successfully!",
"error": null
}curl https://useinmedia.com/api/v1/video/presign/<postId> \ -H "Authorization: Bearer sk_..."
{ "url": "https://presigned-s3-url..." }Utilisation
Vérifiez votre quota de plan et l'activité de génération.
| Nom | Type | Obrigatório | Descrição |
|---|---|---|---|
| page | integer | optional | Numéro de page (par défaut : 1) |
| pageSize | integer | optional | Éléments par page (par défaut : 50) |
curl https://useinmedia.com/api/v1/usage/activity \ -H "Authorization: Bearer sk_..."
{
"activity": [
{
"id": "t1t2t3t4-...",
"type": "PostGeneration",
"typeLabel": "Content generation",
"description": "Air Jordan launch",
"createdAt": "2026-04-14T12:00:00Z"
}
]
}API Keys
Créez et gérez des clés API programmatiques. Nécessite le plan Growth.
curl https://useinmedia.com/api/v1/api-keys \ -H "Authorization: Bearer sk_..."
[
{
"id": "key-uuid-...",
"name": "Production key",
"keyPrefix": "sk_abcd",
"isActive": true,
"lastUsedAt": "2026-04-13T08:00:00Z",
"expiresAt": null,
"createdAt": "2026-01-01T00:00:00Z"
}
]| Nom | Type | Obrigatório | Descrição |
|---|---|---|---|
| name | string | required | Nom descriptif pour la clé |
| expiresAt | datetime | optional | Expiration optionnelle (ISO 8601) |
{ "name": "Production key" }curl https://useinmedia.com/api/v1/api-keys \
-X POST \
-H "Authorization: Bearer sk_..." \
-H "Content-Type: application/json" \
-d '{ "name": "Production key" }'
{
"id": "key-uuid-...",
"key": "sk_aBcDeFgHiJkLmNoPqRsTuVwXyZ1234567890abcd",
"prefix": "sk_aBcDe",
"name": "Production key"
}curl https://useinmedia.com/api/v1/api-keys/<id> \ -X DELETE \ -H "Authorization: Bearer sk_..."
204 No Content
curl https://useinmedia.com/api/v1/api-keys/<id>/regenerate \ -X POST \ -H "Authorization: Bearer sk_..."
{ "id": "...", "key": "sk_NEW...", "prefix": "sk_NEW" }