Skip to main content

Reseller API (v1)

API for resellers to programmatically register sites with us

Thierry Maasdam avatar
Written by Thierry Maasdam
Updated over a week ago

The Consent Studio Reseller API

The Reseller API allows approved partners to manage customer sites, assign plans, and automate onboarding.

All endpoints are authenticated using a reseller API token and scoped to the reseller that owns the token.

You’ll need a reseller API token (request one via your account manager or support team).


Authentication

You can authenticate via a Bearer Token in the HTTP header or a token parameter in the query string.

Example (HTTP header)

Authorization: Bearer YOUR_RESELLER_TOKEN

Example (query)

?token=YOUR_RESELLER_TOKEN

If the token is missing or invalid, the API will return a 401 Unauthorized error.


Workflow examples

Create + Invite + Link

  1. Make sure that your reseller holds at least one site that has a manually activated subscription for a specific type plan.

  2. POST /sites — register the new domain with Consent Studio

  3. PATCH /sites/{domain_or_uuid}/link — link it to the a top level site with an active subscription

  4. POST /users/invite/{domain_or_uuid} — invite the customer to manage their site

Cancelling a site

Either...

  • Unlink it from a parent subscription (API) and contact Consent Studio support (manually) to detach it from the reseller account

  • Delete the site completely using the API


Endpoint: Get Reseller Info & Available Plans

Returns metadata about the reseller and a list of subscription plans the reseller can assign to sites.

Endpoint

GET /api/v1/reseller/about

Response

{
"reseller": {
"name": string,
},
"plans": [
{
"uuid": string,
"name": string,,
"cycle": "monthly"|"yearly",
}
]
}


Endpoint: List All Sites

Returns all sites linked to your reseller account.

Endpoint

GET /api/v1/reseller/sites

Request

{
"page": int,
}

Response

{
"items": [
{
"uuid": string,
"domain": string,
"parent_site": string,
"plan": string,
"is_active": true|false,
"is_trialing": true|false,
"is_subscribed": true|false,
"is_top_level_domain": true|false,
"is_subdomain": true|false,
"has_http_consent_cookies_enabled": true|false,
"has_http_consent_cookies_enabled_via_worker": true|false,
}
],
"meta": {
"current_page": int,
"last_page": int,
"per_page": int,
"total": int,
}
}


Endpoint: Create A Site

Creates a new site under your reseller account. If it is not linked to a parent site with an active subscription, the site starts on a trial.

Endpoint

POST /api/v1/reseller/sites

Request

{
"domain": string,
"languages": array|null,
"enable_http_cookies": true|false|null,
"enable_http_cookies_via_worker": true|false|null,
"link_to_domain": string|null,
"link_to_uuid": string|null,
"primary_color": string|null,
}

Remarks

  • link_to_domain and link_to_uuid are used to link this site to another domain for simplified/combined invoicing.

  • link_to_domain and link_to_uuid cannot both be present at the same time.

  • primary_color must be a color hex when present.

Response

{
"items": [
{
"uuid": string,
"domain": string,
"parent_site": string|null
"plan": string,
"aliases": null|array<string>,
"languages": array<string>,
"last_health_check_at": null|string,
"primary_color": string,
"is_active": true|false,
"is_trialing": true|false,
"is_subscribed": true|false,
"is_top_level_domain": true|false,
"is_subdomain": true|false,
"has_http_consent_cookies_enabled": true|false,
"has_http_consent_cookies_enabled_via_worker": true|false,
"has_functional_cookies": true|false,
"has_analytics_cookies": true|false,
"has_marketing_cookies": true|false,
"has_analytics_reprompting_enabled": true|false,
"has_marketing_reprompting_enabled": true|false,
}
]
}


Endpoint: View A Site

Get detailed information about a specific site using its UUID or domain.

Endpoint

GET /api/v1/reseller/sites/{uuid_or_domain}

Response

