Pour les agents IA

Connectez votre agent en une étape. Il gère vos réseaux sociaux.

Markaestro est conçu pour être piloté par du logiciel. Un client MCP comme Claude Code se connecte via le navigateur et reçoit une clé liée à une seule marque ; tout autre agent obtient la même clé depuis les Paramètres. Dans les deux cas, l'agent peut découvrir sur quels comptes il peut publier, importer des médias, rédiger et planifier des posts, les publier et rendre compte de ce qui est réellement parti, sur Facebook, Instagram, TikTok, LinkedIn, Threads et Pinterest.

Aucun SDK à installer, aucun identifiant de plateforme à surveiller. Votre équipe connecte les comptes une fois dans le tableau de bord ; l'agent parle ensuite à une seule API à jeton bearer.

Conçu pour l'autonomie, limité à dessein

Pourquoi une clé API constitue toute l'intégration

La difficulté de laisser un agent toucher aux réseaux sociaux n'est pas le HTTP. C'est de s'assurer qu'un modèle en confusion ne puisse pas publier sur la mauvaise marque, publier en double lors d'une nouvelle tentative, ou envoyer quelque chose que personne n'a relu. Ces garanties se trouvent dans la surface de l'API elle-même, pas dans votre prompt.

Une clé, une marque
Chaque clé API est limitée à une seule marque à sa création. Un agent disposant de cette clé ne peut voir et publier que sur cette marque, les demandes inter-marques sont rejetées à l'authentification, pas par convention.
Découverte, pas d'ids figés
L'agent demande sur quels comptes il peut publier et reçoit des ids opaques qu'il peut renvoyer tels quels. Pas d'ids de Page, pas d'exploration du Business Manager, pas de fichier de configuration qui devient obsolète quand une connexion est relinkée.
Écritures idempotentes
Envoyez une Idempotency-Key à chaque création ou publication. Un appel répété en moins de 24 heures reproduit la réponse d'origine au lieu de créer une seconde publication, l'échec le plus courant chez les agents.
Une personne reste toujours dans la boucle
Les publications Facebook, Instagram et TikTok sont en publication manuelle : votre agent les prépare, une personne les publie de façon native. Rien ne sort sans supervision, sauf si vous activez explicitement cette option pour cette publication.

Clients MCP

Connectez-vous depuis le client. Rien à coller.

Claude Code, Claude, Cursor, ChatGPT, Grok, Grok Bot, OpenClaw, Hermes et tout autre client parlant le Model Context Protocol peuvent se connecter au serveur MCP hébergé de Markaestro sans aucun identifiant configuré. Le premier appel d'outil ouvre votre navigateur : connectez-vous, choisissez l'espace de travail et la marque sur laquelle l'agent peut agir, vérifiez les autorisations et cliquez sur Autoriser. Le client reçoit une clé liée à cette marque et la renouvelle tout seul.

Il s'agit d'OAuth 2.1 standard avec PKCE et enregistrement dynamique des clients, le même mécanisme que les autres serveurs MCP hébergés, donc cela fonctionne sans plugin propre à Markaestro. Le serveur se trouve à https://markaestro.com/api/public/v1/mcp et expose trente et un outils au-dessus de l'API publique : découverte des marques et destinations, import de médias, brouillons et posts planifiés, publication avec suivi des exécutions, opérations en masse, webhooks et règles par canal.

Connectez votre agent

Choisissez votre agent. Trois étapes, puis il peut publier.

Chaque client ci-dessous atteint le même serveur MCP hébergé. La plupart se connectent via le navigateur : le premier appel d'outil ouvre une page de consentement où vous choisissez l'espace de travail et la marque sur laquelle l'agent peut agir, et le client reçoit une clé liée à cette marque. Les clients qui ne peuvent pas ouvrir de navigateur utilisent une clé API d'espace de travail. Même serveur, mêmes autorisations, même liste dans les Paramètres.

Claude Code

Le plugin installe la skill et le serveur hébergé ensemble. Rien à configurer, rien à coller.

Connexion ou clé APIDocumentation Claude Code
01

Avant de commencer

  • Vous êtes propriétaire ou administrateur de l'espace de travail avec un e-mail vérifié, sur un espace avec un forfait actif et au moins une marque.
  • Claude Code est installé et connecté à votre compte Anthropic.
