---
title: "Invite someone to the organization this request is bound to, by email or username."
method: POST
path: "/v1/access/invites"
tags: ["account"]
---

# Invite someone to the organization this request is bound to, by email or username.

`POST /v1/access/invites`

## Request

- Base URL: `https://api.kody.codes`
- URL: `https://api.kody.codes/v1/access/invites`
- Auth: HTTP bearer

Invite someone to the organization this request is bound to, by email or username. kind membership needs member:write and adds them with a role (and optional teams). kind grant needs manage access on the resource and gives them a preset or permission list. The token is returned once, with a prompt that tells them to call inviteAccept. Invites expire in 7 days.

Org permission: none (touches no org data).

## Request body

- object
  - `kind` 'membership' | 'grant', required
  - `email` string
  - `username` string
  - `role` 'owner' | 'member' | 'billing'
  - `team_ids` string[]
  - `resource_type` 'package' | 'app' | 'job' | 'credential' | 'memory' | 'email' | 'org' | 'secret' | 'integration'
  - `resource_id` string
  - `preset` 'use' | 'contribute' | 'manage'
  - `permissions` string[]

## Response `200`

Success.

- object
  - `invite` object, required
    - `id` string, required
    - `org_id` string, required
    - `org_slug` string, required
    - `kind` 'membership' | 'grant', required
    - `role` 'owner' | 'member' | 'billing', nullable, required
    - `team_ids` string[], required
    - `resource_type` 'package' | 'app' | 'job' | 'credential' | 'memory' | 'email' | 'org', nullable, required
    - `resource_id` string, nullable, required
    - `preset` 'use' | 'contribute' | 'manage', nullable, required
    - `permissions` string[], nullable, required
    - `invitee_email` string, nullable, required
    - `invitee_username` string, nullable, required
    - `status` 'pending' | 'accepted' | 'revoked' | 'expired', required
    - `expires_at` string, required
  - `token` string, required
  - `prompt` string, required

## Other responses

- `400`: Error envelope `{ "error": { "code", "message", "details"? } }`.
- `401`: Error envelope `{ "error": { "code", "message", "details"? } }`.
- `403`: Error envelope `{ "error": { "code", "message", "details"? } }`.
- `404`: Error envelope `{ "error": { "code", "message", "details"? } }`.
- `409`: Error envelope `{ "error": { "code", "message", "details"? } }`.
- `413`: Error envelope `{ "error": { "code", "message", "details"? } }`.
- `429`: Too many requests (edge IP/token limit) or an entitlement / plan-cap limit. Wait at least `Retry-After` seconds before retrying.
- `500`: Error envelope `{ "error": { "code", "message", "details"? } }`.
- `503`: Error envelope `{ "error": { "code", "message", "details"? } }`.
- `default`: Error envelope `{ "error": { "code", "message", "details"? } }`.

---

[API](https://skmtc.dev/kody/apis/kody-api.md) · [All operations](https://skmtc.dev/kody/apis/kody-api/llms.txt) · [OpenAPI document](https://skmtc.dev/kody/apis/kody-api/revisions/705f4f022728?raw)
