SettleMint
Developer guidesAPI integration

System directory API

Read the Directory-backed system contract catalog for the active network or a specific Directory contract.

The system directory endpoint returns the indexed Directory catalog for the active network.

Use this endpoint before token, compliance, or add-on API calls. It shows the contract implementations and type registries available from the network's Directory contract.

This is a read-only reference endpoint. It does not deploy contracts, register modules, or change token configuration.

Endpoint

GET /api/v2/system/directory

By default, the API resolves the Directory contract from the active network configuration. Send contract only when you need to read a specific Directory contract address.

Query parameterRequiredDescription
contractNoDirectory contract address to read. If omitted, the API uses the Directory address configured for the active network.

Quick request

curl "$API_URL/api/v2/system/directory" \
  --header "X-Api-Key: $API_TOKEN"

Read an explicit Directory contract:

curl "$API_URL/api/v2/system/directory?contract=0x1111111111111111111111111111111111111111" \
  --header "X-Api-Key: $API_TOKEN"

Response shape

A successful response uses the single-resource envelope. The data field contains one directory object or null.

{
  "data": {
    "id": "0x1111111111111111111111111111111111111111",
    "systemImplementation": "0x2222222222222222222222222222222222222222",
    "systemAccessManagerImplementation": "0x3333333333333333333333333333333333333333",
    "forwarder": "0x4444444444444444444444444444444444444444",
    "systemFactory": "0x5555555555555555555555555555555555555555",
    "identityFactory": "0x6666666666666666666666666666666666666666",
    "identityFactoryImplementation": "0x7777777777777777777777777777777777777777",
    "identityImplementations": {
      "identityImplementation": "0x8888888888888888888888888888888888888888",
      "contractIdentityImplementation": "0x9999999999999999999999999999999999999999"
    },
    "systemImplementations": {
      "complianceImplementation": "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
      "identityRegistryImplementation": "0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
      "identityRegistryStorageImplementation": "0xcccccccccccccccccccccccccccccccccccccccc",
      "trustedIssuersRegistryImplementation": "0xdddddddddddddddddddddddddddddddddddddddd",
      "trustedIssuersMetaRegistryImplementation": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
      "topicSchemeRegistryImplementation": "0xffffffffffffffffffffffffffffffffffffffff",
      "tokenAccessManagerImplementation": "0x1234567890123456789012345678901234567890",
      "tokenFactoryRegistryImplementation": "0x2345678901234567890123456789012345678901",
      "complianceModuleRegistryImplementation": "0x3456789012345678901234567890123456789012",
      "addonRegistryImplementation": "0x4567890123456789012345678901234567890123",
      "identityVerificationComplianceModule": "0x5678901234567890123456789012345678901234",
      "externalTokenRegistryImplementation": "0x6789012345678901234567890123456789012345"
    },
    "tokenTypes": [
      {
        "id": "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
        "typeId": "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
        "name": "Bond",
        "implementation": "0x7890123456789012345678901234567890123456",
        "factoryImplementation": "0x8901234567890123456789012345678901234567",
        "registeredAt": "2026-05-18T23:35:43.787Z",
        "isExperimental": false
      }
    ],
    "complianceModuleTypes": [
      {
        "id": "0xcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
        "typeId": "0xcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
        "name": "IdentityVerification",
        "implementation": "0x9012345678901234567890123456789012345678",
        "registeredAt": "2026-05-18T23:35:43.787Z",
        "isExperimental": false
      }
    ],
    "addonTypes": [
      {
        "id": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
        "typeId": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
        "name": "XvP",
        "factoryImplementation": "0x0123456789012345678901234567890123456789",
        "registeredAt": "2026-05-18T23:35:43.787Z",
        "isExperimental": false
      }
    ]
  },
  "links": {
    "self": "/v2/system/directory"
  }
}

The exact type names and addresses depend on the indexed Directory state for the selected network. Treat addresses as network-specific values. Do not hard-code addresses from one environment into another.

Top-level fields

FieldDescription
idDirectory contract address that the response describes.
systemImplementationDALPSystem implementation address.
systemAccessManagerImplementationSystem access manager implementation address.
forwarderTrusted forwarder address for meta-transactions.
systemFactorySystem factory address.
identityFactoryIdentity factory proxy address.
identityFactoryImplementationIdentity factory implementation address.
systemImplementationsCore registry, compliance, token access, add-on, and external token implementation addresses.
identityImplementationsIdentity and contract identity implementation addresses.
tokenTypesToken type catalog available from this Directory.
complianceModuleTypesCompliance module type catalog available from this Directory.
addonTypesAdd-on type catalog available from this Directory.

Type catalogs

tokenTypes, complianceModuleTypes, and addonTypes use the chainId and Directory address from the lookup. Each catalog therefore matches the Directory contract in data. In these arrays, id and typeId are the same bytes32 type identifier.

Use typeId to decide which type identifiers are available before making mutation calls that resolve implementations from Directory state. For example, a compliance integration can read complianceModuleTypes before registering modules through the Compliance modules API.

Null response

The endpoint returns data: null when no indexed Directory row exists for the resolved network Directory address, or for the explicit contract address you provided.

{
  "data": null,
  "links": {
    "self": "/v2/system/directory"
  }
}

A data: null response means the API did not find indexed Directory state for that address. Check that:

  1. The network configuration points to the intended Directory contract.
  2. The explicit contract value, if provided, is the Directory address for the same chain.
  3. Indexing has processed the Directory deployment and related registry rows.

Do not treat data: null as an empty catalog. An empty catalog would still return a directory object with empty arrays. data: null means the Directory row itself was not found.

When to use it

Use this endpoint when you need to:

  • Display the system contract catalog for an operator or integration health check.
  • Validate available token, compliance module, or add-on type identifiers before configuration.
  • Confirm which Directory address is backing the active network environment.
  • Diagnose why a type-based API request cannot resolve an implementation address.

For claim topic and trusted issuer setup, use Configure trusted issuers. For installed compliance module bindings, use Compliance modules API.

On this page