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

# Choose an integration

> Pick the Averta integration path that matches your provider and control level.

Most teams should use a provider wrapper. It keeps your native provider SDK and adds Averta checkpoints around supported calls.

## Integration Paths

| If your agent uses                   | Start here                                    | Package                                                                               |
| ------------------------------------ | --------------------------------------------- | ------------------------------------------------------------------------------------- |
| OpenAI JavaScript SDK                | [OpenAI quickstart](/openai/quickstart)       | `@averta-security/sdk-openai`                                                         |
| OpenAI Python SDK                    | [OpenAI quickstart](/openai/quickstart)       | `averta-openai` source beta                                                           |
| Anthropic JavaScript SDK             | [Anthropic quickstart](/anthropic/quickstart) | `@averta-security/sdk-anthropic`                                                      |
| Another provider or a custom runtime | [Custom integrations](/custom/overview)       | [Raw API](/custom/raw-api), `@averta-security/sdk-core`, or `averta-core` source beta |

## Use OpenAI When

* your agent already uses the OpenAI JavaScript or Python SDK
* you want guarded `responses.create(...)` calls
* you use Chat Completions and want the same wrapper model
* you need streaming support with the current OpenAI wrapper limits

## Use Anthropic When

* your agent already uses `@anthropic-ai/sdk`
* you use `messages.create(...)`
* you need tool exposure, tool-call, tool-result, and output checks around Messages

There is no Anthropic Python wrapper in the current SDK packages.

## Use Custom Only When

* your provider does not have a first-class Averta wrapper
* you need to normalize provider payloads yourself
* you are building a reusable adapter for your platform
* your runtime language cannot use the JavaScript or Python packages

If the wrapper supports your provider path, use it. Rebuilding the lifecycle manually when a wrapper exists is extra code with more places to get policy enforcement wrong.

## Next Steps

<CardGroup cols={2}>
  <Card title="OpenAI" icon="wand-magic-sparkles" href="/openai/quickstart">
    Protect OpenAI JavaScript or Python agent calls.
  </Card>

  <Card title="Anthropic" icon="sparkles" href="/anthropic/quickstart">
    Protect Anthropic Messages calls with `wrapAnthropic(...)`.
  </Card>

  <Card title="Checkpoints" icon="shield-check" href="/concepts/checkpoints">
    Understand the shared lifecycle.
  </Card>

  <Card title="Custom integrations" icon="puzzle-piece" href="/custom/overview">
    Build a custom adapter or call the raw API.
  </Card>

  <Card title="Raw API" icon="braces" href="/custom/raw-api">
    Integrate Averta from any programming language.
  </Card>
</CardGroup>
