Browse documentation

Team & invitations

Current release · Updated October 2, 2026

DryKraft team & invitations API: methods, permissions, request fields, response shapes, examples and current limits. Read authentication and error handling first.

POST/api/auth/invitations/preview

Preview invitation

Access: Public · Success: 200

Email-bound invitation; wrong workspace hostname or expired/revoked links return 410. Does not accept access.

JSON request

FieldTypeRequiredDetails
tokenstringYes Pattern: ^[a-f0-9]{64}$.

Response

FieldTypeRequiredDetails
emailemailNo Max 200 characters.
roleadmin | member | viewerNoOwner cannot be assigned or changed here. Only owners manage administrators.
expires_atstringNoTimestamp
acceptedbooleanNoAlready accepted
workspaceobjectNo
Request shape (illustrative)
curl --request POST \
  --url 'https://app.drykraft.com/api/auth/invitations/preview' \
  --header 'Content-Type: application/json' \
  --data '{
  "token": "<value>"
}'
POST/api/auth/invitations/accept

Accept invitation

Access: Public · Success: 200

Checks invited account password, available billing seat and inviter authority. New account needs name. Sets a session directly in the invited workspace.

JSON request

FieldTypeRequiredDetails
tokenstringYes Pattern: ^[a-f0-9]{64}$.
passwordstringYes Max 128 characters.
modelogin | signupYesAccount choice
namestringNoNew account name Max 100 characters.

Response

Use OK.

Request shape (illustrative)
curl --request POST \
  --url 'https://app.drykraft.com/api/auth/invitations/accept' \
  --header 'Content-Type: application/json' \
  --data '{
  "token": "<value>",
  "password": "<value>",
  "mode": "login"
}'
GET/api/settings/members

List workspace members

Access: Workspace member · Success: 200

25 members per page, ordered by email. Pass next_cursor unchanged.

Query parameters

ParameterTypeRequiredDetails
cursoremailNoOptional next_cursor email Max 200 characters.

No request body is required.

Response

FieldTypeRequiredDetails
itemsobject[]No
totalintegerNoTotal
next_cursorstring or nullNo
Request shape (illustrative)
curl --request GET \
  --url 'https://app.drykraft.com/api/settings/members' \
  --cookie 'drykraft_session=<YOUR_SESSION_TOKEN>'
PUT/api/settings/members/{id}

Change member role

Access: Owner or admin · Success: 200

Owner is protected; admins cannot manage another administrator or grant admin. Refresh on stale version.

JSON request

FieldTypeRequiredDetails
roleadmin | member | viewerYesOwner cannot be assigned or changed here. Only owners manage administrators.
versionintegerYesPositive optimistic version returned by the latest read. Refresh on 409; do not overwrite stale changes. Min 1.

Response

Use OK.

Request shape (illustrative)
curl --request PUT \
  --url 'https://app.drykraft.com/api/settings/members/00000000-0000-4000-8000-000000000001' \
  --cookie 'drykraft_session=<YOUR_SESSION_TOKEN>' \
  --header 'Content-Type: application/json' \
  --data '{
  "role": "admin",
  "version": 1
}'
DELETE/api/settings/members/{id}

Remove member

Access: Owner or admin · Success: 200

Revokes this workspace’s sessions, keeps business records and revokes pending invitations sent by the member. Owner/admin protections apply. Available even after trial expiration.

Query parameters

ParameterTypeRequiredDetails
versionintegerYesRequired current member version Min 1.

No request body is required.

Response

Use OK.

Request shape (illustrative)
curl --request DELETE \
  --url 'https://app.drykraft.com/api/settings/members/00000000-0000-4000-8000-000000000001?version=1' \
  --cookie 'drykraft_session=<YOUR_SESSION_TOKEN>'
GET/api/settings/invitations

List pending invitations

Access: Owner or admin · Success: 200

25 per page; includes expired, nonrevoked pending invitations with active flag.

Query parameters

ParameterTypeRequiredDetails
cursoruuidNo

No request body is required.

Response

FieldTypeRequiredDetails
itemsobject[]No
totalintegerNoTotal
next_cursorstring or nullNo
Request shape (illustrative)
curl --request GET \
  --url 'https://app.drykraft.com/api/settings/invitations' \
  --cookie 'drykraft_session=<YOUR_SESSION_TOKEN>'
POST/api/settings/invitations

Create invitation link

Access: Owner or admin · Success: 201

Valid seven days; replacing the same email revokes the old link. Only owner grants admin. No invitation email is sent. Keep the one-time response token private.

JSON request

FieldTypeRequiredDetails
emailemailYes Max 200 characters.
roleadmin | member | viewerYesOwner cannot be assigned or changed here. Only owners manage administrators.

Response

FieldTypeRequiredDetails
iduuidNo
emailemailNo Max 200 characters.
roleadmin | member | viewerNoOwner cannot be assigned or changed here. Only owners manage administrators.
expires_atstringNoTimestamp
tokenstringNoPrivate invitation token
Request shape (illustrative)
curl --request POST \
  --url 'https://app.drykraft.com/api/settings/invitations' \
  --cookie 'drykraft_session=<YOUR_SESSION_TOKEN>' \
  --header 'Content-Type: application/json' \
  --data '{
  "email": "person@example.com",
  "role": "admin"
}'
DELETE/api/settings/invitations/{id}

Revoke invitation

Access: Owner or admin · Success: 200

Already accepted invitations return 409; use member access instead. Repeated revocation is safe.

No request body is required.

Response

Use OK.

Request shape (illustrative)
curl --request DELETE \
  --url 'https://app.drykraft.com/api/settings/invitations/00000000-0000-4000-8000-000000000001' \
  --cookie 'drykraft_session=<YOUR_SESSION_TOKEN>'