curl --request POST \
--url https://api.instantly.ai/api/v2/workspace-members \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"email": "user@example.com",
"role": "editor"
}
'import requests
url = "https://api.instantly.ai/api/v2/workspace-members"
payload = {
"email": "user@example.com",
"role": "editor"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({email: 'user@example.com', role: 'editor'})
};
fetch('https://api.instantly.ai/api/v2/workspace-members', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));HttpResponse<String> response = Unirest.post("https://api.instantly.ai/api/v2/workspace-members")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"email\": \"user@example.com\",\n \"role\": \"editor\"\n}")
.asString();<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.instantly.ai/api/v2/workspace-members",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'email' => 'user@example.com',
'role' => 'editor'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.instantly.ai/api/v2/workspace-members"
payload := strings.NewReader("{\n \"email\": \"user@example.com\",\n \"role\": \"editor\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"id": "01a082d0-3365-732b-9149-9bccda222145",
"email": "user@example.com",
"user_id": "01a082d0-3365-732b-9149-9bcded289fdb",
"role": "editor",
"timestamp_created": "2026-09-08T20:57:57.861Z",
"workspace_id": "01a082d0-3365-732b-9149-9bce17005f04",
"accepted": false,
"user_email": "user@example.com",
"nickname": "Finance lead",
"name": {
"first": "John",
"last": "Smith"
},
"issuer_id": "01a082d0-3365-732b-9149-9bcfb33a69f9",
"permissions": [
"unibox.all"
]
}{
"statusCode": 400,
"error": "Bad Request",
"message": "body must have required property 'name'"
}{
"statusCode": 401,
"error": "Unauthorized",
"message": "Missing Authorization header"
}{
"statusCode": 402,
"error": "Payment Required",
"message": "Workspace does not have an active paid plan"
}{
"statusCode": 404,
"error": "Not Found",
"message": "Resource not found"
}{
"statusCode": 429,
"error": "Too Many Requests",
"message": "Rate limit exceeded"
}Create workspace member
Requires one of the following scopes: workspace_members:create, workspace_members:all, all:create, all:all
curl --request POST \
--url https://api.instantly.ai/api/v2/workspace-members \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"email": "user@example.com",
"role": "editor"
}
'import requests
url = "https://api.instantly.ai/api/v2/workspace-members"
payload = {
"email": "user@example.com",
"role": "editor"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({email: 'user@example.com', role: 'editor'})
};
fetch('https://api.instantly.ai/api/v2/workspace-members', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));HttpResponse<String> response = Unirest.post("https://api.instantly.ai/api/v2/workspace-members")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"email\": \"user@example.com\",\n \"role\": \"editor\"\n}")
.asString();<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.instantly.ai/api/v2/workspace-members",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'email' => 'user@example.com',
'role' => 'editor'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.instantly.ai/api/v2/workspace-members"
payload := strings.NewReader("{\n \"email\": \"user@example.com\",\n \"role\": \"editor\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"id": "01a082d0-3365-732b-9149-9bccda222145",
"email": "user@example.com",
"user_id": "01a082d0-3365-732b-9149-9bcded289fdb",
"role": "editor",
"timestamp_created": "2026-09-08T20:57:57.861Z",
"workspace_id": "01a082d0-3365-732b-9149-9bce17005f04",
"accepted": false,
"user_email": "user@example.com",
"nickname": "Finance lead",
"name": {
"first": "John",
"last": "Smith"
},
"issuer_id": "01a082d0-3365-732b-9149-9bcfb33a69f9",
"permissions": [
"unibox.all"
]
}{
"statusCode": 400,
"error": "Bad Request",
"message": "body must have required property 'name'"
}{
"statusCode": 401,
"error": "Unauthorized",
"message": "Missing Authorization header"
}{
"statusCode": 402,
"error": "Payment Required",
"message": "Workspace does not have an active paid plan"
}{
"statusCode": 404,
"error": "Not Found",
"message": "Resource not found"
}{
"statusCode": 429,
"error": "Too Many Requests",
"message": "Rate limit exceeded"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
The Workspace Member to create
The Workspace Member to create
Email address of the workspace member
"user@example.com"
THe role of the workspace member defining their access level. While the "owner" role is listed in the enum, it cannot be created via the API, and is only assigned to the user who creates the workspace.
owner, admin, editor, view, client "editor"
Email address of the user
"user@example.com"
Private workspace member nickname visible only to the workspace owner
80"Finance lead"
The permissions for this workspace member. Used in the app to restrict access to certain sections
dashboard.view, campaigns.view, campaigns.create, campaigns.edit, campaigns.delete, organization.manage, organization.integrations, organization.billing, organization.users.manage, leadFinder.view, customLeadLabels.create, customLeadLabels.edit, customLeadLabels.delete, unibox.all, analytics.view, websiteChat.view, websiteChat.manage, agency.manage, accounts.view, accounts.manage, leadManagement.view, leads.move, crm.view, websiteVisitors.view, blocklist.manage, preferences.manage, inboxPlacement.view, aiAgents.manage, workspaceGroupMembers.invite, workspaceGroupMembers.remove, workspaceGroupMembers.leave Response
The Workspace Member
A member of a workspace with associated user details
Unique identifier for the workspace member
"01a082d0-3365-732b-9149-9bccda222145"
Email address of the workspace member
"user@example.com"
User ID of the workspace member
"01a082d0-3365-732b-9149-9bcded289fdb"
THe role of the workspace member defining their access level. While the "owner" role is listed in the enum, it cannot be created via the API, and is only assigned to the user who creates the workspace.
owner, admin, editor, view, client "editor"
Timestamp when the workspace member was created
"2026-09-08T20:57:57.861Z"
ID of the workspace this member belongs to
"01a082d0-3365-732b-9149-9bce17005f04"
Whether the member has accepted the workspace invitation
false
Email address of the user
"user@example.com"
Private workspace member nickname visible only to the workspace owner
80"Finance lead"
Show child attributes
Show child attributes
ID of the user who added this member to the workspace
"01a082d0-3365-732b-9149-9bcfb33a69f9"
The permissions for this workspace member. Used in the app to restrict access to certain sections
dashboard.view, campaigns.view, campaigns.create, campaigns.edit, campaigns.delete, organization.manage, organization.integrations, organization.billing, organization.users.manage, leadFinder.view, customLeadLabels.create, customLeadLabels.edit, customLeadLabels.delete, unibox.all, analytics.view, websiteChat.view, websiteChat.manage, agency.manage, accounts.view, accounts.manage, leadManagement.view, leads.move, crm.view, websiteVisitors.view, blocklist.manage, preferences.manage, inboxPlacement.view, aiAgents.manage, workspaceGroupMembers.invite, workspaceGroupMembers.remove, workspaceGroupMembers.leave