Skip to navigation

Manage project members

Add, list, update and remove Autodesk Construction Cloud project members.
View as Markdown

This walkthrough covers the lifecycle of a project member: importing members in bulk, listing and filtering them, changing their product access, and removing them.

1

Get a token that can act as a user

Member writes are user-scoped. Use a 3-legged token, or a 2-legged token plus the User-Id header of a project or account admin. See Authentication.

2

Import the members

POST projects/:projectId/users:import adds up to 200 members in one request. Each entry needs an email and the products the member should get, where access is administrator, member or none.

Request body
{
"users": [
{
"email": "member@example.com",
"companyId": "9e2b1c...",
"roleIds": ["1a2b3c..."],
"products": [
{ "key": "projectAdministration", "access": "administrator" },
{ "key": "docs", "access": "member" }
]
}
]
}

The response reports per-entry success and failure, so a partially valid batch still imports the valid rows — always inspect failures rather than relying on the status code alone.

3

Confirm the members landed

GET projects/:projectId/users lists members. Narrow it with filters and trim the payload with fields:

GET /construction/admin/v1/projects/:projectId/users?filter[status]=active&fields=name,email,status,accessLevels&sort=addedOn%20desc
4

Change access or role

PATCH projects/:projectId/users/:userId updates a single member — company, roles and per-product access. Send only the attributes you are changing.

5

Remove a member

DELETE projects/:projectId/users/:userId removes the member from the project. Hub membership is unaffected; use the hub admin operations for that.

Bulk-inviting across projects

To seed the same people into several projects, call POST accounts/:accountId/projects/users:batch-invite instead of importing project by project.

Syncing instead of importing

When an external system owns the membership list, POST projects/:projectId/users:sync reconciles the project against the list you send, and POST projects/:projectId/users:sync-status reports on the resulting job. The same pattern exists for companies and roles.

New integrations should call the v2 import operation: it takes a pure 2-legged token and returns richer per-row errors. See Migrating to v2.