import requests
url = "https://eu.app.clarifeye.ai/api/v1/projects/{project_id}/invites/bulk-invite/"
payload = {
"emails": ["[email protected]", "[email protected]"],
"permissions": ["CAN_VIEW_DATA"],
"profile": "contributor"
}
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({
emails: ['[email protected]', '[email protected]'],
permissions: ['CAN_VIEW_DATA'],
profile: 'contributor'
})
};
fetch('https://eu.app.clarifeye.ai/api/v1/projects/{project_id}/invites/bulk-invite/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));curl --request POST \
--url https://eu.app.clarifeye.ai/api/v1/projects/{project_id}/invites/bulk-invite/ \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"emails": [
"[email protected]",
"[email protected]"
],
"permissions": [
"CAN_VIEW_DATA"
],
"profile": "contributor"
}
'{
"results": [
{
"email": "<string>",
"status": "invited_new",
"reason": "invalid_email"
}
],
"invited_new": 123,
"added_existing": 123,
"skipped": 123
}{
"error": "User not found"
}{
"error": "Authentication credentials were not provided."
}{
"error": "You do not have permission to perform this action."
}Bulk invite users to project
Invite up to 100 email addresses in one call, all with the same permissions and profile. Each email is processed independently (partial success): existing users are added immediately, new users get a pending invite and a signup email, and rejected addresses (invalid, already a member, already invited, domain not allowed) are skipped without failing the batch. Duplicates within the batch are deduplicated case-insensitively. Requires admin permissions on the project.
import requests
url = "https://eu.app.clarifeye.ai/api/v1/projects/{project_id}/invites/bulk-invite/"
payload = {
"emails": ["[email protected]", "[email protected]"],
"permissions": ["CAN_VIEW_DATA"],
"profile": "contributor"
}
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({
emails: ['[email protected]', '[email protected]'],
permissions: ['CAN_VIEW_DATA'],
profile: 'contributor'
})
};
fetch('https://eu.app.clarifeye.ai/api/v1/projects/{project_id}/invites/bulk-invite/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));curl --request POST \
--url https://eu.app.clarifeye.ai/api/v1/projects/{project_id}/invites/bulk-invite/ \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"emails": [
"[email protected]",
"[email protected]"
],
"permissions": [
"CAN_VIEW_DATA"
],
"profile": "contributor"
}
'{
"results": [
{
"email": "<string>",
"status": "invited_new",
"reason": "invalid_email"
}
],
"invited_new": 123,
"added_existing": 123,
"skipped": 123
}{
"error": "User not found"
}{
"error": "Authentication credentials were not provided."
}{
"error": "You do not have permission to perform this action."
}Authorizations
Use Authorization: Bearer <token>. The token is either a user token / OAuth access
token, or a service-account API key (cfk_...). A key is valid on every endpoint and
acts as its service account, an organization member with per-store permissions.
Refused keys answer 403 with Invalid API key., API key revoked.,
API key expired. or API key disabled..
Path Parameters
UUID of the project
Body
Email addresses to invite
100Permissions granted to every invited user
CAN_PERFORM_ADMIN_ACTIONS: Full administrative accessCAN_VIEW_DATA: Read-only access to project dataCAN_IMPERSONATE_OTHER_USERS: Impersonate other users in API calls (for a person, contact Clarifeye to enable it; org admins grant it to a service account)
CAN_PERFORM_ADMIN_ACTIONS, CAN_VIEW_DATA, CAN_IMPERSONATE_OTHER_USERS ["CAN_VIEW_DATA"]
Profile assigned to every invited user.
Defaults to contributor when omitted.
tech, contributor, user