Clients & Integrations
The API is plain HTTP + JSON, so any language works with a bare request. Two first-party clients wrap it for you:Groniz CLI
Drive the API from your terminal or a coding agent —
curl -fsSL https://groniz.com/install.sh | shMCP Server
Expose Groniz as tools to any MCP client (Claude, Cursor, …) at
https://mcp.groniz.com/mcpAuthentication
There are two ways to authenticate with the Groniz API:API Key
Get your API key from Settings > Developers > Public API. Include it in theAuthorization header:
OAuth2 Token
If you’re building an app for other Groniz users, use OAuth2 Authentication to get tokens that act on behalf of users. OAuth tokens start withpos_ and are used the same way:
Base URL
All requests go to:Rate Limits
90 requests per hour (100 for the cloud) limit applies to only the create post endpoint.This doesn’t mean you can only post 90 times per hour—each API call counts as one request. Schedule multiple posts in a single request to maximize throughput.
Errors
| Status | Meaning |
|---|---|
400 Bad Request | The request body or path parameter is malformed (wrong shape, unknown enum, missing required field). |
401 Unauthorized | Authorization header is missing or the API key is unrecognised. |
403 Forbidden | The API key is valid but doesn’t own the resource (e.g. you tried to delete a post in another organisation). |
404 Not Found | The endpoint doesn’t exist, or the path parameter (integration ID, post ID) was correct format but no row matched. |
413 Payload Too Large | Your request body exceeded 50 MB on /posts — usually because images were base64-inlined instead of pre-uploaded. See Uploads troubleshooting. |
429 Too Many Requests | You exceeded API_LIMIT per hour on the create-post endpoint. |
5xx | Server error — retry with exponential backoff. |
DELETE endpoints, 404 always means “already deleted” and is safe to ignore. A 500 can mean the same thing today because of a known issue where a missing post ID surfaces as 500 instead of 404 — but only if the error matches that specific signature. Treat other 500 responses as real server errors: log them, retry with exponential backoff, and don’t silently suppress them.
Terminology
The Groniz UI uses the term channel, while the API uses integration. They refer to the same thing—a connected social media account.
Generate Output
The easiest way to generate your post payloads is by using this wizard. It’s the same wizard used to schedule posts in the Groniz app, but instead of scheduling, it generates the JSON payload for you to use in your API requests. Make sure you are signed in to the console first.
Open in full screen
Supported Platforms (32 total)
When creating posts, each social media platform has its own settings schema. Thesettings object must include a __type field matching the provider.
Platforms with custom settings (25)
Platforms without custom settings (7)
These platforms only require{ "__type": "platform-name" }:
| Platform | __type |
|---|---|
| Threads | threads |
| Mastodon | mastodon |
| Bluesky | bluesky |
| Telegram | telegram |
| Nostr | nostr |
| VK | vk |
| Kick | kick |
View Provider Settings Reference
See detailed settings schemas with examples for each platform

__typexwho_can_reply_post,communitylinkedinpost_as_images_carousellinkedin-pagepost_as_images_carouselfacebookurl(optional)instagrampost_type,collaboratorsinstagram-standalonepost_type,collaboratorswarpcastsubreddit[](channels)__typeyoutubetitle,type,selfDeclaredMadeForKids,thumbnail,tagstiktokprivacy_level,duet,stitch,comment,autoAddMusic,brand_content_toggle,brand_organic_toggle,content_posting_method__typeredditsubreddit[]withtitle,type,flairlemmysubreddit[]withid,title,urldiscordchannelslackchannelskoolgroup,label,titlewhopcompany,experience,title__typepinterestboard,title,link,dominant_colordribbbletitle,team__typemediumtitle,subtitle,canonical,publication,tagsdevtotitle,main_image,canonical,organization,tagshashnodetitle,subtitle,main_image,publication,tagswordpresstitle,main_image,type__typegmbtopicType,callToActionType,callToActionUrl, event/offer fieldslistmonksubject,preview,list,template__typetwitchmessageType,announcementColor