Skip to content

Team Management

Manage team members, roles, and invitations for collaborative translation workflows.

Plan Requirement

Team management requires a Business plan or higher.


Roles

Role Permissions
owner Full access, billing, delete account
admin Manage members, API keys, settings
member Create jobs, manage glossaries
viewer Read-only access to jobs and results

Invitations

Send Invitation

POST /v1/team/invitations

Invite a new member to join your team.

Authentication: X-API-Key header (requires admin or owner role)

curl -X POST https://app.falara.io/v1/team/invitations \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "colleague@example.com",
    "role": "member"
  }'
import requests

resp = requests.post(
    "https://app.falara.io/v1/team/invitations",
    headers={
        "X-API-Key": "YOUR_API_KEY",
        "Content-Type": "application/json",
    },
    json={
        "email": "colleague@example.com",
        "role": "member",
    },
)
invitation = resp.json()
const resp = await fetch(
  "https://app.falara.io/v1/team/invitations",
  {
    method: "POST",
    headers: {
      "X-API-Key": "YOUR_API_KEY",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      email: "colleague@example.com",
      role: "member",
    }),
  }
);
const invitation = await resp.json();

Request Body

Field Type Required Description
email string yes Email address of the invitee
role string yes Role to assign: admin, member, or viewer

Response 201 Created

{
  "invitation_id": "inv_abc123",
  "email": "colleague@example.com",
  "role": "member",
  "status": "pending",
  "expires_at": "2026-04-23T10:00:00Z"
}

List Pending Invitations

GET /v1/team/invitations

List all pending invitations.

Authentication: X-API-Key header

curl -X GET https://app.falara.io/v1/team/invitations \
  -H "X-API-Key: YOUR_API_KEY"
resp = requests.get(
    "https://app.falara.io/v1/team/invitations",
    headers={"X-API-Key": "YOUR_API_KEY"},
)
invitations = resp.json()["invitations"]
const resp = await fetch(
  "https://app.falara.io/v1/team/invitations",
  { headers: { "X-API-Key": "YOUR_API_KEY" } }
);
const { invitations } = await resp.json();

Response 200 OK

{
  "invitations": [
    {
      "invitation_id": "inv_abc123",
      "email": "colleague@example.com",
      "role": "member",
      "status": "pending",
      "created_at": "2026-04-16T10:00:00Z",
      "expires_at": "2026-04-23T10:00:00Z"
    }
  ]
}

Revoke Invitation

DELETE /v1/team/invitations/{invitation_id}

Cancel a pending invitation.

Authentication: X-API-Key header

curl -X DELETE https://app.falara.io/v1/team/invitations/inv_abc123 \
  -H "X-API-Key: YOUR_API_KEY"
resp = requests.delete(
    "https://app.falara.io/v1/team/invitations/inv_abc123",
    headers={"X-API-Key": "YOUR_API_KEY"},
)
const resp = await fetch(
  "https://app.falara.io/v1/team/invitations/inv_abc123",
  { method: "DELETE", headers: { "X-API-Key": "YOUR_API_KEY" } }
);

Response 204 No Content


Resend Invitation

POST /v1/team/invitations/{invitation_id}/resend

Resend the invitation email.

Authentication: X-API-Key header

curl -X POST https://app.falara.io/v1/team/invitations/inv_abc123/resend \
  -H "X-API-Key: YOUR_API_KEY"
resp = requests.post(
    "https://app.falara.io/v1/team/invitations/inv_abc123/resend",
    headers={"X-API-Key": "YOUR_API_KEY"},
)
const resp = await fetch(
  "https://app.falara.io/v1/team/invitations/inv_abc123/resend",
  { method: "POST", headers: { "X-API-Key": "YOUR_API_KEY" } }
);

Response 200 OK

{
  "status": "sent"
}

Members

List Team Members

GET /v1/team/members

List all members of your team.

Authentication: X-API-Key header

curl -X GET https://app.falara.io/v1/team/members \
  -H "X-API-Key: YOUR_API_KEY"
resp = requests.get(
    "https://app.falara.io/v1/team/members",
    headers={"X-API-Key": "YOUR_API_KEY"},
)
members = resp.json()["members"]
const resp = await fetch(
  "https://app.falara.io/v1/team/members",
  { headers: { "X-API-Key": "YOUR_API_KEY" } }
);
const { members } = await resp.json();

Response 200 OK

{
  "members": [
    {
      "user_id": "usr_abc123",
      "email": "owner@example.com",
      "name": "John Doe",
      "role": "owner",
      "status": "active",
      "joined_at": "2026-01-15T10:00:00Z"
    },
    {
      "user_id": "usr_def456",
      "email": "colleague@example.com",
      "name": "Jane Smith",
      "role": "member",
      "status": "active",
      "joined_at": "2026-03-20T14:30:00Z"
    }
  ]
}

Change Member Role

PATCH /v1/team/members/{user_id}/role

Update a team member's role.

Authentication: X-API-Key header (requires owner role)

curl -X PATCH https://app.falara.io/v1/team/members/usr_def456/role \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"role": "admin"}'
resp = requests.patch(
    "https://app.falara.io/v1/team/members/usr_def456/role",
    headers={
        "X-API-Key": "YOUR_API_KEY",
        "Content-Type": "application/json",
    },
    json={"role": "admin"},
)
const resp = await fetch(
  "https://app.falara.io/v1/team/members/usr_def456/role",
  {
    method: "PATCH",
    headers: {
      "X-API-Key": "YOUR_API_KEY",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({ role: "admin" }),
  }
);

Response 200 OK

{
  "user_id": "usr_def456",
  "role": "admin"
}

Deactivate Member

PATCH /v1/team/members/{user_id}/deactivate

Deactivate a team member. They will lose access but can be reactivated later.

Authentication: X-API-Key header (requires admin or owner role)

curl -X PATCH https://app.falara.io/v1/team/members/usr_def456/deactivate \
  -H "X-API-Key: YOUR_API_KEY"

Response 200 OK

{
  "user_id": "usr_def456",
  "status": "inactive"
}

Reactivate Member

PATCH /v1/team/members/{user_id}/reactivate

Reactivate a previously deactivated member.

Authentication: X-API-Key header (requires admin or owner role)

curl -X PATCH https://app.falara.io/v1/team/members/usr_def456/reactivate \
  -H "X-API-Key: YOUR_API_KEY"

Response 200 OK

{
  "user_id": "usr_def456",
  "status": "active"
}

Errors

Status Reason
401 Unauthorized Missing or invalid API key
403 Forbidden Insufficient permissions or plan doesn't include teams
404 Not Found Member or invitation not found
409 Conflict User already invited or is a member
422 Unprocessable Entity Cannot change own role, or cannot demote owner