Skip to main content

Update an existing post

Use PATCH /v1/posts/{postId} to update a post, and send at least one of these fields:
  • title, up to 120 characters
  • slug, up to 160 lowercase letters, numbers and hyphens, or null to clear it
  • markdown, up to 100,000 characters
  • status, draft or published
The response contains the updated post.
The limit for PATCH /v1/posts/{postId} is 60 requests per minute per key, and 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, because Notra creates posts through generation. Queue a job with POST /v1/posts/generate and 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, it is wrong 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 you pass no selector, the job uses every connected GitHub integration.
The API answers 202 Accepted with the job:

Poll the job

skipped means the job ended without creating a post. Because Notra does not send a webhook when a job finishes, you have to poll. POST /v1/posts/generate allows 10 requests per minute per key and needs an active paid plan or AI credits.

Read GEO visibility for a project

Notra scopes GEO data to a project, so list projects first and 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 you set from and to, the API ignores days. configured: false means the project has no GEO settings yet, and you can configure it with PATCH /v1/projects/{projectId}/geo/settings. These endpoints need projects.read and visibility.read plus a GEO plan, and without the plan the API returns 402.

Trigger a GEO scan

A scan checks every tracked prompt against every enabled engine and takes no request body.
Poll statusUrl until scan.status is completed or failed. Each organization can run 4 scans per hour, so poll instead of re-triggering. See Rate Limits.

Submit feedback from an integration

Agents post to your public feedback URL without a key, while 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 October 8, 2026