> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://mediakind.ferndocs.com/platform/how-to/management/organizations-and-invites/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://mediakind.ferndocs.com/_mcp/server. # Organizations and invites Organization membership has two sides. An admin invites people to an organization and can cancel a pending invite. A user accepts or declines invitations, lists the organizations they can reach, and leaves an organization. The two use different endpoint groups: `/organization/invites` for the admin side, and `/user/organizations` for the user side. ## Invite a user (admin) Create a pending invitation by email. A `comment` explains why, and `teams` adds the user to those teams when they accept. * Terminal window ```bash curl -X POST "https://app.mk.io/api/v1/organization/invites" \ -H "Authorization: Bearer " \ -H "Content-Type: application/json" \ -d '{ "spec": { "email": "jane.smith@example.com", "comment": "Video encoding specialist for the Delphi project", "teams": ["encoding-team"] } }' ``` The invited user receives an email with an invitation link. Two things are worth knowing: an invitation expires after 14 days, and an accepted user automatically joins the Everyone team in addition to any teams you name. List pending invites, and cancel one that is no longer needed: ```bash curl -X GET "https://app.mk.io/api/v1/organization/invites" \ -H "Authorization: Bearer " curl -X DELETE "https://app.mk.io/api/v1/organization/invites/" \ -H "Authorization: Bearer " ``` ## List the organizations a user can reach From the user side, list every organization the current user belongs to, plus any they have a pending invite to: ```bash curl -X GET "https://app.mk.io/api/v1/user/organizations" \ -H "Authorization: Bearer " ``` If an organization record carries an `invite` object, the user has not joined it yet. The `invite` includes who sent it, a comment, and a `state`. ## Accept an invitation Accepting is a `PATCH` on the user’s organization record. The invite `state` is the only field you can change; set it to `accepted` to join. ```bash curl -X PATCH "https://app.mk.io/api/v1/user/organizations/" \ -H "Authorization: Bearer " \ -H "Content-Type: application/json" \ -d '{ "spec": { "invite": { "state": "accepted" } } }' ``` ## Decline an invite or leave an organization `DELETE` on the same resource handles both, depending on the current relationship: it declines a pending invite, or removes a current member from the organization. ```bash curl -X DELETE "https://app.mk.io/api/v1/user/organizations/" \ -H "Authorization: Bearer " ``` Leaving is only reversible by accepting a fresh invitation, so confirm before you call it. ## What goes wrong An invite that is never accepted in time. Invitations expire after 14 days. Re-send if the window passes. * Using the wrong endpoint group. Use `/organization/invites` when an admin manages invitations for others, and `/user/organizations` when the current user accepts, declines, or leaves. They are not interchangeable. ## What comes next * Users and teams: the team, role, and scope model new members are granted access through. * Provision org and users: the full setup sequence from organization to access.