API
Honest posts, from your own software
Send a line or an idea for a brand you manage; get back a checked draft, a rendered Reel and a version for each network. The same guardrails as the app, and no way around them.
Endpoints
Authenticate with Authorization: Bearer gnr_…. JSON in, JSON out; errors as { "error": { "code", "message" } }.
| GET | /api/v1/me | Which business the key acts for, and its limits. |
| POST | /api/v1/videos | Text to video: 2–8 lines in, a checked Reel queued for rendering. |
| GET | /api/v1/videos/{id} | Its status, guardrail report and — once it passed and rendered — the files. |
| POST | /api/v1/posts | Start a post from an idea (reel, carousel or image). Returns hooks to choose from. |
| POST | /api/v1/posts/{id}/hook | Approve a hook: the draft is written and checked. |
| POST | /api/v1/posts/{id}/render | Render it. Carousels and images return rendered; Reels are queued. |
| GET | /api/v1/posts/{id} | Status, caption, hashtags, script, alt text, guardrails and media. |
Text to video
POST /api/v1/videos
{
"lines": ["You are right that finding new clients is hard work.",
"But the clients you already met are easier to keep.",
"…"],
"style": "words"
}
→ 200 { "id": "…", "status": "ready", "render": { "status": "pending" }, "guardrails": {…} }
→ webhook: { "event": "post.media_ready", "post_id": "…", "media": [{ "kind": "video", "url": "…" }] }Reels run 30–60 seconds: about 80–150 words across the lines.
What a key can and cannot do
- Draft and render, for the business the key belongs to. Never approve, schedule or publish — those stay in the app, with a person.
- A draft that fails the guardrails is never rendered and its files are never returned — you get the reasons, so nothing unchecked can be posted from elsewhere.
- Webhooks are signed: X-GNR-Signature is sha256= and the HMAC-SHA256 of the exact body.
- 60 requests a minute and a daily limit on new posts per key, because each one is written or rendered at a cost.
- The AI presenter style is not available by key: it is paid per render and agreed to in the app.