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

# Quickstart

> Authenticate and call your first API endpoint.

This guide walks through obtaining an access token and listing offerings on the **development** environment.

## Prerequisites

* An active API credential (`client_id` and `client_secret`) from the Asset Manager dashboard (dev tenant)
* At least the `offering.read` scope enabled on your credential
* Beta version `2026-07-02` is only available on dev: `https://dev.go.simplytokenized.com/_api`

## Step 1 — Authenticate

Request a bearer access token:

<CodeGroup>
  ```bash curl theme={null}
  curl -X POST "https://dev.go.simplytokenized.com/_api/auth" \
    -H "Content-Type: application/json" \
    -d '{
      "client_id": "YOUR_CLIENT_ID",
      "client_secret": "YOUR_CLIENT_SECRET",
      "scopes": ["offering.read"],
      "api_version": "2026-07-02"
    }'
  ```

  ```javascript Node.js theme={null}
  const response = await fetch("https://dev.go.simplytokenized.com/_api/auth", {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({
      client_id: process.env.CLIENT_ID,
      client_secret: process.env.CLIENT_SECRET,
      scopes: ["offering.read"],
      api_version: "2026-07-02",
    }),
  });

  const { access_token, expires_at } = await response.json();
  console.log("Token expires at:", expires_at);
  ```

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

  response = requests.post(
      "https://dev.go.simplytokenized.com/_api/auth",
      json={
          "client_id": os.environ["CLIENT_ID"],
          "client_secret": os.environ["CLIENT_SECRET"],
          "scopes": ["offering.read"],
          "api_version": "2026-07-02",
      },
  )
  response.raise_for_status()
  data = response.json()
  access_token = data["access_token"]
  ```
</CodeGroup>

Example response:

```json theme={null}
{
  "access_token": "eyJhbGciOiJIUzI1NiIs...",
  "token_type": "Bearer",
  "expires_at": "2026-07-12T10:40:00.000Z"
}
```

The response includes:

```
ST-Api-Version: 2026-07-02
ST-Api-Version-Beta: true
```

Version `2026-07-02` is in **beta** and only available on development. See [Versioning](/guides/versioning).

## Step 2 — Call a protected endpoint

Use the access token to list offerings:

```bash theme={null}
curl "https://dev.go.simplytokenized.com/_api/offerings?limit=10&offset=0&lang=en" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"
```

## Other environments

| Environment | Base URL                            |
| ----------- | ----------------------------------- |
| Staging     | `https://stage.go.floris3.com/_api` |
| Live        | `https://go.floris3.com/_api`       |

Use environment-specific credentials for staging and live. Beta API versions are not available outside development.

## Step 3 — Subscribe to webhooks (optional)

Configure an outbound webhook URL in **Administration → API Access → Webhooks** to receive `order.created` and `order.status_updated` events. See [Webhook overview](/webhooks/overview).

## Token lifetime

Access tokens expire after **10 minutes** (600 seconds). Request a new token before `expires_at`.

## Troubleshooting

| Status | Cause                                           |
| ------ | ----------------------------------------------- |
| `401`  | Invalid `client_id` or `client_secret`          |
| `403`  | Requested scope not allowed for this credential |
| `429`  | Auth or API rate limit exceeded                 |

See [Errors](/guides/errors) for the full error reference.
