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.

Meta publishes directly
Facebook and Instagram complete inside Markaestro once the platform accepts the publish.
Instagram Login supported
Products can expose standalone Instagram professional accounts even when no Facebook Page is linked.
TikTok mirrors the app flow
TikTok photo and video posts use the same inbox handoff as the Markaestro UI. Once TikTok confirms delivery, the creator finishes caption, privacy, and posting inside TikTok.
Async by design
Every publish returns a run id. Poll runs or subscribe to signed webhooks instead of assuming synchronous completion.
Products and destinations
Discover the products and publish destinations available to the API key.
GET/api/public/v1/products

Lists products plus the channels currently available for each one.

GET/api/public/v1/products/:id/destinations

Lists the publish destinations for that product, including standalone Instagram Login destinations, Meta fan-out behavior, and connected TikTok destinations.

Media
Upload images or videos to Markaestro-managed storage before creating posts.
POST/api/public/v1/media

Multipart upload. Returns an asset id and hosted URL.

Posts
Create, inspect, and publish posts for Facebook, Instagram, TikTok, and LinkedIn.
POST/api/public/v1/posts

Creates a draft or scheduled post in the workspace.

GET/api/public/v1/posts/:id

Returns current post status, publish results, and any follow-up action such as completing a TikTok inbox handoff.

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

Queues an async publish run. TikTok uses the same inbox handoff as the app, then finishes once TikTok confirms inbox delivery.

Runs and Webhooks
Track async work with polling or signed webhook delivery.
GET/api/public/v1/job-runs/:id

Returns queued, running, succeeded, or failed.

POST/api/public/v1/webhook-endpoints

Registers a webhook destination using an API key.

GET/api/public/v1/webhook-endpoints

Lists registered webhook destinations for that API key scope.

DELETE/api/public/v1/webhook-endpoints/:id

Disables a webhook destination.

1. List products
Discover which products this API key can target.
curl "$MARKAESTRO_URL/api/public/v1/products" \
  -H "Authorization: Bearer $MARKAESTRO_API_KEY"
2. Inspect destinations
See the linked pages and accounts for a product before creating the post. Use the returned 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"
3. Upload media
Each post references previously uploaded media assets.
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"
4. Create a post
Create a draft or scheduled post using those asset ids.
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"
  }'
TikTok example
Use the connected TikTok destination returned for the product. Publishing this post follows the same inbox handoff flow as the app.
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"
  }'
5. Queue publish
Publishing always creates an async run. TikTok runs finish after the media is handed off and TikTok reports the inbox item is ready for creator completion.
curl -X POST "$MARKAESTRO_URL/api/public/v1/posts/pst_123/publish" \
  -H "Authorization: Bearer $MARKAESTRO_API_KEY" \
  -H "Idempotency-Key: publish-001"
Webhook payload example
Deliveries are signed with HMAC using your webhook secret.
{
  "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"
  }
}
Channel behavior
Validation and delivery rules enforced by the public API.

Facebook

Text-only, image, or video posts. Up to 10 images or 1 video per post. Direct publish.

Instagram

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.

LinkedIn

Text-only, image, or video posts. Up to 20 images or 1 video per post. Direct publish.