> ## Documentation Index
> Fetch the complete documentation index at: https://docs.genviral.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Render Editor Project

> Start rendering the current cut of a project to an MP4.

Starts rendering the project's current cut to an MP4 and returns `202 Accepted` right away. Poll
[Get Editor Render](/api-reference/get-editor-render) until `status` is `completed`, then use
`output_url`, or `failed`.

## Credits

Rendering consumes video render credits, charged **once per distinct cut**:

* Rendering a cut for the first time charges credits; `credits_charged` reports the amount.
* Rendering the same cut again, without editing it, is free and returns the existing result.
* Editing the project makes a new cut, which charges again when you render it.
* If a render fails, the credits for it are refunded.

Render starts are rate limited per account owner (20 requests per hour).

## Idempotency

Starting a render is safe to repeat. Retrying while the same cut is rendering, or after it has
completed, never starts a second render or a second charge.

## Path Parameters

<ParamField path="projectId" type="string (UUID)" required>
  The project id.
</ParamField>

## Body Parameters

The body is empty. An empty object `{}` or no body are both accepted.

## Response

<ResponseField name="project_id" type="string" />

<ResponseField name="status" type="string">
  `rendering`, or `completed` when this exact cut was already rendered.
</ResponseField>

<ResponseField name="output_url" type="string | null">
  The MP4 URL when `status` is `completed`.
</ResponseField>

<ResponseField name="credits_charged" type="number">
  Credits charged by this call; `0` for a cut that was already paid for.
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl --request POST \
    --url https://www.genviral.io/api/partner/v1/editor/projects/b1d4e8f2-3a5c-4d7e-8f90-1a2b3c4d5e6f/render \
    --header 'Authorization: Bearer <token>' \
    --header 'Content-Type: application/json' \
    --data '{}'
  ```
</RequestExample>

<ResponseExample>
  ```json Response theme={null}
  {
    "ok": true,
    "code": 202,
    "message": "Editor render started",
    "data": {
      "project_id": "b1d4e8f2-3a5c-4d7e-8f90-1a2b3c4d5e6f",
      "status": "rendering",
      "output_url": null,
      "credits_charged": 3
    }
  }
  ```
</ResponseExample>

## Error Responses

* `401` - authentication failed (missing/invalid/revoked token)
* `402 insufficient_credits` - not enough credits for this render
* `404 project_not_found` - the project does not exist in the key scope
* `422 invalid_payload` - the body contains unknown fields
* `422 empty_project` - the project has nothing to render
* `422 invalid_document` - the project could not be read
* `429 rate_limited` - render limit reached; wait `retry_after_seconds`
* `409 render_blocked` - the project cannot be rendered in its current state
* `409 render_submission_unknown` - the render may or may not have started; poll Get Editor Render before retrying
* `502 render_failed` - the render could not be started; any credits are refunded, retry later
* `503 provider_unavailable` - the limiter could not answer right now; retry after `retry_after_seconds`


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.