03

Se connecter

  1. Posez à Claude une question sur Markaestro, ou exécutez /mcp et choisissez markaestro.
  2. Votre navigateur ouvre la page de consentement. Choisissez l'espace de travail et la marque, vérifiez les autorisations, cliquez sur Autoriser.
  3. Pour changer de marque plus tard, exécutez /mcp à nouveau, déconnectez-vous et reconnectez-vous avec l'autre marque.
Préférez la connexion. N'utilisez une clé que si le client ne peut pas ouvrir de navigateur.
04

Vérifier

  • Demandez à l'agent d'appeler list_products. Il doit répondre avec la seule marque autorisée et ses canaux connectés.
  • La connexion figure dans Paramètres, API avec le badge Agent connecté, sa dernière utilisation et son volume de requêtes. Vous pouvez la révoquer là à tout moment.
Ouvrir Paramètres, API
02

Ajouter le serveur

  1. Exécutez les deux commandes du plugin dans un terminal, ou ajoutez seulement le serveur avec la troisième commande.
Bash
# The plugin bundles the skill and the hosted server.
claude plugin marketplace add D3vBaba/Markaestro
claude plugin install markaestro@markaestro

# Or add just the server. No key, no header: the first call opens the browser.
claude mcp add --transport http markaestro https://markaestro.com/api/public/v1/mcp

Ce qui se passe quand le client se connecte

Cinq étapes, toutes prises en charge par le client et le navigateur. Vous ne voyez que la page de consentement.

01Défi
POST /api/public/v1/mcp → 401 + WWW-Authenticate

Le client appelle le point de terminaison MCP sans identifiant. Markaestro répond 401 avec un en-tête WWW-Authenticate qui nomme le document de métadonnées de la ressource protégée. C'est cet en-tête qui indique au client qu'une connexion est possible.

02Découverte
GET /.well-known/oauth-protected-resource · /.well-known/oauth-authorization-server

Le client lit deux documents publics : quel serveur d'autorisation protège le point de terminaison, et où se trouvent ses points d'enregistrement, d'autorisation et de jeton. Les deux sont servis sur markaestro.com et peuvent être mis en cache.

03Enregistrement
POST /api/public/v1/oauth/register

Le client s'enregistre avec un nom et son adresse de retour. Les adresses loopback, les retours https et les schémas d'applications natives sont acceptés ; le http simple vers un vrai hôte est refusé. Aucun identifiant client prépartagé n'est nécessaire.

04Consentement
GET /oauth/authorize (browser)

Votre navigateur ouvre la page de consentement. Un propriétaire ou administrateur de l'espace de travail avec e-mail vérifié choisit l'espace et la marque, ajuste les autorisations et clique sur Autoriser. Markaestro renvoie le navigateur vers le client avec un code à usage unique.

05Jeton d'accès
POST /api/public/v1/oauth/token

Le client échange le code et son vérificateur PKCE contre un jeton d'accès et un jeton de rafraîchissement. Le jeton d'accès est une clé API d'espace de travail ordinaire, liée à la marque choisie. Il expire après 30 jours ; un rafraîchissement fait tourner son secret et le prolonge de 30 jours.

Le jeton est une vraie clé API

Scopes, liaison à la marque, limites de débit, contrôles d'abonnement, idempotence et révocation passent par le même code qu'une clé créée à la main. Il n'y a pas de second modèle d'autorisations à comprendre.

Listé et révocable dans les Paramètres

Un agent connecté apparaît dans Paramètres, API avec le badge Agent connecté, sa dernière utilisation et son volume de requêtes. Révoquez-le là et le prochain appel du client échoue ; le client peut aussi révoquer son propre jeton quand vous le déconnectez.

Une connexion, une marque

Chaque connexion est liée à exactement une marque, choisie au consentement. Pour qu'un agent travaille sur une seconde marque, reconnectez-le et choisissez cette marque. Un client ne peut jamais atteindre une marque qui ne lui a pas été accordée.

Codes et jetons de rafraîchissement à usage unique

Les codes d'autorisation vivent dix minutes et sont consommés de façon atomique, donc un code rejoué échoue. Les jetons de rafraîchissement tournent à chaque usage et sont stockés hachés. Les enregistrements de clients inactifs expirent après 180 jours.

