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

> ## Agent Instructions
> This site documents two API families. Choose the family before generating integration code and keep its request fields, billing, statuses, responses, and webhooks together.
> SwitchX API: POST /v1/switchx/generations; use /quickstart and /authentication. Completed generation files are under output.
> Enterprise API: POST /v1/products/{product}/jobs and GET /v1/product-jobs/{job_id}; use /enterprise/quickstart and /products. Check /enterprise for current access requirements. Completed product files are under outputs.
> For product jobs, fetch model-specific input_schema from GET /v1/products/{product}/models. OpenAPI defines the common job response; product guides show illustrative completed outputs. Do not treat output examples as exhaustive schemas.
> SwitchX 2.0 Finish uses the separate switchx_finish product and model_id switchx-2.0. Follow /products/switchx-finish: pass inputs.parent_job_id (a completed Standard switchx product generation's public dap_ ID owned by the same key owner, organization, and team) and inputs.target_resolution (1080 or 2160), without uploading media. Fast results, Finish results, and legacy SwitchX API generations cannot be parents. Estimate the transition, then submit and poll the new child ID; result files are under outputs.
> For product APIs, authenticate with an Organization API Key in x-api-key and keep the same organization and X-Beeble-Team-Id context for uploads, estimates, submissions, and reads. Use Beeble Cloud credits; product routes do not support USD.
> Follow /enterprise/llms-txt for the product API workflow: discover products and models, upload media, estimate credits, submit with an idempotency_key, and poll or receive webhooks. On an uncertain submission, retry the same body and key; do not create a replacement job.
> Product-job success is status=success; stop polling on failed, cancelled, or credit_required. Use the chosen product guide for completed response examples and download fields. Refer to /enterprise/errors, /enterprise/rate-limits, /guides/billing, and /guides/jobs for failures, limits, and refunds.

# API keys & organizations

> Create a key and choose the organization and team for your requests.

## API access

An **Organization API Key** is an API key created with your organization
selected in the Developer Portal. The product must be enabled for that organization. Jobs use **Beeble Cloud credits**. See the [Overview](/docs/enterprise)
for current availability. Call `GET /v1/products` to list products available to
your organization.

## Getting Your API Key

1. Open the [Developer Portal](https://developer.beeble.ai/api-keys) and sign in.
2. Select your organization and click **Create Key**.
3. Copy and store the key securely. It is shown only once.

## Using Your API Key

Include your API key in the `x-api-key` header with every request to the Beeble API:

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://api.beeble.ai/v1/uploads \
    -H "x-api-key: YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{"filename": "source.mp4"}'
  ```

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

  response = requests.post(
      "https://api.beeble.ai/v1/uploads",
      headers={
          "x-api-key": "YOUR_API_KEY",
          "Content-Type": "application/json"
      },
      json={"filename": "source.mp4"}
  )
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch("https://api.beeble.ai/v1/uploads", {
    method: "POST",
    headers: {
      "x-api-key": "YOUR_API_KEY",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({ filename: "source.mp4" }),
  })
  ```
</CodeGroup>

See [Uploads](/docs/guides/uploads#create-an-upload-url) for the response example and
[request and response schemas](/docs/enterprise/api-reference/create-upload-url).

## Revoking Your API Key

In the [Developer Portal](https://developer.beeble.ai/api-keys), click **Revoke**
next to your key and confirm. Requests using that key will then be rejected.

## Organization Keys

Each key is bound to its owner and organization. Organization members can create
and revoke their own keys. Requests verify current membership; the key stops
working when its owner leaves the organization.

### Internal teams

If your organization uses internal teams, include `X-Beeble-Team-Id` on uploads,
catalog requests, job submissions, and reads. Keep the same organization and
team throughout a job. Organization administrators can omit the header to read
jobs with no team assignment.

<Accordion title="Organization security policies">
  API keys follow your organization's MFA and SSO policies. Keys cannot supply a
  session MFA proof; an organization requiring MFA needs an applicable SSO
  exemption to use machine keys. Product jobs can return `409` if your
  organization requires a compute region they cannot enforce.
</Accordion>

See [Billing & credits](/docs/guides/billing) for payment setup and
[Jobs & retries](/docs/guides/jobs#safe-retries) for retry handling.
