Sviluppatori
API pubblica di pubblicazione
Carica contenuti, crea post e pubblica su Facebook, Instagram, TikTok, LinkedIn, Threads e Pinterest, tutto limitato a un prodotto tramite una chiave API del workspace. Il modo consigliato per integrarsi è la Connect API, una superficie piccola e piatta /api/connect/v1 che la maggior parte degli strumenti di programmazione può utilizzare così com'è.
Hai bisogno di controllo completo, pubblicazione esplicita, polling delle esecuzioni, webhook firmati, batch, impostazioni per canale? L'API avanzata /api/public/v1 più in basso espone tutto questo. Entrambe condividono la stessa autenticazione, gli stessi prodotti e la stessa pipeline di pubblicazione; usa solo queste rotte pubbliche versionate (le rotte interne dell'app richiedono l'autenticazione utente Firebase e non fanno parte del contratto pubblico).
Facebook, Instagram e TikTok sono manual-first anche tramite API. Questi canali usano di default manual_reminder: Markaestro non chiama l'API della piattaforma e sposta il post nella coda 'Da Pubblicare'. Passa deliveryMode: "direct_publish" per usare l'API ufficiale. Su TikTok viene usato di default il trasferimento in casella in arrivo, salvo quando settings.postMode è direct_post. LinkedIn, Threads e Pinterest pubblicano programmaticamente di default.
I workspace possono avere più prodotti. Ogni chiave API è vincolata a un prodotto quando la crei, quindi le chiamate hanno come target quel prodotto automaticamente e le richieste per qualsiasi altro prodotto vengono rifiutate.
Stai costruendo un agente IA?
Inizia invece con la guida per agenti IA. Contiene schemi di strumenti pronti da copiare e incollare, una guida rapida per il system prompt, le regole di ripetizione e gestione degli errori di cui un agente ha bisogno, e una guida rapida in quattro comandi. Il tuo agente può anche leggere /llms.txt direttamente.
Specifica leggibile dalle macchine
Ogni endpoint, forma di richiesta e risposta e codice di errore, in OpenAPI 3.1. Generata dagli stessi schemi con cui l'API convalida, quindi non può descrivere un'API che non serviamo.
/api/connect/v1 che la maggior parte degli strumenti di programmazione può utilizzare così com'è. Mappa la convenzione comune create-upload-url → PUT → post sullo stesso workspace, autenticazione, prodotti e pipeline di pubblicazione dell'API completa qui sotto. Imposta l'URL base del client su /api/connect e autenticati con una chiave API del workspace limitata al prodotto (ambiti posts.read, posts.write, media.write)./api/connect/v1/social-accountsElenca le destinazioni Facebook, Instagram, TikTok e LinkedIn collegate come account piatti, ciascuno etichettato con il proprio prodotto così che i client possano raggruppare e distinguere. Ogni canale ha il proprio percorso dedicato, nessuna distribuzione tra canali.
/api/connect/v1/productsElenca i brand (nome sul protocollo: products) con i loro account connessi annidati, un selettore che privilegia il brand.
/api/connect/v1/media/create-upload-urlRestituisce un URL PUT firmato, monouso e di breve durata, più un id del contenuto.
<upload_url>Carica i byte grezzi dell'immagine all'URL firmato. Nessuna chiave API necessaria, la firma autorizza.
/api/connect/v1/postsCrea una bozza per ogni account selezionato. Imposta is_draft=false con scheduled_at per programmare la consegna; TikTok usa il trasferimento in casella in arrivo del creator.
/api/connect/v1/postsElenca i post del workspace con stato, didascalia e URL dei contenuti in formato piatto.
# 1. List connected accounts
curl "$MARKAESTRO_URL/api/connect/v1/social-accounts" \
-H "Authorization: Bearer $MARKAESTRO_API_KEY"
# 2. Request a signed upload url, then PUT the bytes
curl -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": "slide-1.png" }'
curl -X PUT "<upload_url>" -H "Content-Type: image/png" --data-binary @slide-1.png
# 3. Create a draft post for one or more accounts
curl -X POST "$MARKAESTRO_URL/api/connect/v1/posts" \
-H "Authorization: Bearer $MARKAESTRO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"caption": "New drop",
"media": ["ast_111", "ast_222"],
"social_accounts": ["prod_123#instagram:instagram:ig_123"]
}'Ogni account da /social-accounts è etichettato con il proprio product, il nome sul protocollo per un brand (lo stesso account può apparire sotto più brand), e il suo id codifica productId#destinationId, passalo indietro testualmente in social_accounts, e la richiesta si propaga in un post per account. Ogni chiave è vincolata a un brand, quindi vede e pubblica solo su quel brand. I post di Facebook, Instagram e TikTok sono manuali per prima cosa, creati come bozze e pubblicati nativamente dal proprietario del workspace dalla coda 'Da Pubblicare' di Markaestro, mai tramite l'API della piattaforma. LinkedIn, Threads e Pinterest pubblicano programmaticamente dopo un'azione di pubblicazione esplicita. Lo stato del post è uno tra draft, processing, posted, o failed. Facebook, Instagram, LinkedIn, TikTok e Threads sono ciascuno una propria destinazione dedicata, pubblicare su uno non si propaga mai su un altro. Tieni traccia dello stato di pubblicazione tramite GET /api/connect/v1/posts.
Avanzato: API Pubblica completa
La superficie completa /api/public/v1, pubblicazione esplicita, esecuzioni asincrone, webhook firmati, creazione in batch e impostazioni per canale. Usala quando la Connect API non è sufficiente.
/api/public/v1/productsElenca i brand della chiave più i canali attualmente disponibili per ciascuno.
/api/public/v1/products/:id/destinationsElenca le destinazioni di pubblicazione per quel brand, inclusi Login Instagram indipendente, Pagina Facebook, Threads, Profilo/Pagina LinkedIn e destinazioni TikTok connesse.
/api/public/v1/media/upload-sessionsCrea una sessione di caricamento diretto di 15 minuti con nome, tipo e dimensione esatta.
<uploadSession.uploadUrl>Carica i byte direttamente nello storage con il Content-Type restituito, senza chiave API.
/api/public/v1/media/upload-sessions/:id/finalizeVerifica tipo e dimensione e restituisce l'asset multimediale; le sessioni completate sono ritentabili.
/api/public/v1/mediaCaricamento multipart di compatibilità. Restituisce un id dell'asset e l'URL ospitato.
/api/public/v1/postsCrea una bozza nel workspace. Facebook, Instagram e TikTok usano di default la pubblicazione manuale (deliveryMode manual_reminder); passa deliveryMode direct_publish per optare per la pubblicazione via API.
/api/public/v1/postsElenca i post, dal più recente. Filtra con ?status=scheduled per vedere cosa è in coda, e ?productId= per limitare a un brand. Una chiave vincolata a un brand è sempre limitata al proprio brand e può omettere productId.
/api/public/v1/posts/:idRestituisce lo stato attuale del post, la modalità di consegna e i risultati della pubblicazione.
/api/public/v1/posts/:id/publishMette in coda un'esecuzione di pubblicazione asincrona. I post manuali finiscono nella coda 'Da Pubblicare' del workspace per la pubblicazione nativa; LinkedIn, Threads e Pinterest pubblicano direttamente; i post Meta con opt-in pubblicano tramite l'API ufficiale, e i post TikTok con opt-in usano il trasferimento in casella in arrivo.
/api/public/v1/posts/:idElimina il post da Markaestro. Usa l'ambito posts.write esistente. Restituisce 400 VALIDATION_POST_IS_PUBLISHING mentre un'esecuzione di pubblicazione è in corso. Eliminare un post pubblicato non ritira la copia in diretta sulla piattaforma.
/api/public/v1/job-runs/:idRestituisce queued, running, succeeded, o failed.
/api/public/v1/webhook-endpointsRegistra una destinazione webhook, fino a 25 endpoint attivi per workspace.
/api/public/v1/webhook-endpointsElenca le destinazioni webhook registrate per l'ambito di quella chiave API.
/api/public/v1/webhook-endpoints/:idDisabilita una destinazione webhook.
curl "$MARKAESTRO_URL/api/public/v1/products" \
-H "Authorization: Bearer $MARKAESTRO_API_KEY"destinationId restituito quando un prodotto ha più destinazioni, come un Profilo LinkedIn più Pagine.curl "$MARKAESTRO_URL/api/public/v1/products/prod_123/destinations" \
-H "Authorization: Bearer $MARKAESTRO_API_KEY"# 1. Create a 15-minute upload session
UPLOAD=$(curl -s -X POST "$MARKAESTRO_URL/api/public/v1/media/upload-sessions" \
-H "Authorization: Bearer $MARKAESTRO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"fileName":"launch-1.jpg","contentType":"image/jpeg","sizeBytes":184320}')
# 2. PUT bytes directly to uploadSession.uploadUrl with its returned headers
curl -X PUT "<upload_url>" -H "Content-Type: image/jpeg" --data-binary @launch-1.jpg
# 3. Finalize; the response contains asset.id for mediaAssetIds
curl -X POST "$MARKAESTRO_URL/api/public/v1/media/upload-sessions/<session_id>/finalize" \
-H "Authorization: Bearer $MARKAESTRO_API_KEY""deliveryMode": "direct_publish" per optare per la pubblicazione via API ufficiale su questo post.curl -X POST "$MARKAESTRO_URL/api/public/v1/posts" \
-H "Authorization: Bearer $MARKAESTRO_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: post-001" \
-d '{
"channel": "instagram",
"caption": "Launch day carousel",
"mediaAssetIds": ["ast_123", "ast_124"],
"productId": "prod_123",
"destinationId": "instagram:instagram:ig_123"
}'deliveryMode: "platform_inbox" (o direct_publish), una pubblicazione esplicita invia invece la bozza alla casella in arrivo del creator.curl -X POST "$MARKAESTRO_URL/api/public/v1/posts" \
-H "Authorization: Bearer $MARKAESTRO_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: post-tt-001" \
-d '{
"channel": "tiktok",
"caption": "Spring drop teaser",
"mediaAssetIds": ["ast_vid_123"],
"productId": "prod_123",
"destinationId": "tiktok:tiktok:tt_open_123"
}'post.action_required; LinkedIn, Threads, Pinterest e i post Meta con opt-in pubblicano direttamente; i post TikTok con opt-in mettono in coda il trasferimento in casella in arrivo.curl -X POST "$MARKAESTRO_URL/api/public/v1/posts/pst_123/publish" \
-H "Authorization: Bearer $MARKAESTRO_API_KEY" \
-H "Idempotency-Key: publish-001"posts.read e posts.write.# The key is already bound to one brand
curl "$MARKAESTRO_URL/api/public/v1/posts?status=scheduled&limit=100" \
-H "Authorization: Bearer $MARKAESTRO_API_KEY"
# Cancel one
curl -X DELETE "$MARKAESTRO_URL/api/public/v1/posts/pst_123" \
-H "Authorization: Bearer $MARKAESTRO_API_KEY"{
"id": "evt_123",
"type": "post.action_required",
"createdAt": "2026-04-08T18:06:10.000Z",
"workspaceId": "ws_123",
"data": {
"postId": "pst_123",
"channel": "instagram",
"status": "platform_action_required",
"nextAction": "post_manually_from_reminder"
}
}Post di solo testo, immagine o video. Fino a 10 immagini o 1 video per post. Pubblicazione manuale di default; pubblicazione diretta con opt-in.
Almeno un'immagine o un video, fino a 10 elementi. Un singolo video viene pubblicato come Reel. Pubblicazione manuale di default; pubblicazione diretta con opt-in.
TikTok
Almeno un'immagine o un video. Fino a 35 immagini o 1 video. Pubblicazione manuale per impostazione predefinita; i post abilitati vanno nella inbox TikTok del creator, oppure direttamente sul profilo con postMode direct_post di TikTok.
Testo, immagine singola, video singolo, o post organici con più immagini fino a 20 immagini. Scegli come destinatario il Profilo connesso o una Pagina gestita.
X
Testo, fino a quattro immagini, una GIF o un video. I controlli sulle risposte si applicano per post e la pubblicazione viene bloccata quando il budget di costo X del workspace è esaurito.