Points de terminaison

Pour qui construit un client MCP ou audite le flux. Tout est découvrable depuis les deux documents well-known ; rien ici ne se configure à la main.

Référence
# Discovery (public, cacheable)
GET  /.well-known/oauth-protected-resource            RFC 9728
GET  /.well-known/oauth-authorization-server          RFC 8414

# Authorization server
POST /api/public/v1/oauth/register                    RFC 7591, public clients (PKCE) or client_secret
GET  /oauth/authorize?response_type=code&client_id=…&redirect_uri=…
                     &code_challenge=…&code_challenge_method=S256&state=…
POST /api/public/v1/oauth/token                       grant_type=authorization_code | refresh_token
POST /api/public/v1/oauth/revoke                      RFC 7009

# Token response
{ "access_token": "mk_live_<ws>.<client>.<secret>", "token_type": "Bearer",
  "expires_in": 2592000, "refresh_token": "…", "scope": "products.read posts.write …" }

Le cycle de l'agent

Cinq appels, du début à la fin

Chaque automatisation Markaestro est une variation de ce cycle. Les étapes une à trois relèvent de l<connectLink>API Connect</connectLink>, la surface plate que la plupart des agents devraient viser. Les étapes quatre et cinq accèdent à lAPI complète /api/public/v1 pour la publication explicite et le suivi des exécutions.

01Découvrir
GET /api/connect/v1/social-accounts

Renvoie chaque compte connecté et publiable pour la marque de la clé, chacun avec plateforme, nom d'utilisateur et id opaque. Appelez-le au début de chaque exécution, les connexions changent.

02Importer un contenu
POST /api/connect/v1/media/create-upload-url → PUT

Générez une URL signée, à usage unique et de courte durée, puis envoyez les octets bruts via PUT. Vous recevez un id de contenu. Images jusqu'à 10 Mo ; l'API complète accepte aussi la vidéo jusqu'à 250 Mo.

03Rédiger ou programmer
POST /api/connect/v1/posts

Envoyez le texte, les ids de contenu et les ids de compte tels quels. Laissez en brouillon pour révision, ou envoyez is_draft false avec scheduled_at pour le placer sur le calendrier.

04Publier
POST /api/public/v1/posts/:id/publish

Met en file une exécution asynchrone. LinkedIn, Threads et Pinterest se publient via l'API officielle. Facebook, Instagram et TikTok arrivent dans la file « À publier » de l'espace de travail pour qu'une personne les publie de façon native.

05Rendre compte
GET /api/public/v1/job-runs/:id · webhooks

Consultez l'id de l'exécution, ou enregistrez un endpoint de webhook et laissez Markaestro vous envoyer post.published, post.action_required et post.failed. Ne supposez jamais qu'une publication s'est terminée de façon synchrone.

Démarrage rapide

Une intégration fonctionnelle en quatre commandes

D'abord, générez la clé : ouvrez Paramètres → API, choisissez la marque à laquelle elle aura accès, cochez les permissions nécessaires et, éventuellement, définissez une date d'expiration. La clé s'affiche une seule fois, placez-la directement dans le coffre à secrets de votre agent. Créer des clés nécessite un administrateur ou propriétaire avec un e-mail vérifié.

1. Découvrir les comptes
Le premier appel de chaque exécution. Les connexions changent ; les ids ne devraient jamais rester figés dans un prompt.
Bash
# The API is served from the marketing apex and the app subdomain alike.
export MARKAESTRO_URL="https://markaestro.com"
export MARKAESTRO_API_KEY="mk_live_<workspaceId>.<clientId>.<secret>"

# 1. What can this key post to?
curl -s "$MARKAESTRO_URL/api/connect/v1/social-accounts" \
  -H "Authorization: Bearer $MARKAESTRO_API_KEY"
