Appwrite Organization API
The Organization service allows you to manage organization-level projects. 23 operations across 9 paths in the Appwrite 2.0.0 OpenAPI.
The Organization service allows you to manage organization-level projects. 23 operations across 9 paths in the Appwrite 2.0.0 OpenAPI.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/appwrite-organization-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.0.0
info:
title: Appwrite Organization API
description: Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https://appwrite.io/docs](https://appwrite.io/docs)
version: 2.0.0
termsOfService: https://appwrite.io/policy/terms
contact:
name: Appwrite Team
url: https://appwrite.io/support
email: team@appwrite.io
license:
name: BSD-3-Clause
url: https://raw.githubusercontent.com/appwrite/appwrite/master/LICENSE
servers:
- url: https://cloud.appwrite.io/v1
description: Appwrite Cloud endpoint.
- url: https://{region}.cloud.appwrite.io/v1
description: Appwrite Cloud regional endpoint. Replace `{region}` with your project region.
variables:
region:
default: fra
description: Appwrite Cloud region.
tags:
- name: organization
description: The Organization service allows you to manage organization-level projects.
paths:
/organization:
get:
summary: Get organization
operationId: organizationGet
tags:
- organization
description: Get the current organization.
responses:
'200':
description: Organization
content:
application/json:
schema:
$ref: '#/components/schemas/organization'
deprecated: false
x-appwrite:
group: null
demo: organization/get.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: organization.read
platforms:
- console
- server
packaging: false
public: true
auth:
console:
Project: []
server:
Project: []
Key: []
security:
- Project: []
Key: []
Organization: []
put:
summary: Update organization
operationId: organizationUpdate
tags:
- organization
description: Update the current organization's name.
responses:
'200':
description: Organization
content:
application/json:
schema:
$ref: '#/components/schemas/organization'
deprecated: false
x-appwrite:
group: null
demo: organization/update.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: organization.write
platforms:
- console
- server
packaging: false
public: true
auth:
console:
Project: []
server:
Project: []
Key: []
security:
- Project: []
Key: []
Organization: []
requestBody:
content:
application/json:
schema:
type: object
properties:
name:
description: 'New organization name. Max length: 128 chars.'
type: string
example: <NAME>
required:
- name
delete:
summary: Delete organization
operationId: organizationDelete
tags:
- organization
description: Delete the current organization. All projects that belong to the organization are deleted as well.
responses:
'204':
description: No content
deprecated: false
x-appwrite:
group: null
demo: organization/delete.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: organization.write
platforms:
- console
- server
packaging: false
public: true
auth:
console:
Project: []
server:
Project: []
Key: []
security:
- Project: []
Key: []
Organization: []
/organization/installations:
get:
summary: List Installations
operationId: organizationListInstallations
tags:
- organization
description: List app installations on the organization. Any organization member can read installations.
responses:
'200':
description: App installations list
content:
application/json:
schema:
$ref: '#/components/schemas/appInstallationList'
deprecated: false
x-appwrite:
group: installations
demo: organization/list-installations.md
rate-limit: 120
rate-time: 60
rate-key: ip:{ip},userId:{userId}
scope: organization.installations.read
platforms:
- console
- client
- server
packaging: false
public: true
auth:
console:
Project: []
client:
Project: []
server:
Project: []
Session: []
security:
- Project: []
Session: []
Key: []
JWT: []
Organization: []
parameters:
- name: queries
description: Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries). Maximum of 100 queries are allowed, each 4096 characters long.
required: false
schema:
type: array
items:
type: string
default: []
in: query
- name: total
description: When set to false, the total count returned will be 0 and will not be calculated.
required: false
schema:
type: boolean
example: false
default: true
in: query
post:
summary: Create Installation
operationId: organizationCreateInstallation
tags:
- organization
description: Install an app on the organization. Only organization members with the owner role can install apps. The installation is granted the scopes the app currently requests.
responses:
'201':
description: AppInstallation
content:
application/json:
schema:
$ref: '#/components/schemas/appInstallation'
deprecated: false
x-appwrite:
group: installations
demo: organization/create-installation.md
rate-limit: 60
rate-time: 60
rate-key: ip:{ip},userId:{userId}
scope: organization.installations.write
platforms:
- console
- client
- server
packaging: false
public: true
auth:
console:
Project: []
client:
Project: []
server:
Project: []
Session: []
security:
- Project: []
Session: []
Key: []
JWT: []
Organization: []
requestBody:
content:
application/json:
schema:
type: object
properties:
appId:
description: Application unique ID.
type: string
example: <APP_ID>
authorizationDetails:
description: Authorization details granted to the installation as a JSON array of objects, each with a `type` and app-defined fields. The Appwrite Console stores authorized project IDs here.
type: string
default: ''
example: <AUTHORIZATION_DETAILS>
required:
- appId
/organization/installations/{installationId}:
get:
summary: Get Installation
operationId: organizationGetInstallation
tags:
- organization
description: Get an app installation on the organization by its unique ID. Any organization member can read installations.
responses:
'200':
description: AppInstallation
content:
application/json:
schema:
$ref: '#/components/schemas/appInstallation'
deprecated: false
x-appwrite:
group: installations
demo: organization/get-installation.md
rate-limit: 120
rate-time: 60
rate-key: ip:{ip},userId:{userId}
scope: organization.installations.read
platforms:
- console
- client
- server
packaging: false
public: true
auth:
console:
Project: []
client:
Project: []
server:
Project: []
Session: []
security:
- Project: []
Session: []
Key: []
JWT: []
Organization: []
parameters:
- name: installationId
description: Installation unique ID.
required: true
schema:
type: string
example: <INSTALLATION_ID>
in: path
put:
summary: Update Installation
operationId: organizationUpdateInstallation
tags:
- organization
description: Update an app installation on the organization. Only organization members with the owner role can update installations. The installation's granted scopes are refreshed to the scopes the app currently requests; previously issued installation access tokens are revoked.
responses:
'200':
description: AppInstallation
content:
application/json:
schema:
$ref: '#/components/schemas/appInstallation'
deprecated: false
x-appwrite:
group: installations
demo: organization/update-installation.md
rate-limit: 60
rate-time: 60
rate-key: ip:{ip},userId:{userId}
scope: organization.installations.write
platforms:
- console
- client
- server
packaging: false
public: true
auth:
console:
Project: []
client:
Project: []
server:
Project: []
Session: []
security:
- Project: []
Session: []
Key: []
JWT: []
Organization: []
parameters:
- name: installationId
description: Installation unique ID.
required: true
schema:
type: string
example: <INSTALLATION_ID>
in: path
requestBody:
content:
application/json:
schema:
type: object
properties:
authorizationDetails:
description: Authorization details granted to the installation as a JSON array of objects, each with a `type` and app-defined fields. Omit to keep the current value.
type: string
example: <AUTHORIZATION_DETAILS>
nullable: true
delete:
summary: Delete Installation
operationId: organizationDeleteInstallation
tags:
- organization
description: Uninstall an app from the organization by its installation ID. Only organization members with the owner role can remove installations. Previously issued installation access tokens are revoked.
responses:
'204':
description: No content
deprecated: false
x-appwrite:
group: installations
demo: organization/delete-installation.md
rate-limit: 60
rate-time: 60
rate-key: ip:{ip},userId:{userId}
scope: organization.installations.write
platforms:
- console
- client
- server
packaging: false
public: true
auth:
console:
Project: []
client:
Project: []
server:
Project: []
Session: []
security:
- Project: []
Session: []
Key: []
JWT: []
Organization: []
parameters:
- name: installationId
description: Installation unique ID.
required: true
schema:
type: string
example: <INSTALLATION_ID>
in: path
/organization/keys:
get:
summary: List organization keys
operationId: organizationListKeys
tags:
- organization
description: Get a list of all API keys from the current organization.
responses:
'200':
description: API Keys List
content:
application/json:
schema:
$ref: '#/components/schemas/keyList'
deprecated: false
x-appwrite:
group: keys
demo: organization/list-keys.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: organization.keys.read
platforms:
- console
- server
packaging: false
public: true
auth:
console:
Project: []
server:
Project: []
Key: []
security:
- Project: []
Key: []
Organization: []
parameters:
- name: queries
description: 'Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: expire, accessedAt, name, scopes'
required: false
schema:
type: array
items:
type: string
default: []
in: query
- name: total
description: When set to false, the total count returned will be 0 and will not be calculated.
required: false
schema:
type: boolean
example: false
default: true
in: query
post:
summary: Create organization key
operationId: organizationCreateKey
tags:
- organization
description: Create a new organization API key.
responses:
'201':
description: Key
content:
application/json:
schema:
$ref: '#/components/schemas/key'
deprecated: false
x-appwrite:
group: keys
demo: organization/create-key.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: organization.keys.write
platforms:
- console
- server
packaging: false
public: true
auth:
console:
Project: []
server:
Project: []
Key: []
security:
- Project: []
Key: []
Organization: []
requestBody:
content:
application/json:
schema:
type: object
properties:
keyId:
description: Key ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.
type: string
example: <KEY_ID>
x-appwrite:
idGenerator: ID.unique
name:
description: 'Key name. Max length: 128 chars.'
type: string
example: <NAME>
scopes:
description: Key scopes list. Maximum of 200 scopes are allowed.
type: array
items:
title: OrganizationKeyScopes
type: string
oneOf:
- type: string
enum:
- projects.read
title: projects.read
- type: string
enum:
- projects.write
title: projects.write
- type: string
enum:
- devKeys.read
title: devKeys.read
- type: string
enum:
- devKeys.write
title: devKeys.write
- type: string
enum:
- organization.keys.read
title: organization.keys.read
- type: string
enum:
- organization.keys.write
title: organization.keys.write
- type: string
enum:
- organization.installations.read
title: organization.installations.read
- type: string
enum:
- organization.installations.write
title: organization.installations.write
- type: string
enum:
- organization.memberships.read
title: organization.memberships.read
- type: string
enum:
- organization.memberships.write
title: organization.memberships.write
- type: string
enum:
- organization.read
title: organization.read
- type: string
enum:
- organization.write
title: organization.write
- type: string
enum:
- domains.read
title: domains.read
- type: string
enum:
- domains.write
title: domains.write
- type: string
enum:
- keys.read
title: keys.read
- type: string
enum:
- keys.write
title: keys.write
expire:
description: Expiration time in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. Use null for unlimited expiration.
type: string
example: '2020-10-15T06:38:00.000+00:00'
format: datetime
nullable: true
required:
- keyId
- name
- scopes
/organization/keys/{keyId}:
get:
summary: Get organization key
operationId: organizationGetKey
tags:
- organization
description: Get a key by its unique ID. This endpoint returns details about a specific API key in your organization including its scopes.
responses:
'200':
description: Key
content:
application/json:
schema:
$ref: '#/components/schemas/key'
deprecated: false
x-appwrite:
group: keys
demo: organization/get-key.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: organization.keys.read
platforms:
- console
- server
packaging: false
public: true
auth:
console:
Project: []
server:
Project: []
Key: []
security:
- Project: []
Key: []
Organization: []
parameters:
- name: keyId
description: Key unique ID.
required: true
schema:
type: string
example: <KEY_ID>
in: path
put:
summary: Update organization key
operationId: organizationUpdateKey
tags:
- organization
description: Update a key by its unique ID. Use this endpoint to update the name, scopes, or expiration time of an API key.
responses:
'200':
description: Key
content:
application/json:
schema:
$ref: '#/components/schemas/key'
deprecated: false
x-appwrite:
group: keys
demo: organization/update-key.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: organization.keys.write
platforms:
- console
- server
packaging: false
public: true
auth:
console:
Project: []
server:
Project: []
Key: []
security:
- Project: []
Key: []
Organization: []
parameters:
- name: keyId
description: Key unique ID.
required: true
schema:
type: string
example: <KEY_ID>
in: path
requestBody:
content:
application/json:
schema:
type: object
properties:
name:
description: 'Key name. Max length: 128 chars.'
type: string
example: <NAME>
scopes:
description: Key scopes list. Maximum of 200 scopes are allowed.
type: array
items:
title: OrganizationKeyScopes
type: string
oneOf:
- type: string
enum:
- projects.read
title: projects.read
- type: string
enum:
- projects.write
title: projects.write
- type: string
enum:
- devKeys.read
title: devKeys.read
- type: string
enum:
- devKeys.write
title: devKeys.write
- type: string
enum:
- organization.keys.read
title: organization.keys.read
- type: string
enum:
- organization.keys.write
title: organization.keys.write
- type: string
enum:
- organization.installations.read
title: organization.installations.read
- type: string
enum:
- organization.installations.write
title: organization.installations.write
- type: string
enum:
- organization.memberships.read
title: organization.memberships.read
- type: string
enum:
- organization.memberships.write
title: organization.memberships.write
- type: string
enum:
- organization.read
title: organization.read
- type: string
enum:
- organization.write
title: organization.write
- type: string
enum:
- domains.read
title: domains.read
- type: string
enum:
- domains.write
title: domains.write
- type: string
enum:
- keys.read
title: keys.read
- type: string
enum:
- keys.write
title: keys.write
expire:
description: Expiration time in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. Use null for unlimited expiration.
type: string
example: '2020-10-15T06:38:00.000+00:00'
format: datetime
nullable: true
required:
- name
- scopes
delete:
summary: Delete organization key
operationId: organizationDeleteKey
tags:
- organization
description: Delete a key by its unique ID. Once deleted, the key can no longer be used to authenticate API calls.
responses:
'204':
description: No content
deprecated: false
x-appwrite:
group: keys
demo: organization/delete-key.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: organization.keys.write
platforms:
- console
- server
packaging: false
public: true
auth:
console:
Project: []
server:
Project: []
Key: []
security:
- Project: []
Key: []
Organization: []
parameters:
- name: keyId
description: Key unique ID.
required: true
schema:
type: string
example: <KEY_ID>
in: path
/organization/memberships:
get:
summary: List organization memberships
operationId: organizationListMemberships
tags:
- organization
description: Get a list of all memberships from the current organization.
responses:
'200':
description: Memberships List
content:
application/json:
schema:
$ref: '#/components/schemas/membershipList'
deprecated: false
x-appwrite:
group: memberships
demo: organization/list-memberships.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: organization.memberships.read
platforms:
- console
- server
packaging: false
public: true
auth:
console:
Project: []
server:
Project: []
Key: []
security:
- Project: []
Key: []
Organization: []
parameters:
- name: queries
description: 'Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm, roles'
required: false
schema:
type: array
items:
type: string
default: []
in: query
- name: search
description: 'Search term to filter your list results. Max length: 256 chars.'
required: false
schema:
type: string
example: <SEARCH>
default: ''
in: query
- name: total
description: When set to false, the total count returned will be 0 and will not be calculated.
required: false
schema:
type: boolean
example: false
default: true
in: query
post:
summary: Create organization membership
operationId: organizationCreateMembership
tags:
- organization
description: Invite a new member to join the current organization. An email with a link to join the organization will be sent to the new member's email address. If member doesn't exist in the project it will be automatically created.
responses:
'201':
description: Membership
content:
application/json:
schema:
$ref: '#/components/schemas/membership'
deprecated: false
x-appwrite:
group: memberships
demo: organization/create-membership.md
rate-limit: 10
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: organization.memberships.write
platforms:
- console
- server
packaging: false
public: true
auth:
console:
Project: []
server:
Project: []
Key: []
security:
- Project: []
Key: []
Organization: []
requestBody:
content:
application/json:
schema:
type: object
properties:
email:
description: Email of the new organization member.
type: string
default: ''
example: email@example.com
format: email
userId:
description: ID of the user to be added to the organization.
type: string
default: ''
example: <USER_ID>
phone:
description: Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.
type: string
default: ''
example: '+12065550100'
format: phone
roles:
description: Array of strings. Use this param to set the user roles in the organization. A role can be any string. Learn more about [roles and permissions](https://appwrite.io/docs/permissions). Maximum of 100 roles are allowed, each 81 characters long.
type: array
items:
type: string
url:
description: URL to redirect the user back to your app from the invitation email. This parameter is not required when an API key is supplied.
type: string
default: ''
example: https://example.com
format: url
name:
description: 'Name of the new organization member. Max length: 128 chars.'
type: string
default: ''
example: <NAME>
required:
- roles
/organization/memberships/{membershipId}:
get:
summary: Get organization membership
operationId: organizationGetMembership
tags:
- organization
description: Get a membership from the current organization by its unique ID.
responses:
'200':
description: Membership
content:
application/json:
schema:
$ref: '#/components/schemas/membership'
deprecated: false
x-appwrite:
group: memberships
demo: organization/get-membership.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: organization.memberships.read
platforms:
- console
- server
packaging: false
public: true
auth:
console:
Project: []
server:
Project: []
Key: []
security:
- Project: []
Key: []
Organization: []
parameters:
- name: membershipId
description: Membership ID.
required: true
schema:
type: string
example: <MEMBERSHIP_ID>
in: path
patch:
summary: Update organization membership
operationId: organizationUpdateMembership
tags:
- organization
description: Modify the roles of a member in the current organization.
responses:
'200':
description: Membership
content:
application/json:
schema:
$ref: '#/components/schemas/membership'
deprecated: false
x-appwrite:
group: memberships
demo: organization/update-membership.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: organization.memberships.write
platforms:
- console
- server
packaging: false
public: true
auth:
console:
Project: []
server:
Project: []
Key: []
security:
- Project: []
Key: []
Organization: []
parameters:
- name: membershipId
description: Membership ID.
required: true
schema:
type: string
example: <MEMBERSHIP_ID>
in: path
requestBody:
content:
application/json:
schema:
type: object
# --- truncated at 32 KB (106 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/appwrite/refs/heads/main/openapi/appwrite-organization-api-openapi.yml