cURL
curl -X GET "https://app.emailx.ai/api/v1/workspaces/123/invitations" \
-H "Authorization: Bearer $EMAILX_API_KEY"import os, requests
response = requests.get(
"https://app.emailx.ai/api/v1/workspaces/123/invitations",
headers={"Authorization": "Bearer " + os.environ["EMAILX_API_KEY"]},
timeout=30,
)
response.raise_for_status()
print(response.json())const response = await fetch("https://app.emailx.ai/api/v1/workspaces/123/invitations", {
method: "GET",
headers: { Authorization: `Bearer ${process.env.EMAILX_API_KEY}` },
signal: AbortSignal.timeout(30000),
});
if (!response.ok) throw new Error(`Emailx: ${response.status}`);
console.log(await response.json());{
"data": [
{
"id": 42,
"email": "teammate@example.com",
"role": "member",
"expires_at": "2026-11-03T09:00:00Z",
"expired": false,
"created_at": "2026-11-01T09:00:00Z"
}
],
"has_more": false,
"next_cursor": null
}{
"error": {
"code": "<string>",
"message": "<string>",
"request_id": "<string>",
"details": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"request_id": "<string>",
"details": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"request_id": "<string>",
"details": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"request_id": "<string>",
"details": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"request_id": "<string>",
"details": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"request_id": "<string>",
"details": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"request_id": "<string>",
"details": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"request_id": "<string>",
"details": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"request_id": "<string>",
"details": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"request_id": "<string>",
"details": {}
}
}Team
List pending invitations
Lists invitations not yet accepted, with their expiry.
Permission: team:read
GET
/
workspaces
/
{workspace_id}
/
invitations
cURL
curl -X GET "https://app.emailx.ai/api/v1/workspaces/123/invitations" \
-H "Authorization: Bearer $EMAILX_API_KEY"import os, requests
response = requests.get(
"https://app.emailx.ai/api/v1/workspaces/123/invitations",
headers={"Authorization": "Bearer " + os.environ["EMAILX_API_KEY"]},
timeout=30,
)
response.raise_for_status()
print(response.json())const response = await fetch("https://app.emailx.ai/api/v1/workspaces/123/invitations", {
method: "GET",
headers: { Authorization: `Bearer ${process.env.EMAILX_API_KEY}` },
signal: AbortSignal.timeout(30000),
});
if (!response.ok) throw new Error(`Emailx: ${response.status}`);
console.log(await response.json());{
"data": [
{
"id": 42,
"email": "teammate@example.com",
"role": "member",
"expires_at": "2026-11-03T09:00:00Z",
"expired": false,
"created_at": "2026-11-01T09:00:00Z"
}
],
"has_more": false,
"next_cursor": null
}{
"error": {
"code": "<string>",
"message": "<string>",
"request_id": "<string>",
"details": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"request_id": "<string>",
"details": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"request_id": "<string>",
"details": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"request_id": "<string>",
"details": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"request_id": "<string>",
"details": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"request_id": "<string>",
"details": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"request_id": "<string>",
"details": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"request_id": "<string>",
"details": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"request_id": "<string>",
"details": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"request_id": "<string>",
"details": {}
}
}Authorizations
ex_test_ or ex_live_ key issued by an Emailx operator. Never use provider keys or session cookies.
Path Parameters
Emailx workspace (Clients) ID, not the agency workspace link ID.
Required range:
x >= 1Query Parameters
Required range:
1 <= x <= 100Opaque next_cursor from the previous response. Keep filters unchanged.