Réponse
{
  "data": [
    {
      "id": "prod_123#instagram:instagram:ig_123",
      "product_id": "prod_123",
      "product": "Northwind Coffee",
      "platform": "instagram",
      "username": "northwindcoffee"
    }
  ]
}
2. Importer le contenu
Deux étapes : générez une URL signée à usage unique, puis envoyez les octets via PUT. L'URL expire après 15 minutes et ne nécessite pas d'en-tête d'authentification propre.
Bash
# 2. Mint a signed upload url, then PUT the bytes.
RESP=$(curl -s -X POST "$MARKAESTRO_URL/api/connect/v1/media/create-upload-url" \
  -H "Authorization: Bearer $MARKAESTRO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "mime_type": "image/png", "size_bytes": 184320, "name": "cold-brew.png" }')
# → { "media_id": "ast_777", "upload_url": "https://.../media/upload?token=..." }

curl -X PUT "<upload_url>" \
  -H "Content-Type: image/png" \
  --data-binary @cold-brew.png
3. Programmez-le, puis observez-le
La création est en mode brouillon par défaut. Envoyez is_draft: false avec un horodatage scheduled_at pour le placer sur le calendrier à la place.
Bash
# 3. Put it on the calendar. Pass the account id back verbatim.
curl -X POST "$MARKAESTRO_URL/api/connect/v1/posts" \
  -H "Authorization: Bearer $MARKAESTRO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "caption": "Cold brew season starts Friday.",
    "media": ["ast_777"],
    "social_accounts": ["prod_123#instagram:instagram:ig_123"],
    "is_draft": false,
    "scheduled_at": "2026-08-14T15:00:00.000Z"
  }'

# 4. Check where everything stands.
curl -s "$MARKAESTRO_URL/api/connect/v1/posts?limit=20" \
  -H "Authorization: Bearer $MARKAESTRO_API_KEY"

Prêt à l'emploi

Définitions d'outils et résumé pour l'agent

Deux choses à copier. La première est un ensemble de schémas d'outils couvrant tout le cycle de publication, écrits en JSON Schema, ils fonctionnent donc comme des définitions d'outils Claude, des fonctions OpenAI, ou la forme d'entrée pour un serveur MCP que vous hébergez. La seconde est le résumé opérationnel qui empêche un modèle de faire quelque chose d'inattendu avec eux.

Schémas d'outils
Six outils : lister les comptes, importer un contenu, créer, publier, lister, supprimer. Connectez chacun à l'endpoint correspondant ci-dessus.
tools.json
[
  {
    "name": "markaestro_list_accounts",
    "description": "List the social accounts this Markaestro key can publish to. Call this first in every run. Never hardcode account ids. Returns id, platform, and username.",
    "input_schema": { "type": "object", "properties": {}, "required": [] }
  },
  {
    "name": "markaestro_upload_media",
    "description": "Upload one image or video to Markaestro and return a media asset id. Images: png, jpeg, webp, gif up to 10 MB. Video: mp4, mov, webm up to 250 MB.",
    "input_schema": {
      "type": "object",
      "properties": {
        "file_path": { "type": "string", "description": "Local path to the file to upload." },
        "mime_type": { "type": "string", "description": "MIME type of the file." }
      },
      "required": ["file_path", "mime_type"]
    }
  },
  {
    "name": "markaestro_create_post",
    "description": "Create a post for one channel. Facebook, Instagram, and TikTok are manual-first: a human posts them natively from the To Post queue. Omit delivery_mode unless the user explicitly asked for unattended publishing.",
    "input_schema": {
      "type": "object",
      "properties": {
        "channel": {
          "type": "string",
          "enum": ["facebook", "instagram", "tiktok", "linkedin", "threads", "pinterest", "x"]
        },
        "caption": { "type": "string", "description": "Caption text, max 4000 characters." },
        "media_asset_ids": {
          "type": "array",
          "items": { "type": "string" },
          "description": "Ids from markaestro_upload_media. Instagram and TikTok require at least one."
        },
        "destination_id": {
          "type": "string",
          "description": "From markaestro_list_accounts. Required only when the brand has more than one destination on that channel."
        },
        "delivery_mode": {
          "type": "string",
          "enum": ["manual_reminder", "direct_publish", "platform_inbox"],
          "description": "Omit for the channel default."
        }
      },
      "required": ["channel", "caption"]
    }
  },
  {
    "name": "markaestro_publish_post",
    "description": "Queue an async publish run for an existing post. Returns a run id. Poll it, do not assume the post is live.",
    "input_schema": {
      "type": "object",
      "properties": { "post_id": { "type": "string" } },
      "required": ["post_id"]
    }
  },
  {
    "name": "markaestro_list_posts",
    "description": "List posts for this brand, newest first. Filter by status: draft, scheduled, publishing, published, platform_action_required, failed, partial_failed.",
    "input_schema": {
      "type": "object",
      "properties": {
        "status": { "type": "string" },
        "limit": { "type": "integer", "minimum": 1, "maximum": 100 }
      },
      "required": []
    }
  },
  {
    "name": "markaestro_delete_post",
    "description": "Remove a post from Markaestro. Use it to cancel something scheduled. Deleting an already-published post does NOT retract the live copy on the platform.",
    "input_schema": {
      "type": "object",
      "properties": { "post_id": { "type": "string" } },
      "required": ["post_id"]
    }
  }
]
Résumé pour l'agent
Collez-le dans votre system prompt. Il encode les comportements qui distinguent un agent de publication fiable d'un agent qui publie en double et déclare la victoire trop tôt.
System prompt
You have a Markaestro API key for exactly one brand. Markaestro is the
publishing layer: you supply the caption and the media, it handles the
platform rules, the calendar, and delivery.

