Skip to main content
POST
Posts a short message to the open Genviral web editor, where it appears live beside the timeline together with each edit’s step note. Use it to narrate your work as it happens: what you are about to do, what you found (for example which clip and which seconds), what the next edit will change, and a closing summary. A message is narration only. It never changes the project, and its updated_at stays the same, so the expected_updated_at you pass to your next Apply Editor Ops call remains valid and the open editor does not reload. Messages are labelled in the editor with who sent them (Claude, ChatGPT, another MCP client, or the API), derived from the credential. The editor keeps the newest 60 entries of a project’s activity.

Idempotency

Idempotency-Key is required and is scoped to the API key (or MCP grant) that sends it.
  • Retrying with the same key and the same body returns the first posted_at and shows the message once.
  • Reusing a key with a different body returns 409 idempotency_key_reused.

Rate Limits

Messages are rate limited per account owner (120 per hour across all keys and workspaces). Over the limit the request is refused with 429 rate_limited and a retry_after_seconds.

Path Parameters

string (UUID)
required
The project id.

Body Parameters

string
required
1 to 600 characters of plain text, trimmed. Line breaks are allowed; other control characters and markdown formatting are not meant for this field. Keep it to 1-3 conversational sentences in the user’s language.

Response

Returns 201 with the project id and when the message was posted.

Error Responses

  • 400 invalid_json - request body is not valid JSON
  • 400 invalid_request - Idempotency-Key header is missing or longer than 255 characters
  • 401 - authentication failed (missing/invalid/revoked token)
  • 404 project_not_found - the project does not exist in the key scope
  • 409 idempotency_key_reused - this Idempotency-Key was already used with a different body
  • 409 request_in_progress - an identical request with this key is still being processed; retry shortly
  • 422 invalid_payload - body failed validation (see issues)
  • 429 rate_limited - the hourly message allowance is spent; retry after retry_after_seconds
  • 503 provider_unavailable - the rate limiter could not answer; retry shortly