Product

Every platform. One contract. Here's the shape.

Publish, schedule, listen for events, audit every state change. The same primitives for every platform Connectrix supports.

The publish API

One POST routes to every platform.

One publish request carries a draft, a target list, and an optional idempotency key. Connectrix routes the same payload to every platform Connectrix supports.

Per-platform overrides live alongside the shared payload, in the same request. Validation runs at submit, the heavy lifting runs on a queue.

POST /api/publish
POST /api/publish HTTP/1.1
Host: api.connectrix.example
Content-Type: application/json
Idempotency-Key: launch_q2_2026

{
  "workspace": "ws_a8f2c1",
  "targets": ["linkedin", "x", "tiktok"],
  "scheduleAt": "2026-05-14T15:00:00Z",
  "body": "Native TikTok publishing is live. One POST, fifteen platforms.",
  "media": [{ "url": "https://cdn.example/launch.mp4" }],
  "overrides": {
    "x": { "body": "TikTok publishing is live. One POST, fifteen platforms." },
    "tiktok": { "privacyLevel": "public", "disableDuet": false }
  }
}
Webhooks

One signed URL. One payload shape.

Every platform Connectrix supports posts back to the same webhook URL with the same envelope. Event type, connector id, delivery id, timestamp, signature validity.

Platform-specific bits live under a typed `data` field. The envelope never changes. Signatures are verified before delivery, duplicates are dropped on the dedup key.

POST /webhooks/connectrix
POST /webhooks/connectrix HTTP/1.1
Connectrix-Signature: t=1715000000,v1=8f3...
Content-Type: application/json

{
  "id": "evt_8x2k4nq",
  "type": "publish.succeeded",
  "occurredAt": "2026-05-06T15:01:23Z",
  "workspace": "ws_a8f2c1",
  "connector": "con_linkedin_a91",
  "platform": "linkedin",
  "externalRef": "urn:li:share:7193...",
  "data": { "publishRequestId": "pub_z1q9", "permalink": "https://..." }
}
Scheduling

Schedule once, publish on time.

A `scheduleAt` field on the publish request defers delivery to a UTC instant. The job sits in a per-workspace queue until its window opens.

The dashboard shows scheduled and published items on a drag-to-reschedule calendar. Compose, save as draft, convert a draft to a scheduled publish.

Validated upfront
  • Per-platform character limits
  • Media MIME types and dimensions
  • Video duration and aspect ratio
  • Platform-specific fields like privacy level and thread parent
Token lifecycle

Tokens that survive platform changes.

OAuth tokens live encrypted at rest with rotatable keys. Refresh runs automatically before expiry. Tokens are never logged or returned through the API.

When a refresh fails, the connector enters a stale state. The dashboard surfaces a Reconnect CTA on the connector card and a banner on the connector page.

Analytics and audit

Every state change leaves a row.

Connector connect, token refresh, publish submit, publish success, publish fail, webhook processing failure. Every state change writes an append-only row.

Analytics roll the audit log into per-connector dashboards with CSV export. WhatsApp deliveries get their own export.

Time (UTC)ActorActionTarget
2026-05-14T14:59:01Zusr_q1f...publish.submittedpub_z1q9 (linkedin, x, tiktok)
2026-05-14T15:00:14Zsystempublish.succeededpub_z1q9 (linkedin)
2026-05-14T15:00:18Zsystempublish.succeededpub_z1q9 (x)
Deployment

Self-host or use the managed cloud.

The same code runs in both. Connectrix ships as a docker-compose for self-host, or as a managed cloud workspace with zero install.

Self-host suits teams with strict data residency. Managed cloud suits teams who want operations to be a someone-else problem. The API contract is identical.

Managed cloud

Hosted on Connectrix infrastructure. Workspace ready in minutes. SLA-backed uptime. No upgrade ops.

Self-host

Runs in your VPC. Postgres, Redis, and the apps/{web,api,worker} stack. Data and tokens never leave your network.

See it in your own workspace.

Connect a platform, fire a publish, watch the audit row land. Ten minutes to first publish.