SettleMint
Tokens

Inherited global controls

Read which global compliance controls actually run for one token, after scope and disabled bindings are applied.

A global compliance control is configured once on the system compliance engine and applies across every bound token. Scope can narrow that reach, and a binding can be turned off without being removed. This endpoint returns the control type IDs that apply to one token, so an integration shows the real inherited floor rather than every control configured on the platform.

Use this page for the request shape, the type IDs the response returns, and the boundary between this inherited list and a token's own per-token bindings. The endpoint is a read: it never changes state and never moves a token.

When to use this read

Call this endpoint when you display the compliance controls that protect a token and you want the global, platform-level controls that the token inherits. The Console token Compliance tab uses it this way: it shows the inherited control floor alongside the token's own bindings. Reporting every global control without applying scope would mark a token as protected by a control the system engine never runs for it, which is a false signal.

DecisionUse this endpoint forRead elsewhere
Which global controls apply to this token?The type IDs of global controls that run for the token after scope is applied.The token's own per-token module bindings and their parameters.
Should I show this global control on the token?Inclusion in the returned typeIds list.The full parameter values for each control, read from the token compliance surface.
Why does a configured global control not appear here?The control is disabled or its scope excludes this token, so it is omitted.Whether the control is installed at all, read from the compliance module registry.

Read the applicable controls

Send the token address in the path. The response returns the global control type IDs that apply to the token.

curl "https://your-platform.example.com/api/v2/tokens/0x71C7656EC7ab88b098defB751B7401B5f6d8976F/inherited-global-controls" \
  -H "X-Api-Key: sm_dalp_xxxxxxxxxxxxxxxx"

A successful response returns the applicable type IDs:

{
  "data": {
    "typeIds": ["country-allow-list-v2", "identity-verification-v2"]
  },
  "links": {
    "self": "/v2/tokens/0x71C7656EC7ab88b098defB751B7401B5f6d8976F/inherited-global-controls"
  }
}

When no global control applies to the token, typeIds is an empty array. The endpoint returns an empty list, not an error, when the token has no compliance setup or the system has no global controls. Treat an empty list as a normal result:

{
  "data": {
    "typeIds": []
  },
  "links": {
    "self": "/v2/tokens/0x71C7656EC7ab88b098defB751B7401B5f6d8976F/inherited-global-controls"
  }
}

Parameters and fields

FieldTypeNotes
tokenAddresspath stringThe token contract address to evaluate.
typeIdsstring arrayThe global compliance control type IDs that apply to this token. See the response example above.

What the list means

The response lists global control type IDs that run for the token. The endpoint includes a control when it is active and either covers every token or carries a token-dimension scope that selects this token. It resolves that scope against the token's registered claims, so a scope targeting a specific token population either selects this token or filters it out.

A configured global control drops off the list in two cases. The engine skips a control turned off there, so the on-chain transfer check skips it too. A control whose token-dimension scope excludes this token never runs for the token, so the endpoint omits it.

The list reflects token-dimension scope only. It does not read the sender, receiver, or country scope a control may also carry, because the endpoint takes no transfer inputs. A returned control therefore applies to the token, but a control with executionMode: 0 can still be skipped on an individual transfer that falls outside its sender, receiver, or country scope. Treat the list as the controls that apply to the token, not a guarantee that each one runs on every transfer.

A token with no global controls in scope returns an empty list. So does a token with no compliance setup. An empty typeIds list means no global control applies, not that the token is unknown: a token outside the caller's organization scope is rejected with a not-found error before this read runs, rather than returning an empty list.

Inherited controls and the token's own bindings

This endpoint returns the global, platform-level controls a token inherits. It does not return the token's own per-token module bindings or their parameter values. To read the controls installed directly on a token, and to install, scope, or reconfigure them, use the compliance module endpoints.

The inherited list reflects current indexed state. After you configure, scope, or disable a global control on the system engine, poll the returned transaction status before relying on this read. Indexed reads update a short interval after a successful transaction.

  • Compliance modules for registering modules and configuring global controls and token-level bindings.
  • Global controls for the operator workflow that configures the controls this endpoint reports.
  • Recipient eligibility check for a related token-scoped read verdict used before a transfer.
  • API reference for the generated OpenAPI contract and a typed client for this endpoint.

On this page