Organizations#
Manage organizations, team members, invitations, and organization-level settings.
Authentication required
Authorization header. See the Authentication guide for setup instructions.GET /v1/organizations#
List organizations the current user belongs to, with membership details.
GET /v1/organizations?page_index=0&page_size=25&user_id=user_abc123
Authorization: Bearer {token}Parameters#
| Name | Type | Required | Description |
|---|---|---|---|
| pageIndex | integer | Required | Zero-based page index for pagination. |
| pageSize | integer | Required | Number of items per page (1-100). |
| userId | string (UUID) | Required | User identifier to list organizations for. |
Response#
Returns { items, totalCount, facets } with paginated results.
Underlying SDK method: bw.organizations.list(params)
GET /v1/organizations/:id#
Retrieve a single organization by ID.
GET /v1/organizations/:id
Authorization: Bearer {token}Parameters#
| Name | Type | Required | Description |
|---|---|---|---|
| id | string (UUID) | Required | Organization identifier. |
Response#
Returns { data } with the result.
Underlying SDK method: bw.organizations.get({ id })
POST /v1/organizations#
Create an organization with a name, timezone, and currency, then assign the requesting user as owner.
POST /v1/organizations
Authorization: Bearer {token}
Content-Type: application/json
{
"user_id": "user_abc123",
"name": "My Campaign"
}Parameters#
| Name | Type | Required | Description |
|---|---|---|---|
| userId | string (UUID) | Required | User identifier of the organization owner. |
| name | string | Required | Organization name. |
| ianaTimezone | 'UTC' | 'America/New_York' | 'America/Chicago' | 'America/Denver' | 'America/Los_Angeles' | 'America/Anchorage' | 'Pacific/Honolulu' | 'America/Toronto' | 'America/Vancouver' | 'Europe/London' | 'Europe/Paris' | 'Europe/Berlin' | 'Australia/Sydney' | 'Australia/Melbourne' | 'Pacific/Auckland' | 'Asia/Tokyo' | 'Asia/Singapore' | null | — | IANA timezone identifier. |
| currency | 'USD' | 'CAD' | 'GBP' | 'EUR' | 'AUD' | 'NZD' | 'JPY' | 'SGD' | — | ISO 4217 currency code. |
Response#
Returns { data } with the result.
Underlying SDK method: bw.organizations.create(params)
POST /v1/organizations/complete-organic-signup#
Create a first-time organic signup workspace using the submitted organization name, timezone, and currency, then join the default demo org as a viewer and switch the active organization to the demo workspace.
POST /v1/organizations/complete-organic-signup
Authorization: Bearer {token}
Content-Type: application/json
{
"user_id": "user_abc123",
"name": "My Campaign"
}Parameters#
| Name | Type | Required | Description |
|---|---|---|---|
| userId | string (UUID) | Required | User identifier completing first-time organic onboarding. |
| name | string | Required | Name of the real organization to create for the user. |
| ianaTimezone | 'UTC' | 'America/New_York' | 'America/Chicago' | 'America/Denver' | 'America/Los_Angeles' | 'America/Anchorage' | 'Pacific/Honolulu' | 'America/Toronto' | 'America/Vancouver' | 'Europe/London' | 'Europe/Paris' | 'Europe/Berlin' | 'Australia/Sydney' | 'Australia/Melbourne' | 'Pacific/Auckland' | 'Asia/Tokyo' | 'Asia/Singapore' | null | — | IANA timezone identifier. |
| currency | 'USD' | 'CAD' | 'GBP' | 'EUR' | 'AUD' | 'NZD' | 'JPY' | 'SGD' | — | ISO 4217 currency code. |
Response#
Returns { data } with the result.
Underlying SDK method: bw.organizations.completeOrganicSignup(params)
PATCH /v1/organizations/:id#
Update an organization's name, description, timezone, currency, conversion value for ROI calculations, or attribution window.
PATCH /v1/organizations/:id
Authorization: Bearer {token}Parameters#
| Name | Type | Required | Description |
|---|---|---|---|
| id | string (UUID) | Required | Organization identifier to update. |
| name | string | — | Updated organization name (1-255 characters). |
| ianaTimezone | 'UTC' | 'America/New_York' | 'America/Chicago' | 'America/Denver' | 'America/Los_Angeles' | 'America/Anchorage' | 'Pacific/Honolulu' | 'America/Toronto' | 'America/Vancouver' | 'Europe/London' | 'Europe/Paris' | 'Europe/Berlin' | 'Australia/Sydney' | 'Australia/Melbourne' | 'Pacific/Auckland' | 'Asia/Tokyo' | 'Asia/Singapore' | null | — | Updated IANA timezone. |
| currency | 'USD' | 'CAD' | 'GBP' | 'EUR' | 'AUD' | 'NZD' | 'JPY' | 'SGD' | — | Updated currency code. |
| conversionValue | number | — | Average customer value for ROI calculations (non-negative). |
| defaultAttributionWindowDays | integer | null | — | Number of days for the attribution window (must be greater than zero). |
Response#
Returns { data } with the result.
Underlying SDK method: bw.organizations.update(params)
DELETE /v1/organizations/:id#
Permanently delete an organization and all associated data.
DELETE /v1/organizations/:id
Authorization: Bearer {token}Parameters#
| Name | Type | Required | Description |
|---|---|---|---|
| id | string (UUID) | Required | Organization identifier to delete. |
Response#
Returns { data } with the result.
Underlying SDK method: bw.organizations.delete(params)
Destructive action
GET /v1/organizations/:id/users#
List users in an organization with pagination and search.
GET /v1/organizations/:id/users?page_index=0&page_size=25&organization_id=org_123
Authorization: Bearer {token}Parameters#
| Name | Type | Required | Description |
|---|---|---|---|
| pageIndex | integer | Required | Zero-based page index for pagination. |
| pageSize | integer | Required | Number of items per page (1-100). |
| organizationId | string (UUID) | Required | Organization identifier. |
| searchTerm | string | — | Free-text search term to filter results (max 200 characters). |
| sortBy | string | — | Column name to sort by. |
| sortDirection | 'asc' | 'desc' | — | Sort direction: ascending or descending. |
Response#
Returns { items, totalCount, facets } with paginated results.
Underlying SDK method: bw.organizations.users.list(params)
POST /v1/organizations/:id/users#
Add an existing user to an organization with a specified role.
POST /v1/organizations/:id/users
Authorization: Bearer {token}
Content-Type: application/json
{
"organization_id": "org_123",
"user_id": "user_abc123",
"role": "member"
}Parameters#
| Name | Type | Required | Description |
|---|---|---|---|
| organizationId | string (UUID) | Required | Organization identifier. |
| userId | string (UUID) | Required | User identifier to add. |
| role | 'owner' | 'member' | 'viewer' | Required | Role to assign (owner, member, or viewer). |
Response#
Returns { data } with the result.
Underlying SDK method: bw.organizations.users.add(params)
PATCH /v1/organizations/:id/users/:userId#
Update a user's role within an organization.
PATCH /v1/organizations/:id/users/:userId
Authorization: Bearer {token}
Content-Type: application/json
{
"organization_id": "org_123",
"role": "member"
}Parameters#
| Name | Type | Required | Description |
|---|---|---|---|
| organizationId | string (UUID) | Required | Organization identifier. |
| userId | string (UUID) | Required | User identifier whose role is being changed. |
| role | 'owner' | 'member' | 'viewer' | Required | New role to assign (owner, member, or viewer). |
Response#
Returns { data } with the result.
Underlying SDK method: bw.organizations.users.updateRole(params)
DELETE /v1/organizations/:id/users/:userId#
Remove a user's membership from an organization.
DELETE /v1/organizations/:id/users/:userId
Authorization: Bearer {token}
Content-Type: application/json
{
"organization_id": "org_123"
}Parameters#
| Name | Type | Required | Description |
|---|---|---|---|
| organizationId | string (UUID) | Required | Organization identifier. |
| userId | string (UUID) | Required | User identifier to remove. |
Response#
Returns { data } with the result.
Underlying SDK method: bw.organizations.users.remove(params)
POST /v1/organizations/:id/invites#
Invite a user to an organization by email.
POST /v1/organizations/:id/invites
Authorization: Bearer {token}
Content-Type: application/json
{
"email": "user@example.com",
"organization_id": "org_123",
"role": "member"
}Parameters#
| Name | Type | Required | Description |
|---|---|---|---|
string | Required | Email address to send the invite to. | |
| organizationId | string (UUID) | Required | Organization identifier. |
| role | 'owner' | 'member' | 'viewer' | Required | Role to assign to the invited user (owner, member, or viewer). |
Response#
Returns { data } with the result.
Underlying SDK method: bw.organizations.users.invite(params)
Authorization required
POST /v1/organizations/invites/:organizationId/accept#
Accept a pending organization invite.
POST /v1/organizations/invites/:organizationId/accept
Authorization: Bearer {token}
Content-Type: application/json
{
"user_id": "user_abc123"
}Parameters#
| Name | Type | Required | Description |
|---|---|---|---|
| organizationId | string (UUID) | Required | Organization identifier. |
| userId | string (UUID) | Required | User identifier accepting the invite. |
Response#
Returns { data } with the result.
Underlying SDK method: bw.organizations.users.acceptInvite(params)
POST /v1/organizations/invites/:organizationId/decline#
Decline a pending organization invite.
POST /v1/organizations/invites/:organizationId/decline
Authorization: Bearer {token}
Content-Type: application/json
{
"user_id": "user_abc123"
}Parameters#
| Name | Type | Required | Description |
|---|---|---|---|
| organizationId | string (UUID) | Required | Organization identifier. |
| userId | string (UUID) | Required | User identifier declining the invite. |
Response#
Returns { data } with the result.
Underlying SDK method: bw.organizations.users.declineInvite(params)
POST /v1/organizations/invites/process-signup#
Process invite metadata for a newly signed-up user.
POST /v1/organizations/invites/process-signup
Authorization: Bearer {token}
Content-Type: application/json
{
"user_id": "user_abc123"
}Parameters#
| Name | Type | Required | Description |
|---|---|---|---|
| userId | string (UUID) | Required | Authenticated user whose invite metadata should be processed. |
Response#
Returns { data } with the result.
Underlying SDK method: bw.organizations.users.processInviteSignup()