Tenants API
The Tenants API manages your organization's settings, team members, API keys, and audit trail. All endpoints require JWT authentication.
Current Tenant
GET /api/tenants/current
Returns the currently active tenant.
Response
{
"data": {
"id": "t_abc123",
"name": "Acme Corp",
"slug": "acme-corp",
"settings": {},
"createdAt": "2024-06-01T00:00:00Z",
"updatedAt": "2025-01-15T12:00:00Z"
}
}
Update Tenant
PATCH /api/tenants/current
Partial update — only provided fields are modified.
Request Body
{
"name": "Acme Corporation",
"settings": { "defaultLocale": "en" }
}
Team Members
List Members
GET /api/tenants/members
Response
{
"data": [
{
"id": "m_abc",
"tenantId": "t_abc123",
"userId": "u_456",
"email": "admin@acme.com",
"role": "OWNER",
"invitedBy": null,
"isPending": false,
"inviteEmailStatus": "SENT",
"inviteResendCount": 0,
"createdAt": "2024-06-01T00:00:00Z",
"updatedAt": "2024-06-01T00:00:00Z"
}
]
}
Invite Member
POST /api/tenants/members
Request Body
{
"email": "editor@acme.com",
"role": "EDITOR"
}
Available roles: OWNER, ADMIN, EDITOR, VIEWER.
Get Member
GET /api/tenants/members/:id
Update Member Role
PATCH /api/tenants/members/:id
OWNER role required.
Request Body
{
"role": "ADMIN"
}
Remove Member
DELETE /api/tenants/members/:id
Resend Invite
POST /api/tenants/members/:id/resend-invite
Maximum of 2 resends per invite.
Generate Invite Link
POST /api/tenants/invites/link
Generates a shareable invite link for a given role.
Request Body
{
"role": "VIEWER"
}
Response
{
"data": { "link": "https://app.breakground.io/invite/token_abc123" }
}
API Keys
List API Keys
GET /api/tenants/api-keys
Response
{
"data": [
{
"id": "key_abc",
"name": "Production SDK",
"keyPrefix": "wfx_a1b2c3",
"tenantId": "t_abc123",
"createdAt": "2025-01-01T00:00:00Z",
"expiresAt": "2026-01-01T00:00:00Z",
"lastUsedAt": "2025-01-20T15:30:00Z"
}
]
}
Create API Key
POST /api/tenants/api-keys
Request Body
{
"name": "Production SDK",
"expiresAt": "2026-01-01T00:00:00Z"
}
| Field | Type | Required | Description |
|---|---|---|---|
name | string (1-100) | Yes | Display name for the key |
expiresAt | datetime | No | Expiration date (no expiration if omitted) |
Response — 201 Created
The full key is returned only once at creation. Store it securely.
{
"data": {
"id": "key_abc",
"name": "Production SDK",
"key": "wfx_a1b2c3d4e5f6...",
"keyPrefix": "wfx_a1b2c3",
"createdAt": "2025-01-01T00:00:00Z",
"expiresAt": "2026-01-01T00:00:00Z"
},
"warning": "Store this key securely. It will not be shown again."
}
Get API Key
GET /api/tenants/api-keys/:id
Returns key metadata (the full key value is never returned after creation).
Revoke API Key
DELETE /api/tenants/api-keys/:id
Permanently revokes the key. Any SDK instances using this key will stop working.
Audit Logs
GET /api/tenants/audit-logs
Returns a paginated audit trail of all actions performed within the tenant.
Response
{
"data": [
{
"id": "log_abc",
"action": "FLOW_PUBLISHED",
"entityType": "flow",
"entityId": "flow_abc",
"actorId": "u_456",
"ipAddress": "192.168.1.1",
"metadata": {},
"createdAt": "2025-01-20T14:30:00Z"
}
],
"meta": { "total": 500, "page": 1, "limit": 20, "totalPages": 25 }
}
Audit Log Actions
| Category | Actions |
|---|---|
| Auth | USER_LOGIN, USER_LOGOUT |
| Flows | FLOW_CREATED, FLOW_UPDATED, FLOW_PUBLISHED, FLOW_ARCHIVED |
| Content | CONTENT_CREATED, CONTENT_UPDATED, CONTENT_ARCHIVED |
| Audiences | AUDIENCE_CREATED, AUDIENCE_UPDATED, AUDIENCE_DELETED |
| Journeys | JOURNEY_CREATED, JOURNEY_UPDATED, JOURNEY_PUBLISHED, JOURNEY_PAUSED, JOURNEY_ARCHIVED |
| Experiments | EXPERIMENT_CREATED, EXPERIMENT_UPDATED, EXPERIMENT_STARTED, EXPERIMENT_STOPPED, EXPERIMENT_ARCHIVED |
| Team | MEMBER_INVITED, MEMBER_REMOVED, MEMBER_ROLE_CHANGED |
| API Keys | API_KEY_CREATED, API_KEY_REVOKED |
| Settings | TENANT_SETTINGS_UPDATED |
| AI | AI_CONFIG_CREATED, AI_CONFIG_UPDATED, AI_CONFIG_DELETED |