Base URL: https://markaestro.com
Auth: Authorization: Bearer $MARKAESTRO_API_KEY

Rules:
- Call GET /api/connect/v1/social-accounts before posting. Pass the returned
  account ids back verbatim. Never invent or cache an id across runs.
- Upload media before creating a post; posts reference media ids, not files.
- Facebook, Instagram, and TikTok are manual-first. Creating and publishing
  them queues a reminder for a human. That is the intended behavior. Only
  send deliveryMode "direct_publish" if the operator explicitly asked for it.
- Send a unique Idempotency-Key on every POST. Reuse the SAME key when
  retrying the SAME request; never reuse it for a different one.
- On 429, wait the number of seconds in Retry-After, then retry. On 4xx other
  than 429, do not retry. Report the error code and requestId and stop.
- Publishing is async. POST /publish returns a run id; poll
  GET /api/public/v1/job-runs/<id> until succeeded or failed.
- To cancel, list with ?status=scheduled and DELETE the post id. Deleting a
  published post does not remove it from the platform.
- Never claim a post is live until a run reports succeeded or a post reports
  published.

Votre agent peut aussi récupérer ceci lui-même : curl https://markaestro.com/llms.txt renvoie un résumé en texte brut de toute l'API, endpoints, règles et gestion des erreurs, assez compact pour tenir dans le contexte.

Recettes

Les quatre flux de travail que les agents utilisent réellement

Publier et confirmer
Créez un brouillon, publiez-le explicitement, puis consultez l'exécution. La seule façon honnête de dire à l'opérateur qu'une publication est sortie.
Bash
# Full control: draft → publish → poll. No productId needed:
# the key is already bound to one brand.

POST_ID=$(curl -s -X POST "$MARKAESTRO_URL/api/public/v1/posts" \
  -H "Authorization: Bearer $MARKAESTRO_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: post-2026-08-14-linkedin" \
  -d '{
    "channel": "linkedin",
    "caption": "We shipped agent-driven publishing.",
    "mediaAssetIds": ["ast_777"]
  }' | jq -r .post.id)

RUN_ID=$(curl -s -X POST "$MARKAESTRO_URL/api/public/v1/posts/$POST_ID/publish" \
  -H "Authorization: Bearer $MARKAESTRO_API_KEY" \
  -H "Idempotency-Key: publish-$POST_ID" | jq -r .run.id)

# queued → running → succeeded | failed
curl -s "$MARKAESTRO_URL/api/public/v1/job-runs/$RUN_ID" \
  -H "Authorization: Bearer $MARKAESTRO_API_KEY"
Vérifier et annuler la file
Listez ce qui est programmé, montrez-le à une personne, supprimez ce qu'elle rejette. Les deux appels utilisent des permissions qu'une clé existante possède déjà.
Bash
# Review the queue, then cancel what the operator rejected.
curl -s "$MARKAESTRO_URL/api/public/v1/posts?status=scheduled&limit=100" \
  -H "Authorization: Bearer $MARKAESTRO_API_KEY"

