For engineering teams

An API contract you'd actually design this way yourself.

Most social publishing tools start as a dashboard and bolt an API on afterward — undocumented fields, inconsistent errors, no sandbox. PostGate started as the API. Every endpoint is generated from a live OpenAPI 3.1 document, every write is safe to retry, every error has the same shape, and every key can run the full publishing lifecycle against a sandbox before it ever touches a real account. That's the difference between a UI with an API attached and infrastructure a team of engineers built for other engineers.

What "developer-first" actually means here

Three things a UI-first vendor rarely gets around to building

Sandbox and live keys, same lifecycle

A pg_test_ key runs the complete asynchronous publishing lifecycle — validation, job queueing, target state transitions, delivery logs, retries, and webhooks — against a simulated adapter. Only the outbound call to the real platform is swapped out. Swap in a pg_live_ key and nothing about your integration changes. See test mode & sandbox.

Idempotency keys and one error envelope

Send a stable Idempotency-Key on POST /api/posts and the logical request is safe to retry for 72 hours — no duplicate posts from a dropped connection. Every failure, from auth to provider rejection, returns the same envelope: a stable code, retryable boolean, and request_id. See idempotency & safe retries and errors & retries.

Webhooks instead of forcing polling

Publishing is asynchronous by nature — the create response is acceptance, not proof of publication. Subscribe to post.published, post.partial, and post.failed and PostGate pushes the terminal result to your endpoint, signed with HMAC-SHA256, instead of leaving you to write a polling loop. See webhooks.

How you'd actually integrate it

Start from the contract, not from a support ticket

01

Generate a typed client from the OpenAPI document

PostGate publishes generated clients for Node.js/TypeScript, Python, Go, Ruby, PHP, and .NET. Every OpenAPI operationId becomes a typed operation, so the SDK and the HTTP contract can't drift apart. Pull the same document into your own codegen, contract tests, or AI tooling. See SDKs & MCP.

02

Build the entire integration in test mode

Point CI and staging at a pg_test_ key so your integration exercises real asynchronous delivery, partial failures, and webhook payloads without publishing a single real post. Connect a sandbox fixture profile when you want simulated delivery even under a live key.

03

Ship, then let agents use the same surface

The same API and a hosted MCP server share one publishing model, including draft-first tool behavior for anything that calls create_post without explicit confirmation. Give agents group-bound keys scoped to read or publish only. See the MCP server, why that matters for AI agents specifically, or the full SDKs & MCP reference.

Related for your use case

Two more angles on the same API

→

Headless social media scheduler

If you don't want to build any UI at all — or want to build your own from scratch — see how the scheduling primitives work with zero required dashboard.

→

Social media publishing infrastructure

If you're deciding whether to build a publishing pipeline in-house or integrate one, see the reliability case for treating PostGate as infrastructure.

Get started

Build against the free sandbox plan

Every PostGate plan — Free, Solo, Launch, and Build — includes the full API, sandbox keys, and webhooks. No card required to start integrating.