The publishing layer for everything you build.

Let an AI agent, automation, or custom app draft, review, schedule, and publish across nine social platforms through one connection.

The fastest way to start

Go from a prompt to a reviewed post.

Install the Solnk skill in Codex, Claude Code, or another supported coding agent, then publish without leaving the conversation.

npx skills add solnk-dev/solnk-api-skill
Install the AI Skill

MCP setup

Let your AI install it

Copy one instruction into Codex, Claude Code, Cursor, or another MCP-capable agent. It will configure the client and verify the connection.

Set up Solnk as a remote MCP server in the AI client I am currently using. Use https://mcp.solnk.com/mcp…

Start where your workflow already lives.

Every route reaches the same publishing layer. Choose the amount of control your product needs today.

AI Skill

Publish from the conversation

Add Solnk to Codex, Claude Code, or another skill-compatible agent and turn a prompt into a reviewed, multi-platform post.

Install the skill

MCP server

Give your agent native tools

Connect Codex, Claude, Cursor, or any MCP-compatible client without custom API wiring.

Read the setup guide

API reference

Build your own publishing flow

Use one API for accounts, media, publishing, approvals, analytics, and webhooks.

Explore the API

API keys

Control exactly what can act

Create user or team-aware keys with the smallest useful set of permissions.

Create an API key

One request can carry the whole post.

Add each destination to a single request. Solnk keeps delivery state separate for every platform, so one failure never hides the rest.

See the publish endpoint
curl -X POST https://api.solnk.com/api/v1/publishes \
  -H "Authorization: Bearer sk_..." \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 019..." \
  -d '{
    "content": "We just shipped something new.",
    "targets": [
      { "account_id": "019cf5a4-b50d-74ed-8d93-fac527aa1c37" },
      { "account_id": "019cf5a4-b50e-731c-9e30-1d6c7b4e91aa" }
    ],
    "publish_mode": "immediate"
  }'

Schedule social posts from n8n and track every destination

Connect n8n’s HTTP Request and Webhook nodes to the Solnk API to schedule reviewed content and keep track of each destination. Start with connected social accounts and a paid plan with API access.

1. Send one approved, scheduled request

Use a Schedule Trigger to collect reviewed content on a recurring schedule. Set the workflow timezone deliberately. For a specific future publication time, send the request ahead of time and let Solnk own the final schedule.

Configure an HTTP Request node with POST https://api.solnk.com/api/v1/publishes, a stored Bearer credential, and this JSON body:

{
  "content": "Your reviewed announcement",
  "publish_mode": "scheduled",
  "scheduled_at": "REPLACE_WITH_A_FUTURE_ISO_8601_UTC_TIME",
  "targets": [{ "account_id": "REPLACE_WITH_A_CONNECTED_ACCOUNT_ID" }]
}

Replace both placeholders. Get account IDs from GET /api/v1/accounts. Persist one Idempotency-Key header value for this content revision and destination set before sending. Save the returned data.id with your source item.

Use the required scopes: accounts:read to list accounts, posts:write to create or retry, posts:read to inspect delivery, and webhooks:write to register a receiver. Team approval for member credentials still applies; check approval_status.

2. Treat notifications as a reason to read the latest state

Create an n8n Webhook receiver. Register its production URL with POST /api/v1/webhooks, using url and events containing post.published and post.failed.

Store the one-time secret securely. Verify HMAC-SHA256 through X-Solnk-Signature against the raw request body before trusting the notification. Validate raw-body handling and the event-to-publish-ID mapping with your receiver before activation.

Fetch GET /api/v1/publishes/{id} and inspect targets. A success notification can concern only some destinations. processing is unresolved; partial combines successful and failed targets. Periodically reconcile unfinished records in case a notification is missed.

3. Retry the operation that actually failed

  • For creation returning 503 PUBLISH_DISPATCH_UNCERTAIN, resend the same body with the same idempotency key. Use details.publish_id to track that request. The idempotency cache lasts 24 hours; do not create a new post with a fresh key just because queue dispatch was uncertain.
  • For explicit failed targets on a failed or partial publish, use POST /api/v1/publishes/{id}/retry. Successful targets and targets with unknown outcomes are not resent. Resolve the underlying error first.
  • Webhook delivery has its own retries: up to six attempts with backoff. Accept duplicates safely and read the latest publish state before taking further action.

Before enabling unattended runs, validate credentials, future timestamps, response mapping, signatures, duplicate events, partial failures, and uncertain dispatch using isolated test accounts. A green HTTP node alone does not prove a post went live.

Read the API contract · Prefer an AI conversation? Follow the MCP review workflow

Give every integration only what it needs.

User keys can follow you across teams. Team keys stay locked to one workspace. Both use explicit scopes and the same sk_ format.

posts:readposts:writeaccounts:readmedia:readmedia:writeanalytics:readwebhooks:readwebhooks:writebilling:readteams:readteams:write

Safe to retry. Easy to verify.

Idempotency keys prevent accidental duplicate publishes.

HMAC-SHA256 signatures protect webhook deliveries.

Per-platform status keeps partial delivery visible.

Build the connection. Let Solnk handle the platforms.

API access is included with the Pro plan. Start with a draft and automate more when the workflow earns your trust.