curl -X DELETE "$MARKAESTRO_URL/api/public/v1/posts/pst_123" \
  -H "Authorization: Bearer $MARKAESTRO_API_KEY"
# → { "deleted": true, "id": "pst_123" }
Remplissez une semaine en un seul appel
La création par lots accepte jusqu'à 25 publications et renvoie des résultats par élément, si bien qu'un seul élément erroné ne fait pas échouer toute l'opération.
Bash
# One call, up to 25 posts. Per-item results: one bad item
# does not fail the batch.
curl -X POST "$MARKAESTRO_URL/api/public/v1/posts" \
  -H "Authorization: Bearer $MARKAESTRO_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: week-33-drop" \
  -d '{
    "posts": [
      { "channel": "instagram", "caption": "Monday",  "mediaAssetIds": ["ast_1"] },
      { "channel": "facebook",  "caption": "Tuesday", "mediaAssetIds": ["ast_2"] },
      { "channel": "linkedin",  "caption": "Thursday" }
    ]
  }'
# → { "results": [...], "created": 3, "total": 3 }
Soyez appelé plutôt que de consulter
Les agents de longue durée devraient enregistrer un webhook et attendre. Les livraisons sont signées HMAC avec un secret affiché une seule fois à la création.
Bash
# Let Markaestro call you instead of polling.
curl -X POST "$MARKAESTRO_URL/api/public/v1/webhook-endpoints" \
  -H "Authorization: Bearer $MARKAESTRO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://your-agent.example.com/hooks/markaestro",
    "events": ["post.published", "post.action_required", "post.failed"]
  }'

# Each delivery carries:
#   X-Markaestro-Event      post.action_required
#   X-Markaestro-Timestamp  2026-08-14T15:00:04.000Z
#   X-Markaestro-Signature  HMAC of the body with your webhook secret
# The secret is shown once at creation and stored hashed. Verify before acting.

Garde-fous

Ce que l'agent peut et ne peut pas faire

L'autonomie n'est utile que si le rayon d'impact reste faible. Les valeurs par défaut de Markaestro supposent que l'appelant est un logiciel qui pourrait se tromper.

Facebook, Instagram et TikTok sont en publication manuelle

Les publications que votre agent crée pour ces canaux utilisent par défaut manual_reminder : Markaestro n'appelle jamais l'API de la plateforme pour elles. Publier déplace la publication vers la file « À publier » de l'espace de travail, où une personne télécharge le contenu, publie de façon native et confirme, ainsi la publication a l'air d'avoir été faite à la main, et une personne voit chacune d'elles avant qu'elle n'existe publiquement. Un agent peut activer la publication via API officielle pour une publication donnée avec deliveryMode: "direct_publish", et sur TikTok cela signifie la transmission vers la boîte de réception du créateur, jamais une publication publique sans supervision. LinkedIn, Threads et Pinterest publient de façon programmatique dès que votre agent le demande explicitement.

Limitez la portée de la clé

Choisissez uniquement les permissions dont l'agent a besoin : products.read, media.write, posts.read, posts.write, posts.publish, job_runs.read, webhooks.manage. Un agent de recherche qui ne fait que lire le calendrier reçoit posts.read et rien d'autre.

Donnez-lui une date d'expiration

Les clés peuvent être créées avec une expiration. Une clé expirée se comporte exactement comme une clé révoquée, si bien qu'une clé qui fuit hors de l'environnement d'un agent cesse de fonctionner d'elle-même.

Faites tourner et révoquez

Faites tourner une clé sans changer son id, ou révoquez-la directement depuis Paramètres → API. Chaque clé affiche sa dernière heure d'utilisation et son volume de requêtes, si bien qu'un agent qui se tait, ou qui dérape, reste visible.

Les limites de débit s'appliquent

60 requêtes par minute par endpoint et 240 par minute par clé. Chaque réponse porte X-RateLimit-Limit, -Remaining et -Reset ; un 429 porte Retry-After. Respectez-le plutôt que d'insister.

Markaestro n'écrit jamais à votre place

Il n'y a aucune étape de génération. Le texte vient de votre agent, le contenu vient de votre bibliothèque ou du pipeline de votre agent. Markaestro fournit les mains, pas la voix.

