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

# Models and provider keys

> Choose a model and decide who bills its inference.

Prompts support models from OpenAI, Anthropic, Google Gemini, and xAI. [`GET /v1/models`](/revise-api/reference/list-models) returns the supported IDs and current defaults without consuming inference or credits.

```bash theme={null}
curl --fail-with-body 'https://revise.io/api/v1/models?provider=openai' \
  -H "Authorization: Bearer $REVISE_API_KEY"
```

Pass the returned `provider` and `id` as `inference.provider` and `inference.model`. Use `gemini` as the public provider name for Google models.

* Omit `inference` to use the API default for a new conversation.
* Specify only a provider, or set `model: "default"`, to use that provider's default.
* Pin both fields when reproducible model selection matters. The receipt records the resolved selection.

The catalog's `default` is the API-wide default, even on a filtered response. `default_for_provider` marks each provider's default. This is a model catalog, not a live health, capacity, or pricing check.

```ts theme={null}
import { ReviseClient } from "@reviseio/api";

const revise = new ReviseClient({ apiKey: process.env.REVISE_API_KEY! });
const catalog = await revise.models.list();
const result = await revise.prompts.run({
  prompt: "Rewrite this sentence more clearly: We will revert in due course.",
  inference: catalog.default,
}, { idempotencyKey: "rewrite-42" });
console.log(result.message?.content, result.inference);
```

## Use your own provider key

Configure a provider key in the [API console](https://revise.io/console/api-keys). Continue authenticating HTTP requests with your **Revise API key**; provider credentials are stored on the account, not sent in job bodies.

| `inference.billing` | Selection                                                                                           |
| ------------------- | --------------------------------------------------------------------------------------------------- |
| Omitted or `revise` | Use the account's stored key for the resolved provider if present; otherwise use managed inference. |
| `provider`          | Require that stored key. Missing credentials return `400 provider_key_required`.                    |

Setting `billing: "revise"` does not override a stored provider key. When your key is used, your provider bills inference directly and Revise charges only the applicable platform fees. Check `usage.inference.billed_by` and [pricing](/revise-api/pricing).

Each job keeps the credential selected at submission. Deleting or replacing that credential can fail its next model call with `credential_unavailable`; it does not fall back to managed inference. Provider rejection can appear as `provider_credential_rejected`.

## Conversion scanning

PDF and image conversions use **OpenAI only**. Managed scanning uses the default OpenAI model. With your own OpenAI key, scanning can use another OpenAI model listed by the catalog. Other selections return `model_unavailable`.

Deterministic conversions do not use inference and reject nonempty inference settings. See [conversions](/revise-api/conversions).