{
"items": [
{
"uuid": string,
"domain": string,
"parent_site": string|null
"plan": string,
"aliases": null|array<string>,
"languages": array<string>,
"last_health_check_at": null|string,
"primary_color": string,
"is_active": true|false,
"is_trialing": true|false,
"is_subscribed": true|false,
"is_top_level_domain": true|false,
"is_subdomain": true|false,
"has_http_consent_cookies_enabled": true|false,
"has_http_consent_cookies_enabled_via_worker": true|false,
"has_functional_cookies": true|false,
"has_analytics_cookies": true|false,
"has_marketing_cookies": true|false,
"has_analytics_reprompting_enabled": true|false,
"has_marketing_reprompting_enabled": true|false,
}
]
}


Endpoint: Update A Site

Update settings for a site, including language options, cookie settings, or linking it to a parent site by UUID or domain.

Endpoint

PATCH /api/v1/reseller/sites/{uuid_or_domain}

Request

{
"languages": array|null,
"enable_http_cookies": true|false|null,
"enable_http_cookies_via_worker": true|false|null,
"link_to_domain": string|null,
"link_to_uuid": string|null,
"primary_color": string|null,
}

Remarks

  • link_to_domain and link_to_uuid are used to link this site to another domain for simplified/combined invoicing.

  • link_to_domain and link_to_uuid cannot both be present at the same time.

  • primary_color must be a color hex when present.

Response

{
"items": [
{
"uuid": string,
"domain": string,
"parent_site": string|null
"plan": string,
"aliases": null|array<string>,
"languages": array<string>,
"last_health_check_at": null|string,
"primary_color": string,
"is_active": true|false,
"is_trialing": true|false,
"is_subscribed": true|false,
"is_top_level_domain": true|false,
"is_subdomain": true|false,
"has_http_consent_cookies_enabled": true|false,
"has_http_consent_cookies_enabled_via_worker": true|false,
"has_functional_cookies": true|false,
"has_analytics_cookies": true|false,
"has_marketing_cookies": true|false,
"has_analytics_reprompting_enabled": true|false,
"has_marketing_reprompting_enabled": true|false,
}
]
}


Endpoint: Delete A Site

Permanently deletes a site from our systems and your reseller account.

When deleting a site/domain, all its information and consent action records will be deleted instantly. This action is irreversible.

Endpoint

DELETE /api/v1/reseller/sites/{uuid_or_domain}

Response

{
"message": "Site deleted"
}


Endpoint: Link a Site to a Subscribed Site

Link a site to a subscribed parent site, allowing the child site to share the parent’s plan. This updates the site’s subscription state and the quantity of on the parent's subscription plan.

PATCH /api/v1/reseller/sites/{uuid_or_domain}/link

Request

{
"target": string,
}

Remarks

  • target can both be an UUID or a domain name.

  • A top level site cannot become a child site of another child site.

  • Upon connecting new child sites to a top level site, the top level site's subscription quantities will be updated shortly.


Endpoint: Unlink A Site From Its Parent

Unlink a site from its parent site. This removes it from the parent site’s subscription and starts a new trial.

Endpoint

PATCH /api/v1/reseller/sites/{uuid_or_domain}/link

Response

{
"message": "Site deleted"
}

Remarks

  • Upon disconnecting a child site from a top level site, it will be considered a top level site again. However, it will not be subscribed anymore and a new trial will start. Please refer to our product website to see the standard length of any new trial.


Endpoint: Invite Users To Manage A Site

Endpoint

POST /api/v1/reseller/users/invite/{uuid_or_domain}

Request

{
"invite": array<string>|string,
}

Remarks

  • invite will hold the e-mail addresses of the users that are to be invited. You are responsible yourself for retrieving consent for sharing personal identifiable information.

Response

{
"message": "Process completed",
"successful": array<string>,
"failed": array<string>,
}
Did this answer your question?