Core concepts

The interfaces, environments, and conventions you build against.

SDP has two interfaces over the same API:

  • Dashboard: the browser UI. Sign in with email, Google, or GitHub.
  • REST API: programmatic access for backend integrations. Requests authenticate with an API key in the Authorization header.

Both call the same API, and each route requires the same action whoever calls it. A signed-in member holds actions through their organization role; an API key holds the grants you give it. Some routes are for signed-in members only, such as managing API keys, members, and the organization, or setting up a custody provider. An API key is refused them.

Build against the API for automation and integrations. Use the dashboard to set up your organization, inspect state, and run one-off operations.

Environments

An environment belongs to the project, not to individual requests. Every tenant resource and API key belongs to a project and inherits its environment.

EnvironmentNetwork
sandboxdevnet
productionmainnet-beta

A key's format doesn't name its environment; the project it belongs to does.

Both environments expose the same route shapes. Build and test against your sandbox project, then move to production with a production project's API key. Go to mainnet covers requesting access and setting up your production wallets and API key.

Response conventions

Every successful response wraps its payload in a data envelope with request metadata:

JSON
{
  "data": { ... },
  "meta": { "requestId": "req_...", "timestamp": "2026-07-31T12:00:00.000Z" }
}

Errors return a machine-readable code alongside a human-readable message:

JSON
{
  "error": { "code": "INVALID_API_KEY", "message": "Invalid API key" },
  "meta": { "requestId": "req_..." }
}

Include the requestId when you report an issue. It links your request to SDP's traces.

Execution model

For a custody operation, SDP builds the transaction, signs it with the configured custody wallet, and submits it.