The public API was the core of the bet from part 1: anything that can make an HTTP request should be able to schedule a post. Before opening it, I wrote down the ways that could go wrong.
What can go wrong
When people post through the app, a human looks at every post. Through an API, a script does, and scripts fail in specific ways:
- a request times out, the script retries, and the post goes out twice;
- a bug in a loop schedules the same post hundreds of times;
- a test run against production publishes a test post to real followers.
The guardrails
Each of those got its own answer before launch:
- API keys with scopes. A key can be limited to what it needs — reading posts, writing posts, reading or replying to comments. Agencies can give each client business its own key.
- A rate limit per key, so one runaway script cannot starve everyone else.
- Idempotency keys. Send the same key with a retried request, and Clienzo returns the original result instead of creating a second post.
- A daily post cap per account, so a loop has a ceiling.
-
dry_run. Check a post against every selected network's rules — caption length, image count, formats — and get the same validation errors, without publishing anything.
Stronger before wider
Opening an API means more traffic you do not control. So before launch I also moved publishing to its own service, raised the number of posts that can publish at the same moment, and made media streaming the default (all of part 3).
What it covers today
Posts (create, schedule, list, read, delete, retry the failed accounts), media uploads, and the comment inbox — listing, reading, replying and marking comments done. Per-post numbers come back with each post. The documentation lives on clienzo.co.
Old keys do not silently gain new powers: when comment access was added, existing keys did not get the new scopes. You create a new key to use them.
Next: the MCP server, which is the same API, one step closer to where people write.
Originally published on jonasnguyen.com, where I write about building Clienzo and the next startups.
Top comments (0)