> ## 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.

# Introductie

De Shootbin API geeft je programmatische toegang tot elk onderdeel van de fotobeoordelingsworkflow. Je kunt projecten en albums aanmaken, foto's uploaden, goedkeuringsstatussen beheren, annotaties vastpinnen op specifieke coördinaten van een afbeelding, nieuwe revisies pushen en de gebruikers in je team beheren, allemaal via HTTP met standaard JSON- en multipart-requests.

## Basis-URL

Alle API-endpoints zijn relatief aan de URL van je Shootbin-instantie:

```text theme={null}
https://your-shootbin-domain.com/api/
```

Elk endpoint dat in deze referentie wordt vermeld, moet voorafgegaan worden door de bovenstaande basis-URL. Het endpoint voor de projectenlijst is bijvoorbeeld beschikbaar op `https://your-shootbin-domain.com/api/projects`.

## Vereiste abonnement

<Warning>
  API-toegang vereist het **Agency-abonnement**. Als je account een Hobby- of Studio-abonnement heeft, worden alle API-requests geweigerd. Upgrade je abonnement vanuit de Billing-pagina in je accountinstellingen voordat je API-aanroepen doet.
</Warning>

## Authenticatie

Alle requests moeten een `Authorization`-header bevatten met een Bearer-token. Je moet ook `Accept: application/json` meesturen zodat de API JSON-foutmeldingen retourneert in plaats van HTML-redirects.

```bash theme={null}
-H "Authorization: Bearer YOUR_API_TOKEN"
-H "Accept: application/json"
```

API-tokens worden aangemaakt vanuit de **API Tokens**-sectie in je Shootbin-accountinstellingen. Bekijk de [Authenticatie](/nl/api/authentication)-pagina voor alle details, inclusief tokenscopes en hoe je `401`-fouten afhandelt.

## Content types

| Type request                                     | Content-Type header                                          |
| ------------------------------------------------ | ------------------------------------------------------------ |
| JSON-body (projecten, goedkeuringen, annotaties) | `application/json`                                           |
| Bestandsuploads (foto's, revisies)               | `multipart/form-data` (automatisch ingesteld door curl `-F`) |

Stel `Content-Type: application/json` niet in voor bestandsuploadrequests, curl regelt de juiste multipart-grens wanneer je de `-F`-vlag gebruikt.

## Responseformaat

Succesvolle responses retourneren JSON. De vorm varieert per endpoint, maar collection-endpoints volgen deze algemene structuur:

```json theme={null}
{
  "data": [...],
  "next_cursor": "eyJpZCI6MTIzfQ",
  "has_more": true,
  "meta": {
    "per_page": 50
  }
}
```

Endpoints voor één resource retourneren het resource-object direct. Aanmaak-endpoints retourneren `201 Created` met de nieuwe resource. Delete-endpoints retourneren `204 No Content` met een lege body.

## Foutresponses

Alle fouten retourneren een JSON-object. Veelvoorkomende HTTP-statuscodes die je kunt tegenkomen:

| Status | Betekenis                                                                                  |
| ------ | ------------------------------------------------------------------------------------------ |
| `400`  | Validatiefout, controleer het `errors`-veld voor veldspecifieke berichten                  |
| `401`  | Ontbrekend of ongeldig API-token                                                           |
| `403`  | Geldig token maar onvoldoende rechten of verkeerd abonnement                               |
| `404`  | Resource niet gevonden of behoort niet tot het opgevraagde project/album                   |
| `422`  | Niet-verwerkbare entiteit, schending van bedrijfsregel (bijv. selectielimiet overschreden) |

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

## Rate limiting

De API gebruikt token-gebaseerde authenticatie zonder aanvullende rate-limit-tier. Vermijd het maken van hoogfrequente polling-requests in strakke loops; gebruik cursor-paginering en verwerk responses voordat je de volgende pagina opvraagt.
