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

# Submit Job

> Submit a new AI generation job to the PixelByte platform.

## Authentication

This endpoint requires an API key with the `submit_job` scope.

```
Authorization: Bearer YOUR_API_KEY
```

## Request Body

<ParamField body="model" type="string" required>
  The model slug to use for generation. Example: `"google/veo-3.1-fast/text-to-video"`
</ParamField>

<ParamField body="version" type="string">
  Optional model version. If omitted, the latest stable version is used.
</ParamField>

<ParamField body="input" type="object" required>
  Model-specific input parameters. The structure depends on the selected model. See the [Video Models](/models/video/google/veo-3-1-fast-text-to-video) and [Image Models](/models/image/google/nano-banana) pages for model-specific "Try it" panels with pre-filled parameters.

  <Expandable title="common fields">
    <ParamField body="prompt" type="string">
      Text prompt for the generation. Required for most models.
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="webhookUrl" type="string">
  An HTTPS URL to receive a webhook notification when the job completes or fails. Must use the `https://` scheme.
</ParamField>

## Response

<ResponseField name="jobId" type="string">
  Unique identifier for the submitted job.
</ResponseField>

<ResponseField name="requestId" type="string">
  Unique request identifier for tracing and support purposes.
</ResponseField>

<ResponseField name="status" type="string">
  Initial job status. Always `"pending"` on successful submission.
</ResponseField>

<ResponseField name="estimatedCompletionTime" type="string">
  ISO 8601 timestamp of the estimated completion time.
</ResponseField>

<ResponseField name="costMicroCents" type="number">
  The cost of the job in micro-cents (1/1,000,000 of a dollar).
</ResponseField>

## Error Codes

| Code                       | Description                                                           |
| -------------------------- | --------------------------------------------------------------------- |
| `MODEL_NOT_FOUND`          | The specified model slug does not exist or is not available.          |
| `INSUFFICIENT_BALANCE`     | Your account does not have enough credits to submit this job.         |
| `INVALID_INPUT`            | The input object does not match the model's expected schema.          |
| `CONCURRENT_JOBS_EXCEEDED` | You have reached the maximum number of concurrent jobs for your plan. |
| `MODEL_ACCESS_DENIED`      | Your API key does not have access to the requested model.             |
| `PUBSUB_PUBLISH_FAILED`    | Internal error while queuing the job. Please retry.                   |

## Examples

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://api.muvi.video/v1/jobs/submit \
    -H "Authorization: Bearer YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "model": "google/veo-3.1-fast/text-to-video",
      "input": {
        "prompt": "A cinematic drone shot of a mountain landscape at sunset"
      },
      "webhookUrl": "https://example.com/webhooks/pixelbyte"
    }'
  ```

  ```python Python theme={null}
  import requests

  response = requests.post(
      "https://api.muvi.video/v1/jobs/submit",
      headers={
          "Authorization": "Bearer YOUR_API_KEY",
          "Content-Type": "application/json"
      },
      json={
          "model": "google/veo-3.1-fast/text-to-video",
          "input": {
              "prompt": "A cinematic drone shot of a mountain landscape at sunset"
          },
          "webhookUrl": "https://example.com/webhooks/pixelbyte"
      }
  )

  data = response.json()
  print(f"Job ID: {data['jobId']}")
  print(f"Status: {data['status']}")
  print(f"Estimated completion: {data['estimatedCompletionTime']}")
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch("https://api.muvi.video/v1/jobs/submit", {
    method: "POST",
    headers: {
      "Authorization": "Bearer YOUR_API_KEY",
      "Content-Type": "application/json"
    },
    body: JSON.stringify({
      model: "google/veo-3.1-fast/text-to-video",
      input: {
        prompt: "A cinematic drone shot of a mountain landscape at sunset"
      },
      webhookUrl: "https://example.com/webhooks/pixelbyte"
    })
  });

  const data = await response.json();
  console.log(`Job ID: ${data.jobId}`);
  console.log(`Status: ${data.status}`);
  console.log(`Estimated completion: ${data.estimatedCompletionTime}`);
  ```
</CodeGroup>

### Example Response

```json theme={null}
{
  "jobId": "job_abc123def456",
  "requestId": "req_789xyz",
  "status": "pending",
  "estimatedCompletionTime": "2026-02-18T15:30:00Z",
  "costMicroCents": 500000
}
```
