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

# Authenticeren met de Shootbin API

> Leer hoe je API-tokens aanmaakt, ze koppelt aan requests, tokenscopes begrijpt en authenticatiefouten van de Shootbin API afhandelt.

De Shootbin API gebruikt token-gebaseerde authenticatie. Elke request moet een geldig Bearer-token meedragen in de `Authorization`-header. Tokens zijn gekoppeld aan je gebruikersaccount en dragen fijnmazige scopes die bepalen welke operaties ze kunnen uitvoeren.

<Warning>
  API-toegang is alleen beschikbaar op het **Agency-abonnement**. Tokens die op Hobby- of Studio-accounts zijn uitgegeven, krijgen een `403`-response op alle API-endpoints, ongeacht de scope.
</Warning>

## Een API-token aanmaken

1. Log in op je Shootbin-account.
2. Open **Account Settings** en navigeer naar de **API Tokens**-sectie.
3. Geef het token een beschrijvende naam (bijv. `ci-uploader` of `integration-prod`).
4. Selecteer de scopes die het token nodig heeft (zie [Tokenscopes](#tokenscopes) hieronder).
5. Klik op **Create** en kopieer het token direct, het wordt slechts één keer getoond.

Bewaar het token veilig (bijvoorbeeld in een secrets manager of een CI/CD-omgevingsvariabele). Behandel het als een wachtwoord: iedereen met het token kan namens jou handelen.

## Het token koppelen aan requests

Voeg het token toe aan elke request via de `Authorization`-header, samen met `Accept: application/json`:

```bash theme={null}
curl -X GET https://your-shootbin-domain.com/api/projects \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Accept: application/json"
```

De `Accept: application/json`-header is verplicht. Zonder deze header kan de API een HTML-redirect naar de loginpagina retourneren bij authenticatiefouten in plaats van een JSON-fout.

<Tip>
  Wanneer je omgevingsvariabelen gebruikt, sla je token dan op als `SHOOTBIN_API_TOKEN` en verwijs ernaar als `$SHOOTBIN_API_TOKEN` in shellscripts om te voorkomen dat de waarde uitlekt in je shellgeschiedenis.
</Tip>

## Tokenscopes

Wanneer je een token aanmaakt, ken je er één of meer scopes aan toe. De API handhaaft deze scopes bij elke request:

| Scope    | Alias         | Wat het toestaat                                                                    |
| -------- | ------------- | ----------------------------------------------------------------------------------- |
| `create` | `post:create` | Projecten en albums aanmaken en foto's uploaden                                     |
| `update` | `post:update` | Foto's goedkeuren/intrekken, annotaties toevoegen of verwijderen, revisies uploaden |

Een token zonder de `create`-scope krijgt een `403` wanneer het probeert een project aan te maken of een foto te uploaden. Een token zonder `update` krijgt een `403` wanneer het probeert een foto goed te keuren of annotaties te beheren.

<Note>
  Je kunt meerdere tokens uitgeven met verschillende scopes, bijvoorbeeld een alleen-lezen rapportagetoken en een afzonderlijk uploadtoken dat gebruikt wordt in je bewerkingspipeline.
</Note>

## Authenticatiefouten

| Status             | Oorzaak                                                                                       | Oplossing                                                                             |
| ------------------ | --------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- |
| `401 Unauthorized` | Token ontbreekt, is misvormd of is ingetrokken                                                | Controleer of de `Authorization: Bearer`-header aanwezig is en het token geldig is    |
| `403 Forbidden`    | Token is geldig maar mist de vereiste scope, of het account zit niet op het Agency-abonnement | Verifieer de scopes van het token in de accountinstellingen, of upgrade je abonnement |

Voorbeeld van een `401`-response:

```json theme={null}
{
  "message": "Unauthenticated."
}
```

Voorbeeld van een `403`-response wanneer de scope ontbreekt:

```json theme={null}
{
  "message": "This API token does not have permission to create projects."
}
```

## Een token intrekken

Je kunt elk token intrekken vanuit de **API Tokens**-sectie van je accountinstellingen. Ingetrokken tokens retourneren direct `401` bij volgende requests. Roteer tokens regelmatig en trek elk token in dat niet langer nodig is.
