Skip to main content

Reseller API

The Reseller API lets approved resellers create and manage sub-custodians through Portal. Use it to create a sub-custodian, view its environments, suspend access, and create environment-scoped Portal API keys for that sub-custodian.

Authentication

Create a Reseller API key in the Portal dashboard from the Reseller section. Reseller API keys are environment-agnostic and authenticate the reseller itself. Send the key as a bearer token on every request:
Authorization: Bearer <RESELLER_API_KEY>
A reseller can only access sub-custodians that belong to that reseller.

Create a sub-custodian

Create a sub-custodian with an initial user. Portal creates Development and Production environments for the sub-custodian, enables Portal backup and session tokens, and sends the initial user an onboarding invite.
curl --request POST \
  --url https://api.portalhq.io/api/v3/resellers/custodians \
  --header 'Authorization: Bearer <RESELLER_API_KEY>' \
  --header 'Content-Type: application/json' \
  --data '{
    "custodian": {
      "name": "Acme Payments"
    },
    "user": {
      "email": "admin@acmepayments.com",
      "firstName": "Avery",
      "lastName": "Stone"
    }
  }'
Sub-custodians created through the Reseller API are active, non-reseller custodians on the Start-Up plan with Portal backup and session tokens enabled.

List sub-custodians

curl --request GET \
  --url https://api.portalhq.io/api/v3/resellers/custodians \
  --header 'Authorization: Bearer <RESELLER_API_KEY>'
The response includes each sub-custodian’s environments, users, billing plan, billing status, and Portal API key metadata.

List sub-custodian environments

Use the sub-custodian ID from the create or list response.
curl --request GET \
  --url https://api.portalhq.io/api/v3/resellers/custodians/<CUSTODIAN_ID>/environments \
  --header 'Authorization: Bearer <RESELLER_API_KEY>'

Create a sub-custodian Portal API key

Sub-custodian Portal API keys are scoped to one sub-custodian environment. The raw API key value is only returned when the key is created.
curl --request POST \
  --url https://api.portalhq.io/api/v3/resellers/custodians/<CUSTODIAN_ID>/environments/<ENVIRONMENT_ID>/api-keys \
  --header 'Authorization: Bearer <RESELLER_API_KEY>' \
  --header 'Content-Type: application/json' \
  --data '{
    "name": "Production API key"
  }'

Suspend a sub-custodian

Suspending a sub-custodian blocks that custodian’s Portal dashboard users, Portal API keys, client API keys, client session tokens, and service-authenticated requests.
curl --request PUT \
  --url https://api.portalhq.io/api/v3/resellers/custodians/<CUSTODIAN_ID>/suspend \
  --header 'Authorization: Bearer <RESELLER_API_KEY>'