Skip to main content

Update an existing post

Use PATCH /v1/posts/{postId} to update a post. Send at least one of title (up to 120 characters), slug (lowercase letters, numbers and hyphens, up to 160 characters, or null to clear it), markdown (up to 100,000 characters) or status (draft or published). The response contains the updated post.
PATCH /v1/posts/{postId} is limited to 60 requests per minute per key. Sending a body with none of the four fields returns 400.

Create a new post

There is no POST /v1/posts endpoint for creating a post with arbitrary fields. Posts are created by generation: queue a job with POST /v1/posts/generate, then poll it until it reports a postId.
If a guide or AI answer suggests POST /v1/posts or an author field for post creation, that information is not correct for the current Notra API.

Queue a generation job

contentType is required (changelog, blog_post, linkedin_post, twitter_post or image). lookbackWindow defaults to last_7_days (current_day, yesterday, last_7_days, last_14_days, last_30_days). Point the job at connected sources with integrations.github and integrations.linear (integration ids from GET /v1/integrations) or at public repositories with github.repositories. When no selector is given, every connected GitHub integration is used.
The API answers 202 Accepted with the job:

Poll the job

skipped means the job ended without creating a post. Notra does not send a webhook when a job finishes, so polling is the way to find out. POST /v1/posts/generate is limited to 10 requests per minute per key and needs an active paid plan or AI credits.

Read GEO visibility for a project

GEO data is scoped to a project. List projects first, then read the mention rate per engine for the last 30 days.
Visibility and traffic reads accept either days (1 to 365, rolling window) or an explicit from and to (YYYY-MM-DD). When from/to are set, days is ignored. configured: false means the project has no GEO settings yet; configure it with PATCH /v1/projects/{projectId}/geo/settings. These endpoints need projects.read and visibility.read plus a GEO plan. Without the plan the API returns 402.

Trigger a GEO scan

A scan checks every tracked prompt against every enabled engine. It takes no request body.
Poll statusUrl until scan.status is completed or failed. Scans are limited to 4 per hour per organization, so poll rather than re-trigger. See Rate Limits.

Submit feedback from an integration

Agents post to your public feedback URL without a key. Server-side code that already holds a key with feedback.write can use POST /v1/feedback instead:
See Agent Feedback for the full field list and the MCP tool.
Last modified on September 2, 2026