# Quickstart

Make your first successful Dyflexis API call in five minutes.

## What you need

- **An API key.** Issued by Dyflexis when you [become a partner](/guides/become-a-partner); during development you receive a key for your dedicated sandbox tenant. Keys are sent in the `Authorization` header with the `Token ` prefix.
- **A system name.** The tenant identifier of the Dyflexis environment you are calling, it is the first path segment of every URL (`https://app.dyflexis.com/{systemName}/...`). The customer (or your sandbox welcome mail) provides this value.
- **A scope that matches the endpoint.** Every operation in the [API reference](/openapi) lists the scope it requires. The call below works with the `external_employees` or `clock` scope.


## Your first call

List the offices on the tenant:

```bash
curl 'https://app.dyflexis.com/{systemName}/api2/offices' \
  -H 'Accept: application/json' \
  -H 'Authorization: Token YOUR_AUTH_TOKEN'
```

Replace `{systemName}` with your tenant's system name and `YOUR_AUTH_TOKEN` with your API key.

A successful response returns `200 OK`:

```json
{
  "offices": [
    {
      "id": 1,
      "name": "Harborview Grand Hotel"
    }
  ]
}
```

## If it didn't work

| Response | Cause | Fix |
|  --- | --- | --- |
| `401 Unauthorized` | Missing or malformed `Authorization` header | Send `Authorization: Token YOUR_AUTH_TOKEN`, the `Token ` prefix is part of the header value |
| `403 Forbidden` | Your key does not include the required scope | Ask Dyflexis to enable the scope on your key |
| `404 Not Found` | Wrong system name in the URL | Verify the tenant identifier with the customer |


## Next steps

- Pick the integration shape that matches your product in [Use cases](/guides/use-cases).
- Browse the [API reference](/openapi) for the resources you need, every operation lists its scope, request and response schemas, and ready-made code samples.
- Receiving events instead of polling? See the [Webhooks guide](/guides/webhooks).