Skip to content
OpenRelay is in early access, and the /v1 API is stable. New capabilities ship in the changelog.
Organizations

Invite a member by email (owner/admin)

Records a pending invite and emails the address. The response status is always "invited"; the user becomes a member only after they accept (POST /v1/me/invites/{orgId}/accept). Re-inviting the same email refreshes the invite's role and expiry. 409 if the email already belongs to a member.

POST
/v1/orgs/{orgId}/members/add
AuthorizationBearer <token>

OpenRelay API key. Send it as Authorization: Bearer vl_….

In: header

Path Parameters

orgId*string

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/v1/orgs/string/members/add" \  -H "Content-Type: application/json" \  -d '{    "email": "string",    "role": "admin"  }'
{
  "userId": "string",
  "role": "string",
  "email": "string",
  "fullName": "string",
  "avatarUrl": "string",
  "invitedAt": "string",
  "joinedAt": "string",
  "status": "active"
}
{
  "error": "string",
  "code": "string"
}
{
  "error": "string",
  "code": "string"
}
{
  "error": "string",
  "code": "string"
}
{
  "error": "string",
  "code": "string"
}
{
  "error": "string",
  "code": "string"
}

Command line

The orl CLI wraps this endpoint:

orl organizations member add --email <email> --role <role>