Skip to main content
POST
/
v1
/
meetings
/
invites
curl --request POST \ --url https://api.anam.ai/v1/meetings/invites \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data ' { "meetingUrl": "https://meet.google.com/abc-defg-hij", "displayName": "Cara", "personaId": "00000000-0000-0000-0000-000000000000", "region": "eu" } '
{ "id": "00000000-0000-0000-0000-000000000000", "provider": "google_meet", "meetingUrl": "https://meet.google.com/abc-defg-hij", "displayName": "Cara (AI)", "status": "pending", "createdAt": "2026-04-20T10:00:00.000Z", "joinAt": null, "groupCall": true, "sessionId": null, "region": "eu", "joinState": null, "statusReason": null }

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Body

application/json

Meeting URL and persona selection for the invite.

Request body for inviting a persona to a meeting.

meetingUrl
string
required

Google Meet, Zoom, or Microsoft Teams URL to join. URLs without a scheme are normalized to https://.

Example:

"https://meet.google.com/abc-defg-hij"

personaId
string<uuid>
required

Saved persona ID to use for the meeting invite. Mutually exclusive with personaConfig.

Example:

"00000000-0000-0000-0000-000000000000"

displayName
string

Optional display name for the meeting participant. The API appends an AI disclosure suffix when one is not already present.

Maximum string length: 100
Example:

"Cara"

region
enum<string>

Region the persona joins the call from. Pick the region closest to the meeting's participants. When omitted, a region is selected automatically from the requester's location.

Available options:
eu,
us-east,
us-west
Example:

"eu"

regionPolicy
enum<string>
default:preferred

How strictly to honor the selected region. preferred may serve the invite from another region when the selected region has no capacity or is not currently offered; strict never leaves the selected region and returns a capacity error instead. strict requires an explicit region.

Available options:
preferred,
strict
Example:

"preferred"

joinAt
string<date-time>

When the persona should join the meeting (ISO 8601 with timezone). Must be in the future and no more than 7 days ahead. Scheduling at least 10 minutes ahead reserves the persona a guaranteed place on the call; shorter lead times join on time but use on-demand capacity and can be rejected at busy moments. When omitted, the persona joins immediately.

Example:

"2026-07-04T15:00:00Z"

groupCall
boolean
default:true

Group-call turn-taking. When true (the default) the persona joins silently and only responds when addressed by its display name. Set to false for 1:1 conversations over the meeting infrastructure — the persona then greets on join and responds to everything it hears, like a regular session.

Example:

true

personaConfig
object

Runtime persona configuration to use for this invite. Mutually exclusive with personaId; it must not include personaId.

sessionOptions
object

Optional session-level configuration for the meeting session.

clientLabel
string

Optional label attached to the created session for analytics and debugging.

Maximum string length: 128
Example:

"calendar-integration"

Response

Successfully created meeting invite

A meeting invite created for a persona.

id
string<uuid>
required

Unique identifier for the meeting invite.

provider
enum<string>
required

Meeting provider inferred from the meeting URL.

Available options:
google_meet,
zoom,
microsoft_teams
meetingUrl
string<uri>
required

Normalized meeting URL.

displayName
string
required

Display name used in the meeting.

status
enum<string>
required

Current invite status.

Available options:
pending,
active,
cancelled,
ended,
failed
createdAt
string<date-time>
required

Time the invite was created.

joinAt
string<date-time> | null
required

Scheduled time the persona joins the meeting, or null when the persona was asked to join immediately.

groupCall
boolean
required

Whether group-call turn-taking is enabled for this invite (respond only when addressed by name; silent join).

sessionId
string | null
required

Engine session ID once the meeting session has started, otherwise null.

region
enum<string> | null
required

Region the persona joined the call from. May differ from the requested region when the invite was served by another region for availability. Additional region values may be introduced over time; treat unrecognized values as informational rather than an error.

Available options:
eu,
us-east,
us-west,
null
joinState
enum<string> | null
required

Latest observed call-participation detail for the persona, updated asynchronously as the persona connects, waits for admission, joins, and leaves. Null until the first update arrives. Values may be added over time; treat unrecognized values as informational.

Available options:
joining,
waiting_room,
in_call,
media_denied,
media_granted,
media_active,
left,
done,
error,
null
statusReason
string | null
required

Reason attached to a terminal participation state — for example removed_by_host, meeting_ended, not_admitted, join_denied, meeting_link_invalid, meeting_not_started, idle_timeout, left_call, or provider_error. Null while the invite is in progress. Values may be added over time; treat unrecognized values as informational.

Last modified on July 10, 2026