Xata Organizations API
Operations for creating, retrieving, updating, and deleting organizations
Operations for creating, retrieving, updating, and deleting organizations
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/xata-organizations-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
openapi: 3.0.0
info:
title: Xata API Keys Organizations API
description: Xata API
version: '1.0'
contact:
name: help@xata.io
servers:
- url: https://api.xata.tech
description: Xata API
tags:
- name: Organizations
description: Operations for creating, retrieving, updating, and deleting organizations
x-displayName: Organizations
paths:
/organizations:
summary: Organizations Management
description: This endpoint enables creating and listing organizations within Xata. Organizations are the top-level entity that contains projects, branches, and team members.
get:
operationId: getOrganizationsList
summary: Get list of organizations
description: Retrieve the list of all organizations the authenticated user belongs to, including their IDs and names. This endpoint allows users to view all organizations they have access to.
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
organizations:
description: List of organizations the user has access to
type: array
items:
type: object
properties:
id:
description: Unique identifier for the organization
$ref: '#/components/schemas/OrganizationID'
name:
description: Human-readable name of the organization
type: string
status:
description: Current status of the organization
$ref: '#/components/schemas/OrganizationStatus'
required:
- id
- name
- status
required:
- organizations
'400':
$ref: '#/components/responses/BadRequestError'
'401':
$ref: '#/components/responses/AuthError'
'404':
$ref: '#/components/responses/SimpleError'
5XX:
description: Unexpected Error
security:
- xata:
- org:read
tags:
- Organizations
post:
operationId: createOrganization
summary: Create a new organization
description: Creates a new organization with the authenticated user as its single owner.
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateOrganizationRequest'
responses:
'201':
description: Organization successfully created
content:
application/json:
schema:
$ref: '#/components/schemas/Organization'
'400':
$ref: '#/components/responses/BadRequestError'
'401':
$ref: '#/components/responses/AuthError'
'404':
$ref: '#/components/responses/SimpleError'
5XX:
description: Unexpected Error
security:
- xata:
- org:write
tags:
- Organizations
/organizations/{organizationID}:
summary: Organization Operations
description: This endpoint provides operations for a specific organization, allowing retrieval, updating, and deletion of an organization by its unique identifier.
parameters:
- $ref: '#/components/parameters/OrganizationIDParam'
get:
operationId: getOrganization
summary: Get organization details
description: Retrieve detailed information about a specific organization by its ID.
responses:
'200':
description: Organization details retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Organization'
'400':
$ref: '#/components/responses/BadRequestError'
'401':
$ref: '#/components/responses/AuthError'
'403':
$ref: '#/components/responses/AuthError'
'404':
$ref: '#/components/responses/SimpleError'
5XX:
description: Unexpected Error
security:
- xata:
- org:read
tags:
- Organizations
put:
operationId: updateOrganization
summary: Update organization details
description: Update information for an existing organization, such as its name.
requestBody:
content:
application/json:
schema:
properties:
id:
description: Unique identifier for the organization to update
$ref: '#/components/schemas/OrganizationID'
name:
description: New name for the organization
type: string
responses:
'200':
description: Organization successfully updated
content:
application/json:
schema:
$ref: '#/components/schemas/Organization'
'400':
$ref: '#/components/responses/BadRequestError'
'401':
$ref: '#/components/responses/AuthError'
'403':
$ref: '#/components/responses/AuthError'
'404':
$ref: '#/components/responses/SimpleError'
5XX:
description: Unexpected Error
security:
- xata:
- org:write
tags:
- Organizations
delete:
operationId: deleteOrganization
summary: Delete an organization
description: '[Not implemented yet] Permanently delete an organization. This action cannot be undone.'
responses:
'204':
description: Organization successfully deleted
'400':
$ref: '#/components/responses/BadRequestError'
'401':
$ref: '#/components/responses/AuthError'
'403':
$ref: '#/components/responses/AuthError'
'404':
$ref: '#/components/responses/SimpleError'
5XX:
description: Unexpected Error
security:
- xata:
- org:write
tags:
- Organizations
/organizations/{organizationID}/members:
get:
operationId: listOrganizationMembers
summary: List members of an organization
parameters:
- $ref: '#/components/parameters/OrganizationIDParam'
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
members:
type: array
items:
$ref: '#/components/schemas/UserWithID'
required:
- members
security:
- xata:
- org:read
tags:
- Organizations
/organizations/{organizationID}/members/{userID}:
delete:
operationId: removeOrganizationMember
summary: Remove a member from an organization
parameters:
- $ref: '#/components/parameters/OrganizationIDParam'
- $ref: '#/components/parameters/UserIDParam'
responses:
'204':
description: Member removed
security:
- xata:
- org:write
tags:
- Organizations
/organizations/{organizationID}/invitations:
get:
operationId: listOrganizationInvitations
summary: List invitations for an organization
description: Retrieve all invitations for an organization with optional filtering by status, email, and name.
parameters:
- $ref: '#/components/parameters/OrganizationIDParam'
- name: status
in: query
description: Filter invitations by status
schema:
type: string
enum:
- pending
- expired
- name: email
in: query
description: Filter invitations by email address
schema:
type: string
- name: first_name
in: query
description: Filter invitations by first name
schema:
type: string
- name: last_name
in: query
description: Filter invitations by last name
schema:
type: string
- name: search
in: query
description: Search invitations by email or name
schema:
type: string
- name: first
in: query
description: Index of the first result to return (0-based offset for pagination)
schema:
type: integer
default: 0
minimum: 0
- name: max
in: query
description: Maximum number of results to return
schema:
type: integer
default: 100
maximum: 100
minimum: 1
responses:
'200':
description: List of invitations retrieved successfully
content:
application/json:
schema:
type: object
properties:
invitations:
type: array
items:
$ref: '#/components/schemas/OrganizationInvitation'
required:
- invitations
'400':
$ref: '#/components/responses/BadRequestError'
'401':
$ref: '#/components/responses/AuthError'
'403':
$ref: '#/components/responses/AuthError'
'404':
$ref: '#/components/responses/SimpleError'
5XX:
description: Unexpected Error
security:
- xata:
- invite:read
tags:
- Organizations
post:
operationId: createOrganizationInvitation
summary: Send an invitation to join an organization
description: Send an invitation email to a user to join an organization.
parameters:
- $ref: '#/components/parameters/OrganizationIDParam'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateOrganizationInvitationRequest'
responses:
'201':
description: Invitation sent successfully
'400':
$ref: '#/components/responses/BadRequestError'
'401':
$ref: '#/components/responses/AuthError'
'403':
$ref: '#/components/responses/AuthError'
'404':
$ref: '#/components/responses/SimpleError'
'409':
$ref: '#/components/responses/SimpleError'
5XX:
description: Unexpected Error
security:
- xata:
- invite:write
tags:
- Organizations
/organizations/{organizationID}/invitations/{invitationID}:
get:
operationId: getOrganizationInvitation
summary: Get details of a specific invitation
description: Retrieve detailed information about a specific invitation by its ID.
parameters:
- $ref: '#/components/parameters/OrganizationIDParam'
- $ref: '#/components/parameters/InvitationIDParam'
responses:
'200':
description: Invitation details retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/OrganizationInvitation'
'400':
$ref: '#/components/responses/BadRequestError'
'401':
$ref: '#/components/responses/AuthError'
'403':
$ref: '#/components/responses/AuthError'
'404':
$ref: '#/components/responses/SimpleError'
5XX:
description: Unexpected Error
security:
- xata:
- invite:read
tags:
- Organizations
delete:
operationId: deleteOrganizationInvitation
summary: Delete an invitation
description: Permanently delete an invitation record.
parameters:
- $ref: '#/components/parameters/OrganizationIDParam'
- $ref: '#/components/parameters/InvitationIDParam'
responses:
'204':
description: Invitation deleted successfully
'400':
$ref: '#/components/responses/BadRequestError'
'401':
$ref: '#/components/responses/AuthError'
'403':
$ref: '#/components/responses/AuthError'
'404':
$ref: '#/components/responses/SimpleError'
5XX:
description: Unexpected Error
security:
- xata:
- invite:write
tags:
- Organizations
/organizations/{organizationID}/invitations/{invitationID}/resend:
post:
operationId: resendOrganizationInvitation
summary: Resend an invitation
description: Resend a pending invitation with a fresh expiration time.
parameters:
- $ref: '#/components/parameters/OrganizationIDParam'
- $ref: '#/components/parameters/InvitationIDParam'
responses:
'204':
description: Invitation resent successfully
'400':
$ref: '#/components/responses/BadRequestError'
'401':
$ref: '#/components/responses/AuthError'
'403':
$ref: '#/components/responses/AuthError'
'404':
$ref: '#/components/responses/SimpleError'
5XX:
description: Unexpected Error
security:
- xata:
- invite:write
tags:
- Organizations
/organizations/{organizationID}/deletion-request:
post:
operationId: requestOrganizationDeletion
summary: Request organization deletion
description: 'Flags the organization for deletion. The request is rejected if the organization still has active projects.
The subscription is cancelled immediately and any outstanding invoices are collected automatically after a grace period that prevents missing delayed usage reports.
Deletion completes asynchronously once all invoices are issued and settled.
'
parameters:
- $ref: '#/components/parameters/OrganizationIDParam'
responses:
'202':
description: Deletion requested — the organization will be removed once all outstanding invoices are settled
'400':
$ref: '#/components/responses/BadRequestError'
'401':
$ref: '#/components/responses/AuthError'
'403':
$ref: '#/components/responses/AuthError'
'409':
$ref: '#/components/responses/SimpleError'
5XX:
description: Unexpected Error
security:
- xata:
- org:write
tags:
- Organizations
/organizations/{organizationID}/membership-limits:
get:
operationId: getOrganizationMembershipLimits
summary: Get organization membership limits
description: Retrieves the membership limits for the specified organization (maximum members and invitations).
parameters:
- $ref: '#/components/parameters/OrganizationIDParam'
responses:
'200':
description: Membership limits for the organization
content:
application/json:
schema:
$ref: '#/components/schemas/OrganizationMembershipLimits'
'401':
$ref: '#/components/responses/AuthError'
'403':
$ref: '#/components/responses/AuthError'
5XX:
description: Unexpected Error
security:
- xata:
- org:read
tags:
- Organizations
components:
schemas:
CreateOrganizationInvitationRequest:
type: object
properties:
email:
description: Email address of the user to invite
type: string
format: email
required:
- email
CreateOrganizationRequest:
description: Request payload for creating a new organization
type: object
properties:
name:
description: Name for the new organization
type: string
required:
- name
UserID:
description: Unique identifier for a user account
type: string
pattern: '[a-zA-Z0-9_-~:]+'
title: UserID
x-oapi-codegen-extra-tags:
validate: identifier
UserWithID:
allOf:
- $ref: '#/components/schemas/User'
- type: object
description: Extended user object that includes the unique user identifier
properties:
id:
$ref: '#/components/schemas/UserID'
required:
- id
OrganizationMembershipLimits:
description: Membership limits for an organization
type: object
properties:
maxMembers:
description: Maximum number of members allowed in the organization
type: integer
minimum: 1
title: Maximum number of organization members
maxInvites:
description: Maximum number of pending invitations allowed at once
type: integer
minimum: 1
title: Maximum number of pending invitations
required:
- maxMembers
- maxInvites
OrganizationInvitation:
type: object
properties:
id:
description: Unique identifier for the invitation
type: string
organization_id:
description: ID of the organization the invitation is for
$ref: '#/components/schemas/OrganizationID'
email:
description: Email address of the invited user
type: string
format: email
first_name:
description: First name of the invited user
type: string
nullable: true
last_name:
description: Last name of the invited user
type: string
nullable: true
created_at:
description: Timestamp when the invitation was created
type: string
format: date-time
expires_at:
description: Timestamp when the invitation expires
type: string
format: date-time
status:
description: Current status of the invitation
type: string
enum:
- pending
- expired
invite_link:
description: URL link to accept the invitation
type: string
required:
- id
- organization_id
- email
- created_at
- expires_at
- status
OrganizationID:
title: OrganizationID
type: string
pattern: '[a-zA-Z0-9_-~:]+'
x-oapi-codegen-extra-tags:
validate: identifier
OrganizationStatus:
type: object
properties:
status:
description: Indicates whether the organization is active, it's computed as `!disabled_by_admin AND billing_status == 'ok'`
type: string
enum:
- enabled
- disabled
disabled_by_admin:
description: Indicates if the organization has been disabled by an admin
type: boolean
admin_reason:
description: Reason for the current admin status
type: string
billing_status:
description: Indicates the status of the organization from a billing perspective
type: string
enum:
- ok
- no_payment_method
- invoice_overdue
- unknown
- deletion_requested
billing_reason:
description: Reason for the current billing status
type: string
usage_tier:
description: Usage tier of the organization. t1 is the default for new organizations, t2 is assigned when a valid payment method is on file.
type: string
enum:
- t1
- t2
last_updated:
description: Timestamp of the last update to the organization's status
type: string
format: date-time
created_at:
description: Timestamp when the organization was created
type: string
format: date-time
required:
- status
- disabled_by_admin
- billing_status
- usage_tier
- last_updated
Organization:
description: Organization details including ID and name
type: object
properties:
id:
description: Unique identifier for the organization
$ref: '#/components/schemas/OrganizationID'
name:
description: Human-readable name of the organization
type: string
status:
description: Current status of the organization
$ref: '#/components/schemas/OrganizationStatus'
marketplace:
description: Marketplace provider for this organization (e.g. "aws"), if billed through a marketplace
type: string
nullable: true
required:
- id
- name
- status
User:
description: User information including email, full name, and profile image
type: object
properties:
email:
description: Email address associated with the user account
type: string
format: email
name:
description: Name of the user
type: string
required:
- name
- email
parameters:
UserIDParam:
name: userID
in: path
required: true
schema:
$ref: '#/components/schemas/UserID'
description: Unique identifier for a specific user account
OrganizationIDParam:
name: organizationID
in: path
required: true
schema:
$ref: '#/components/schemas/OrganizationID'
description: Unique identifier for a specific organization
InvitationIDParam:
name: invitationID
in: path
required: true
schema:
type: string
description: Unique identifier for an invitation
responses:
AuthError:
description: Error returned when authentication or authorization fails
content:
application/json:
schema:
type: object
properties:
id:
description: Error identifier for tracking and debugging
type: string
message:
description: Human-readable error message explaining the issue
type: string
example:
message: invalid API key
required:
- message
BadRequestError:
description: Error returned when the request is malformed or contains invalid parameters
content:
application/json:
schema:
type: object
properties:
id:
description: Error identifier for tracking and debugging
type: string
message:
description: Human-readable error message explaining the issue
type: string
required:
- message
SimpleError:
description: Generic error response
content:
application/json:
schema:
type: object
properties:
id:
description: Error identifier for tracking and debugging
type: string
message:
description: Human-readable error message explaining the issue
type: string
required:
- message
securitySchemes:
oidc:
type: openIdConnect
openIdConnectUrl: https://auth.xata.io/realms/xata/.well-known/openid-configuration
apiKey:
type: apiKey
in: header
name: Authorization
description: 'API key authentication using Bearer token format: Bearer <api_key>'
xata:
type: oauth2
flows:
implicit:
authorizationUrl: https://auth.xata.io/realms/xata/protocol/openid-connect/auth
scopes:
org:read: Read organization information
org:write: Create and modify organizations
keys:read: Read API keys
keys:write: Create and manage API keys
project:read: Read project information
project:write: Create and modify projects
branch:read: Read branch information
branch:write: Create and modify branches
metrics:read: Read metrics data
logs:read: Read logs data
credentials:read: Read credentials
credentials:write: Rotate credentials
marketplace:write: Register with cloud marketplaces
branchConnectionString:
type: apiKey
in: header
name: Connection-String
description: Branch PostgreSQL connection string (`postgres://user:pass@{branch}.{region}.xata.tech/db`), including the embedded password. The hostname selects the target branch, region, and endpoint type (the `-rw`/`-ro` suffix, see `EndpointType`), and must match the request host. Obtain it from the Xata dashboard or the control-plane API. This is the only credential the gateway accepts; the control-plane API key (Bearer token) is rejected here. For the WebSocket endpoint (`GET /v2`) the same connection string is conveyed via the PostgreSQL startup message instead of this header.
externalDocs:
url: https://xata.io/docs/api
x-tagGroups:
- name: Authentication API
tags:
- Organizations
- Users
- API Keys
- Marketplace
- Billing
- Webhooks
- name: Gateway API
tags:
- Gateway
- name: Projects API
tags:
- Projects Webhooks
- Projects
- Branches
- GitHub App
- Metrics
- Logs