Skip to content

Invite people by email (bulk)

POST
/v1/workspaces/{workspaceId}/members/invite
curl --request POST \
--url https://shareout.site/v1/workspaces/example/members/invite \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "emails": "Ana <ana@example.com>, luis@example.com", "role": "member", "message": "example" }'

Owner or admin only. emails is an array or one string of pasted text — commas, semicolons, spaces, newlines, Name <email> and spreadsheet columns all work; tokens without @ are ignored, duplicates collapse. Up to 100 valid addresses per call (400 TOO_MANY_EMAILS beyond that — batch). New or not-yet-active people get a 7-day join link by email; people with an account are added and notified. Existing members keep their role (change roles with POST /members). Re-inviting a pending person retires their older links.

workspaceId
required
string

Workspace ID or slug.

Media typeapplication/json
object
emails
required
One of:
Array<string>
role
string
default: member
Allowed values: member admin
message

Optional personal note passed to the invite email.

string
<= 500 characters

Per-email results

Media typeapplication/json
object
results
Array<object>
object
email
string
code
string
Allowed values: invited added already_member invalid_email domain_not_allowed
status

Legacy status; prefer code.

string
Allowed values: invited added updated skipped
email_sent

For invited — whether the invite email went out.

boolean
invite_url

Join link, present only when the email did not go out. Share it by hand.

string
summary

Count per code.

object
key
additional properties
integer
Example
{
"results": [
{
"code": "invited",
"status": "invited"
}
]
}

Invalid request

Media typeapplication/json
object
success
required
boolean
error
required

Human-readable message.

string
code
required

Machine-readable error code.

string
request_id

Correlation id (also the X-Request-Id header). Quote it in support tickets.

string
reason

Finer cause under code. For UNAUTHORIZED: missing, invalid, revoked or expired.

string
hint

What to do next, in plain words.

string
suggestion
string
param

The request field at fault.

string
docs

Doc page for this error.

string
redirect_url
string
support

Present on 5xx — how to reach a human.

object
how
string
include
Array<string>
Example
{
"success": false,
"support": {
"how": "POST /v1/support/tickets",
"include": [
"request_id"
]
}
}

Access denied

Media typeapplication/json
object
success
required
boolean
error
required

Human-readable message.

string
code
required

Machine-readable error code.

string
request_id

Correlation id (also the X-Request-Id header). Quote it in support tickets.

string
reason

Finer cause under code. For UNAUTHORIZED: missing, invalid, revoked or expired.

string
hint

What to do next, in plain words.

string
suggestion
string
param

The request field at fault.

string
docs

Doc page for this error.

string
redirect_url
string
support

Present on 5xx — how to reach a human.

object
how
string
include
Array<string>
Example
{
"success": false,
"support": {
"how": "POST /v1/support/tickets",
"include": [
"request_id"
]
}
}