For apps and backends
One request shapeHosted OAuthDelivery webhooks

Add social publishing with one API

Connect accounts and publish to TikTok, Instagram, Facebook, and LinkedIn through a single REST API. One authentication model, one request shape, and no separate integration to build and maintain per network.

7-day trial · card required · $0 today · REST API, MCP, and CLI on every paid plan

Your first two requests

List what you can publish to, then publish. That is the whole surface for a simple integration.

# List the accounts you can publish to
curl https://api.cutedyno.com/v1/accounts \
  -H "Authorization: Bearer $CUTEDYNO_API_KEY"

# Publish the same post to several of them
curl -X POST https://api.cutedyno.com/v1/posts \
  -H "Authorization: Bearer $CUTEDYNO_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
    "content": "Spring collection drops Friday.",
    "accountIds": ["acct_instagram", "acct_linkedin"],
    "publishNow": true
  }'

Or use the typed Node client

import { CuteDyno } from '@cutedyno/node';

const cutedyno = new CuteDyno(); // reads CUTEDYNO_API_KEY

const { accounts } = await cutedyno.accounts.list();

await cutedyno.posts.create({
  content: 'Spring collection drops Friday.',
  accountIds: accounts.map((account) => account.id),
  scheduledAt: '2026-08-01T12:00:00Z',
});

Node.js is the only client we publish. For other languages, call the API directly or generate a client from the OpenAPI document.

What you get

The parts that are tedious to build yourself

One request shape

Publishing to TikTok, Instagram, Facebook, and LinkedIn is the same call. Where a network needs something of its own, like a YouTube title, it rides along in a platforms object.

Hosted OAuth

Send a customer to a connect session and CuteDyno runs the platform OAuth, the callback, the token exchange, and the refresh cycle from there.

Webhooks, not polling

Subscribe to post.published, post.failed, post.partially_published, and account.connected instead of asking for status on a timer.

Idempotent writes

Send an Idempotency-Key on writes and a retry after a timeout returns the original result rather than publishing twice.

Validate before you spend an upload

POST /v1/posts/validate runs the same platform checks as a real publish and returns the same errors, without posting anything.

Analytics on the same key

Read reach, views, and engagement per account and per post from the API you already publish through.

How it works

Three steps to a working integration

01

Create an API key

Keys are scoped to a profile and shown once. The same key works for REST, the CLI, and the MCP server.

Open the dashboard
02

Connect an account

Connect your own accounts in the dashboard, or start a hosted OAuth session so your customers connect theirs from inside your product.

Connecting accounts
03

Publish and listen

Create the post, then handle the delivery events. Every publish reports per account, so a partial failure is visible rather than silent.

Webhook events
Your customers connect

Let your users connect their own accounts

Send them to a connect session and CuteDyno handles the platform OAuth, the callback, and the token refresh. You get an account.connected webhook when it is ready.

Design partners

Building on this? Talk to us directly.

We are working with a small group of SaaS and AI-product teams embedding social publishing. Apply if you need hosted OAuth, webhooks, and a dashboard without building a separate integration for every network.

  • White-glove onboarding for your integration
  • Direct access to the founding team
  • Influence on the API and integration roadmap
  • Preferred pricing during the design partner period

Build it once, publish everywhere

Full API access on every paid plan. Hosted OAuth and webhooks come with Builder.