Les suppressions sont côté Markaestro

Supprimer une publication programmée l'annule avant sa sortie. Supprimer une publication déjà publiée fait seulement cesser le suivi par Markaestro, la publication active reste en ligne jusqu'à ce que quelqu'un la supprime sur la plateforme.

Gestion des échecs

Apprenez-lui quelles erreurs méritent une nouvelle tentative

Chaque réponse d'erreur est du JSON avec un code error stable et un requestId. Faites en sorte que votre agent cite le requestId lorsqu'il signale un échec, c'est ce dont le support a besoin pour retrouver l'appel.

StatutCodeCe que l'agent devrait faire
401UNAUTHENTICATEDLa clé est manquante, révoquée ou expirée. Arrêtez et demandez-en une nouvelle à une personne, réessayer ne servira à rien.
403FORBIDDENLa clé n'a pas la permission nécessaire pour cet appel. Signalez quel appel a échoué ; les permissions se modifient dans Paramètres → API.
403API_KEY_NOT_BOUND_TO_PRODUCTUne clé créée avant la limitation par marque. Demandez une clé de remplacement.
400VALIDATION_*Le payload a enfreint une règle du canal (contenu manquant, mode de livraison invalide, scheduled_at incorrect). Corrigez la requête ; ne réessayez pas sans modification.
400VALIDATION_IDEMPOTENCY_KEY_REUSEDLa même Idempotency-Key a été envoyée avec un corps différent. Générez une nouvelle clé pour chaque requête distincte.
400VALIDATION_POST_IS_PUBLISHINGTentative de suppression d'une publication pendant qu'une exécution de publication était en cours. Attendez qu'elle se termine, puis supprimez.
409VALIDATION_POST_ALREADY_PUBLISHINGUne exécution de publication pour cette publication est déjà en file. Ne republiez pas, consultez l'exécution existante.
402SUBSCRIPTION_REQUIREDAucune offre active n'est associée à cet espace de travail. Demandez à un propriétaire de vérifier la facturation dans les paramètres.
402QUOTA_EXCEEDED_MEDIA_UPLOADSL'espace de travail a atteint son quota mensuel d'imports. Arrêtez d'importer et signalez-le, le contenu existant continue de se publier.
404NOT_FOUNDL'id est en dehors de la marque de cette clé. Renvoyé en 404 plutôt qu'en 403 pour que les clés ne puissent pas sonder des ids qu'elles ne possèdent pas.
429RATE_LIMITEDAttendez le nombre de secondes indiqué dans Retry-After, puis réessayez la même requête avec la même Idempotency-Key.

Utilisez votre propre pile technique

Si ça peut faire une requête HTTPS, ça peut publier

Il n'y a aucune bibliothèque cliente Markaestro à adopter, ni aucun framework à respecter. Jeton porteur, JSON en entrée, JSON en sortie.

Claude et le Claude Agent SDK

Ajoutez les définitions d'outils ci-dessus à votre liste d'outils. Les formes JSON Schema sont déjà au format d'utilisation d'outils de Claude.

Appels de fonctions OpenAI

Les mêmes schémas correspondent un à un aux définitions de fonctions, il suffit de renommer input_schema en parameters.

Clients MCP

Claude Code, Claude, Cursor, ChatGPT, Grok, Grok Bot, OpenClaw, Hermes : ajoutez l'URL du serveur hébergé et connectez-vous via le navigateur. Pour les clients stdio uniquement, npx -y @markaestro/mcp exécute les mêmes trente et un outils en local.

n8n, Make, Zapier

Chaque endpoint est une simple requête HTTP avec un jeton porteur. Pas de SDK, pas de cérémonie de signature, pas de danse OAuth pour l'agent.

LangChain et LlamaIndex

Outils REST standards. L'import de contenu en deux étapes est le seul flux à plusieurs appels, et cela tient en deux lignes.

Un cron job et curl

Tous les agents n'ont pas besoin d'un framework. Le démarrage rapide ci-dessus est une intégration complète et fonctionnelle en quatre commandes.

Donnez à votre agent quelque chose de réel à faire

Connectez vos réseaux, puis votre agent : connexion depuis un client MCP, ou clé liée à une marque. L'un ou l'autre constitue toute l'intégration.