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

# Authentication

> Authenticate to the Operata API with HTTP Basic — your Operata Group ID as the username and an API token as the password.

The Operata API uses **HTTP Basic** authentication (RFC 7617). Every request carries your Operata Group ID as the username and an API token as the password, encoded in the `Authorization` header.

| Security scheme type      | HTTP  |
| ------------------------- | ----- |
| HTTP authorization scheme | Basic |

## Credentials

<Steps>
  <Step title="Find your Group ID (username)">
    Your **Operata Group ID** is the UUID in the URL when you're logged in to Operata.

    For example, if your URL is `https://app.operata.io/a28453f9-abab-cdcd-efef-84d9e67ac297/dashboard`, your Group ID is `a28453f9-abab-cdcd-efef-84d9e67ac297`.
  </Step>

  <Step title="Generate an API token (password)">
    Log in to the [Operata console](https://app.operata.io) and go to **Settings → Config → API** to create a token. Treat tokens like passwords — store them securely and never commit them to version control.
  </Step>

  <Step title="Send the credentials in the Authorization header">
    Pass your Group ID and token using HTTP Basic auth. Most HTTP clients encode and attach the header automatically.
  </Step>
</Steps>

## Example request

<CodeGroup>
  ```bash cURL theme={null}
  curl -u "<group-id>:<api-token>" \
    https://api.operata.io/v1/data/calls
  ```

  ```javascript Node.js theme={null}
  const groupId = process.env.OPERATA_GROUP_ID;
  const token = process.env.OPERATA_API_TOKEN;
  const auth = Buffer.from(`${groupId}:${token}`).toString("base64");

  const response = await fetch("https://api.operata.io/v1/data/calls", {
    headers: { Authorization: `Basic ${auth}` },
  });
  ```

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

  response = requests.get(
      "https://api.operata.io/v1/data/calls",
      auth=(os.environ["OPERATA_GROUP_ID"], os.environ["OPERATA_API_TOKEN"]),
  )
  ```
</CodeGroup>

<Tip>
  See the [Operata Help Centre article on API tokens](https://help.operata.com/en/articles/5542797-how-do-i-create-view-change-and-revoke-api-tokens) for guidance on creating, viewing, changing, and revoking tokens. {/* lint-voice-disable: "Help Centre" is the literal external link anchor text */}
</Tip>

<Warning>
  **Keep tokens secret.** Store API tokens in environment variables or a secrets manager. Rotate them regularly in line with your organization's security policy.
</Warning>
