Developers
Public publishing API
Upload images and videos, create posts, publish directly to Meta, Instagram, LinkedIn, and hand TikTok content off to the creator's TikTok inbox using the same direct flow as the app. Public API v1 is workspace-scoped, supports images and video, and is designed for async automation.
For TikTok, publish is still asynchronous: the run starts the inbox push, keeps polling TikTok until the platform confirms inbox delivery, then marks the post ready for creator completion in TikTok.
Use only the versioned public routes under /api/public/v1. Internal app routes such as /api/workspaces,/api/posts, /api/integrations, and /api/analytics require Firebase user auth and are not part of the public API contract.
/api/public/v1/productsLists products plus the channels currently available for each one.
/api/public/v1/products/:id/destinationsLists the publish destinations for that product, including standalone Instagram Login destinations, Meta fan-out behavior, and connected TikTok destinations.
/api/public/v1/mediaMultipart upload. Returns an asset id and hosted URL.
/api/public/v1/postsCreates a draft or scheduled post in the workspace.
/api/public/v1/posts/:idReturns current post status, publish results, and any follow-up action such as completing a TikTok inbox handoff.
/api/public/v1/posts/:id/publishQueues an async publish run. TikTok uses the same inbox handoff as the app, then finishes once TikTok confirms inbox delivery.
/api/public/v1/job-runs/:idReturns queued, running, succeeded, or failed.
/api/public/v1/webhook-endpointsRegisters a webhook destination using an API key.
/api/public/v1/webhook-endpointsLists registered webhook destinations for that API key scope.
/api/public/v1/webhook-endpoints/:idDisables a webhook destination.
curl "$MARKAESTRO_URL/api/public/v1/products" \
-H "Authorization: Bearer $MARKAESTRO_API_KEY"destinationId when a product has more than one Instagram destination.curl "$MARKAESTRO_URL/api/public/v1/products/prod_123/destinations" \
-H "Authorization: Bearer $MARKAESTRO_API_KEY"curl -X POST "$MARKAESTRO_URL/api/public/v1/media" \
-H "Authorization: Bearer $MARKAESTRO_API_KEY" \
-H "Idempotency-Key: upload-001" \
-F "file=@launch-1.jpg"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"
}'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"
}'curl -X POST "$MARKAESTRO_URL/api/public/v1/posts/pst_123/publish" \
-H "Authorization: Bearer $MARKAESTRO_API_KEY" \
-H "Idempotency-Key: publish-001"{
"id": "evt_123",
"type": "post.exported_for_review",
"createdAt": "2026-04-08T18:06:10.000Z",
"workspaceId": "ws_123",
"data": {
"postId": "pst_123",
"channel": "tiktok",
"status": "exported_for_review",
"externalId": "p_inbox_url~v2.7631796255831721997",
"nextAction": "open_tiktok_inbox_and_complete_editing"
}
}Text-only, image, or video posts. Up to 10 images or 1 video per post. Direct publish.
At least one image or video, up to 10 items. Single video publishes as a Reel. Carousels support mixed image/video.
TikTok
At least one image or video. Up to 10 images or 1 video. Publishing pushes to the creator's TikTok inbox first, then marks the post ready once TikTok confirms delivery.
Text-only, image, or video posts. Up to 20 images or 1 video per post. Direct publish.