Organizations#

Manage organizations, team members, invitations, and organization-level settings.

Authentication required

All endpoints require a Bearer token in the Authorization header. See the Authentication guide for setup instructions.

GET /v1/organizations#

List organizations the current user belongs to, with membership details.

bash
GET /v1/organizations?page_index=0&page_size=25&user_id=user_abc123
Authorization: Bearer {token}

Parameters#

NameTypeRequiredDescription
pageIndexintegerRequiredZero-based page index for pagination.
pageSizeintegerRequiredNumber of items per page (1-100).
userIdstring (UUID)RequiredUser 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.

bash
GET /v1/organizations/:id
Authorization: Bearer {token}

Parameters#

NameTypeRequiredDescription
idstring (UUID)RequiredOrganization 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.

bash
POST /v1/organizations
Authorization: Bearer {token}
Content-Type: application/json

{
  "user_id": "user_abc123",
  "name": "My Campaign"
}

Parameters#

NameTypeRequiredDescription
userIdstring (UUID)RequiredUser identifier of the organization owner.
namestringRequiredOrganization 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' | nullIANA 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.

bash
POST /v1/organizations/complete-organic-signup
Authorization: Bearer {token}
Content-Type: application/json

{
  "user_id": "user_abc123",
  "name": "My Campaign"
}

Parameters#

NameTypeRequiredDescription
userIdstring (UUID)RequiredUser identifier completing first-time organic onboarding.
namestringRequiredName 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' | nullIANA 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.

Owner only
bash
PATCH /v1/organizations/:id
Authorization: Bearer {token}

Parameters#

NameTypeRequiredDescription
idstring (UUID)RequiredOrganization identifier to update.
namestringUpdated 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' | nullUpdated IANA timezone.
currency'USD' | 'CAD' | 'GBP' | 'EUR' | 'AUD' | 'NZD' | 'JPY' | 'SGD'Updated currency code.
conversionValuenumberAverage customer value for ROI calculations (non-negative).
defaultAttributionWindowDaysinteger | nullNumber 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.

Owner only
bash
DELETE /v1/organizations/:id
Authorization: Bearer {token}

Parameters#

NameTypeRequiredDescription
idstring (UUID)RequiredOrganization identifier to delete.

Response#

Returns { data } with the result.

Underlying SDK method: bw.organizations.delete(params)

Destructive action

Deleting an organization permanently removes all activities, campaigns, creators, costs, conversions, and team members. This action cannot be undone.

GET /v1/organizations/:id/users#

List users in an organization with pagination and search.

bash
GET /v1/organizations/:id/users?page_index=0&page_size=25&organization_id=org_123
Authorization: Bearer {token}

Parameters#

NameTypeRequiredDescription
pageIndexintegerRequiredZero-based page index for pagination.
pageSizeintegerRequiredNumber of items per page (1-100).
organizationIdstring (UUID)RequiredOrganization identifier.
searchTermstringFree-text search term to filter results (max 200 characters).
sortBystringColumn 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.

Owner only
bash
POST /v1/organizations/:id/users
Authorization: Bearer {token}
Content-Type: application/json

{
  "organization_id": "org_123",
  "user_id": "user_abc123",
  "role": "member"
}

Parameters#

NameTypeRequiredDescription
organizationIdstring (UUID)RequiredOrganization identifier.
userIdstring (UUID)RequiredUser identifier to add.
role'owner' | 'member' | 'viewer'RequiredRole 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.

Owner only
bash
PATCH /v1/organizations/:id/users/:userId
Authorization: Bearer {token}
Content-Type: application/json

{
  "organization_id": "org_123",
  "role": "member"
}

Parameters#

NameTypeRequiredDescription
organizationIdstring (UUID)RequiredOrganization identifier.
userIdstring (UUID)RequiredUser identifier whose role is being changed.
role'owner' | 'member' | 'viewer'RequiredNew 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.

Owner only
bash
DELETE /v1/organizations/:id/users/:userId
Authorization: Bearer {token}
Content-Type: application/json

{
  "organization_id": "org_123"
}

Parameters#

NameTypeRequiredDescription
organizationIdstring (UUID)RequiredOrganization identifier.
userIdstring (UUID)RequiredUser 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.

Owner only
bash
POST /v1/organizations/:id/invites
Authorization: Bearer {token}
Content-Type: application/json

{
  "email": "user@example.com",
  "organization_id": "org_123",
  "role": "member"
}

Parameters#

NameTypeRequiredDescription
emailstringRequiredEmail address to send the invite to.
organizationIdstring (UUID)RequiredOrganization identifier.
role'owner' | 'member' | 'viewer'RequiredRole 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

Only organization owners can invite new members.

POST /v1/organizations/invites/:organizationId/accept#

Accept a pending organization invite.

bash
POST /v1/organizations/invites/:organizationId/accept
Authorization: Bearer {token}
Content-Type: application/json

{
  "user_id": "user_abc123"
}

Parameters#

NameTypeRequiredDescription
organizationIdstring (UUID)RequiredOrganization identifier.
userIdstring (UUID)RequiredUser 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.

bash
POST /v1/organizations/invites/:organizationId/decline
Authorization: Bearer {token}
Content-Type: application/json

{
  "user_id": "user_abc123"
}

Parameters#

NameTypeRequiredDescription
organizationIdstring (UUID)RequiredOrganization identifier.
userIdstring (UUID)RequiredUser 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.

bash
POST /v1/organizations/invites/process-signup
Authorization: Bearer {token}
Content-Type: application/json

{
  "user_id": "user_abc123"
}

Parameters#

NameTypeRequiredDescription
userIdstring (UUID)RequiredAuthenticated user whose invite metadata should be processed.

Response#

Returns { data } with the result.

Underlying SDK method: bw.organizations.users.processInviteSignup()