> This page is for version v2 (default).
> For other versions, use one of these documentation indexes:
> - v2 (default): https://autodesk-poc.ferndocs.com/v2/llms.txt
> - v1: https://autodesk-poc.ferndocs.com/v1/llms.txt

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://autodesk-poc.ferndocs.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://autodesk-poc.ferndocs.com/_mcp/server.

# HTTP Specification

All operations speak JSON over HTTPS (`Content-Type: application/json`) and are
served from `https://developer.api.autodesk.com` under the version base path,
for example `/construction/admin/v1`.

## Common headers

| Header                | Direction | Purpose                                                                                 |
| --------------------- | --------- | --------------------------------------------------------------------------------------- |
| `Authorization`       | Request   | `Bearer <token>`. See [Authentication](/authentication).                                |
| `User-Id`             | Request   | ACC or Autodesk user ID to impersonate with a 2-legged token.                           |
| `Region`              | Request   | Route the request explicitly (`US`, `EMEA`, …) instead of relying on automatic routing. |
| `Request-Id`          | Both      | Correlation ID; echoed back on responses and worth logging for support requests.        |
| `RateLimit-Value`     | Response  | Requests allowed in the current one-minute window.                                      |
| `RateLimit-Remaining` | Response  | Requests left in the current window.                                                    |

## Pagination

List operations page with `limit` and `offset`.

* `limit` defaults to `20`, minimum `1`, and is capped at `200` — a larger value
  still returns 200 records.
* `offset` defaults to `0`. `limit=20&offset=40` returns records 41–60.
* Responses carry a `pagination` object with the `limit`, `offset` and
  `totalResults` that produced them.

## Filtering and sorting

Filters are query parameters of the form `filter[field]=value`, and text filters
share a matching mode:

```http
GET /construction/admin/v1/projects/:projectId/users?filter[name]=Sam&filterTextMatch=startsWith&sort=name%20asc&fields=name,email,status&limit=50
```

| Parameter         | Behavior                                                       |
| ----------------- | -------------------------------------------------------------- |
| `filter[...]`     | Restrict results. Multiple filters are ANDed.                  |
| `orFilters`       | Names the filters that should be ORed with each other instead. |
| `filterTextMatch` | `contains` (default), `startsWith`, `endsWith` or `equals`.    |
| `sort`            | Comma-separated fields, each optionally `asc`/`desc`.          |
| `fields`          | Comma-separated response fields, to trim the payload.          |

## Errors

Errors return a JSON body with a machine-readable `code`, a human-readable
`title`/`detail`, and the `Request-Id` of the failed call.

| Status | Meaning                                                                                                  |
| ------ | -------------------------------------------------------------------------------------------------------- |
| `400`  | Malformed request — bad syntax, unknown field, or invalid filter value.                                  |
| `401`  | Missing, expired or malformed token.                                                                     |
| `403`  | Token is valid but lacks the scope, or the flow is not accepted (see [Authentication](/authentication)). |
| `404`  | Hub, project or user does not exist, or is not visible to the caller.                                    |
| `409`  | Conflicting state — for example adding a member who is already in the project.                           |
| `429`  | Rate limit exceeded. Back off using the `RateLimit-*` headers.                                           |
| `5xx`  | Transient server error; retry with backoff.                                                              |

## Forward compatibility

Autodesk adds response attributes without a version bump. Parse responses
leniently: ignore attributes your integration does not recognize instead of
failing on them. Operations that are *not* backward compatible with BIM 360
projects say so on their reference page.