# Authentication

You can cover model costs with Infron AI API keys.

Our API authenticates requests using Bearer tokens. This allows you to use `curl` or the [OpenAI SDK](https://platform.openai.com/docs/frameworks) directly with Infron AI.

## Using an API key

To use an API key, [first create your key](https://infron.ai/dashboard/apiKeys). Give it a name.

If you're calling the Infron AI API directly, set the `Authorization` header to a Bearer token with your API key.

If you're using the OpenAI Typescript SDK, set the `api_base` to `https://app.onerouter.pro/v1` and the `apiKey` to your API key.

{% tabs %}
{% tab title="TypeScript (Bearer Token)" %}

```typescript
fetch('https://llm.onerouter.pro/v1/chat/completions', {
  method: 'POST',
  headers: {
    Authorization: 'Bearer <API_KEY>',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    model: 'gpt-4o',
    messages: [
      {
        role: 'user',
        content: 'What is the meaning of life?',
      },
    ],
  }),
});
```

{% endtab %}

{% tab title="TypeScript (OpenAI SDK)" %}

```typescript
import OpenAI from 'openai';

const openai = new OpenAI({
  baseURL: 'https://llm.onerouter.pro/v1',
  apiKey: '<API_KEY>'
});

async function main() {
  const completion = await openai.chat.completions.create({
    model: 'gpt-4o',
    messages: [{ role: 'user', content: 'Say this is a test' }],
  });

  console.log(completion.choices[0].message);
}

main();
```

{% endtab %}

{% tab title="Python" %}

```python
import openai

openai.api_base = "https://llm.onerouter.pro/v1"
openai.api_key = "<API_KEY>"

response = openai.ChatCompletion.create(
  model="gpt-4o",
  messages=[...]
)

reply = response.choices[0].message
```

{% endtab %}

{% tab title="Shell" %}

```shell
curl https://llm.onerouter.pro/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $API_KEY" \
  -d '{
  "model": "gpt-4o",
  "messages": [
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "Hello!"}
  ]
}'
```

{% endtab %}
{% endtabs %}

## If your key has been exposed

You must protect your API keys and never commit them to public repositories.

Infron AI is a GitHub secret scanning partner, and has other methods to detect exposed keys. If we determine that your key has been compromised, you will receive an email notification.

If you receive such a notification or suspect your key has been exposed, immediately visit [your key settings page](https://infron.ai/dashboard/apiKeys) to delete the compromised key and create a new one.

Using environment variables and keeping keys out of your codebase is strongly recommended.
