Create invitation
Creates an invitation in the API key’s company as the key owner. Requires API access Manage and Team & access Manage. The caller cannot grant access they do not have. Requires JSON with nonblank first_name, last_name, email, and access_template. Unknown fields are rejected. Query parameters do not supply invitation fields.
Choose admin or read_only without permissions, or custom with every permission area and a supported level. Extra permission areas are rejected. API access supports only none or manage. Custom permissions matching a preset are labeled as that preset in responses. A permissions field is forbidden with a named preset even when its value is null.
Read-only and non-Admin permission sets require an active or trialing Growth subscription. Other plans may invite Admin only, subject to the caller’s grant permissions. When RBAC is disabled, only access_template admin is supported; other selections are rejected, never silently promoted. Existing API subscription and usage checks also apply. The plan rule compares actual permissions: custom matching Admin satisfies the plan rule when RBAC is enabled. Growth does not bypass the caller’s grant limits. Once feature availability is validated, creation preserves the submitted permissions; another feature-flag evaluation cannot silently replace them with Admin.
Returns 201 with changed=false for a new record, or 200 for an exact replay of a pending invitation with the same inviter, first and last names, case-insensitive email, and permissions. Same email alone is not a match. A replay may renew an expired invitation or retry pending delivery; changed is true when that work is requested, and false for an unchanged replay. Plan and permission checks still apply to replays. Success does not guarantee email arrival. No separate idempotency key is needed. Use the same body to retry an uncertain result.
The invitation is saved state with the same fields as GET /team, including the opaque version revision. Treat version as opaque; resend uses the current revision internally and does not accept it as input. It is not an acceptance credential. Public IDs may be null. A null ID means the public identifier is unavailable, not that the record is missing; a later backfill may populate it. Treat unknown future enum values as unsupported, never as additional access. Allow for new response fields when updating clients.
Authorizations
API key prefixed with finta_
Body
- Option 1
- Option 2
The template matching stored permissions. Admin means all areas have manage access. Read_only means view access for every area except api_access, which is none. Custom means neither template matches exactly; inspect permissions for the actual access.
admin, read_only 1\S1\SA valid email address. Email validity and existing teammate checks are enforced by the invitation service.
1Stored company permissions shown on the Settings team page. All areas are always included. None means no access to the area; view means read access; manage means management access. API access supports none or manage; other areas also support view.
Response
An existing matching invitation was returned, possibly renewed or retried.