curl --request POST \
--url https://api.pomerado.ai/v1/team/invitations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"email": "<string>",
"invitations": [
{
"email": "<string>"
}
],
"csv": "<string>"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({email: '<string>', invitations: [{email: '<string>'}], csv: '<string>'})
};
fetch('https://api.pomerado.ai/v1/team/invitations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.pomerado.ai/v1/team/invitations"
payload = {
"email": "<string>",
"invitations": [{ "email": "<string>" }],
"csv": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"results": [
{
"index": 123,
"email": "<string>",
"invitation": {
"id": "<string>",
"email": "<string>",
"role": "owner",
"status": "pending",
"invited_by": "<string>",
"created_at": "<string>",
"expires_at": "<string>"
},
"error": {
"code": "<string>",
"message": "<string>",
"retryable": true,
"docs_url": "<string>"
}
}
]
}{
"id": "<string>",
"email": "<string>",
"role": "owner",
"status": "pending",
"invited_by": "<string>",
"created_at": "<string>",
"expires_at": "<string>"
}{
"error": {
"code": "<string>",
"message": "<string>",
"retryable": true,
"docs_url": "<string>",
"details": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"retryable": true,
"docs_url": "<string>",
"details": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"retryable": true,
"docs_url": "<string>",
"details": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"retryable": true,
"docs_url": "<string>",
"details": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"retryable": true,
"docs_url": "<string>",
"details": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"retryable": true,
"docs_url": "<string>",
"details": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"retryable": true,
"docs_url": "<string>",
"details": {}
}
}Invite team members
Invites people to your team by email; each invitation lasts 7 days.
curl --request POST \
--url https://api.pomerado.ai/v1/team/invitations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"email": "<string>",
"invitations": [
{
"email": "<string>"
}
],
"csv": "<string>"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({email: '<string>', invitations: [{email: '<string>'}], csv: '<string>'})
};
fetch('https://api.pomerado.ai/v1/team/invitations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.pomerado.ai/v1/team/invitations"
payload = {
"email": "<string>",
"invitations": [{ "email": "<string>" }],
"csv": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"results": [
{
"index": 123,
"email": "<string>",
"invitation": {
"id": "<string>",
"email": "<string>",
"role": "owner",
"status": "pending",
"invited_by": "<string>",
"created_at": "<string>",
"expires_at": "<string>"
},
"error": {
"code": "<string>",
"message": "<string>",
"retryable": true,
"docs_url": "<string>"
}
}
]
}{
"id": "<string>",
"email": "<string>",
"role": "owner",
"status": "pending",
"invited_by": "<string>",
"created_at": "<string>",
"expires_at": "<string>"
}{
"error": {
"code": "<string>",
"message": "<string>",
"retryable": true,
"docs_url": "<string>",
"details": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"retryable": true,
"docs_url": "<string>",
"details": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"retryable": true,
"docs_url": "<string>",
"details": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"retryable": true,
"docs_url": "<string>",
"details": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"retryable": true,
"docs_url": "<string>",
"details": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"retryable": true,
"docs_url": "<string>",
"details": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"retryable": true,
"docs_url": "<string>",
"details": {}
}
}Details
Details
- Send one address as email, or up to 500 as invitations or as a CSV file’s text in csv.
- An address already on the team, in another team or repeated in the request is refused on its own row. One already invited returns its pending invitation.
- Only an owner can invite an owner.
- With an Idempotency-Key, repeating the same request returns the first answer.
- Callers: an API key, an MCP OAuth token or a Dashboard session.
-
Permission:
team:manage; an API key also needsteam:manage. - Effect: Creates or changes something.
-
Errors:
invalid_email,already_member,already_invited,in_another_team,role_not_allowed,team_unavailable,idempotency_conflict,acceptance_unknown, and the errors any request can get.
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Headers
Repeat a request safely: the same key and body answer the first request's job again with Idempotent-Replayed: true; the same key with a different body answers idempotency_conflict. 1 to 200 letters, digits, _ or -, such as a UUID
^[A-Za-z0-9_-]{1,200}$Body
One address to invite; answers its Invitation
320With email: its role (default member)
owner, admin, member Up to 500 addresses, each with an optional role; answers each row's result
Show child attributes
Show child attributes
A CSV file's text: an email column and an optional role column, with or without a header row, up to 500 rows; answers each row's result
Response
With invitations or csv: each row's invitation or error, by index
Show child attributes
Show child attributes