Adds a user to the workspace straight away. If no user has that email, one is created. To let the person accept by link instead, use Create invite. Admin only.
Request#
| Field | Type | Required | Description |
|---|---|---|---|
email |
string | Yes | Email of the user to add. |
role |
string | No | admin, developer or member. Default member. |
Roles: admin manages everything, including members and billing. developer builds agents and manages API keys. member is read-only.
Example request#
curl -X POST https://api.tried.com.au/workspace/members \
-H "Authorization: Bearer $TRIED_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"email": "sam@harbourdental.com.au",
"role": "developer"
}'const res = await fetch("https://api.tried.com.au/workspace/members", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.TRIED_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"email": "sam@harbourdental.com.au",
"role": "developer"
}),
});
const member = await res.json();import os, requests
res = requests.post(
"https://api.tried.com.au/workspace/members",
headers={"Authorization": f"Bearer {os.environ['TRIED_API_KEY']}"},
json={
"email": "sam@harbourdental.com.au",
"role": "developer",
},
)
member = res.json()Response#
201 Created
{
"member_id": "member_9e7c5a3f1d2b4c6e8a0f2d4b",
"user_id": "user_7a9c1e3b5d7f9a2c4e6b8d0f",
"email": "sam@harbourdental.com.au",
"name": "Sam Lee",
"role": "developer",
"created_timestamp": 1759708800000
}Returns the new membership. Fields are as in List members.
Errors#
| Status | When |
|---|---|
400 |
Validation failed, for example email: Invalid email. |
401 |
Missing or invalid API key. |
403 |
The key's IP allowlist or scopes reject the request. This route needs the admin scope. A dashboard user without the right role gets Requires role: admin. API keys act as admin. |
409 |
<email> is already a member. |
429 |
Rate limit exceeded. See Rate limits. |
See Errors for the body format.