Global search API reference
Run one permission-aware query across contacts, tokens, users, and system contracts in the active system through the DALP Platform API, with results grouped by section.
Global search answers one question for an operator: "where is this name, symbol, or address in the system I am working in?" Instead of calling each resource endpoint on its own and stitching the results together, you send one query and read back a single response grouped into sections, one per resource type. The Console search palette uses this endpoint, and you can call it directly to build the same experience in your own application.
This surface is read-only. It returns matches that already exist. It does not create, change, or delete anything.
Endpoint
| Endpoint | Use it for |
|---|---|
GET /api/v2/search-results | Search contacts, tokens, users, and system contracts in the active system. |
The endpoint uses the single-resource envelope: data holds the result, and links.self echoes the request path. The active organisation and system context bound every search, as described in Organization and system scope.
Query parameters
The query and its limits are nested under a query object, so each parameter is sent with bracket notation.
| Parameter | Type | Required | Description |
|---|---|---|---|
query[query] | string | yes | The search term. Trimmed, between 2 and 120 characters. |
query[limits][contacts] | integer | no | Maximum contact results. Between 1 and 50. Defaults to 10. |
query[limits][tokens] | integer | no | Maximum token results. Between 1 and 50. Defaults to 10. |
query[limits][users] | integer | no | Maximum user results. Between 1 and 50. Defaults to 10. |
query[limits][systemContracts] | integer | no | Maximum system-contract results. Between 1 and 50. Defaults to 10. |
A term shorter than 2 characters or longer than 120 is rejected before the search runs, so a single keystroke does not trigger a backend call. Each section has its own limit, so you can ask for more tokens than users in the same request without changing the others.
Response sections
The response is a list of sections, one per result type. A section appears only when it has at least one match, so an empty category is left out rather than returned as an empty array. Each section carries a type and a homogeneous items list.
| Section type | Items |
|---|---|
contacts | Address-book contacts whose name or wallet matches the term. |
tokens | Tokens whose name, symbol, or address matches the term. |
users | Platform users whose name or wallet matches the term. |
systemContracts | Registered system contracts, such as factories and registries. |
Read the type field to decide how to render each section, rather than relying on position. When no section matches, data.sections is an empty list.
What each section returns
Each section is scoped to what the caller is allowed to see, so two operators running the same query in the same system can get different results.
Contacts
Contacts come from the caller's own address book in the active organisation. The match runs against contact names and wallet addresses, and never reaches another user's address book. Each item carries the contact id, name, and wallet.
Tokens
Token results depend on the caller's roles. A user who holds any system role sees token matches from across the active system. A user with no system role sees only the tokens they actually hold in that system. The match runs against token name, symbol, and address. Each item carries the token's identifying fields, including its address id, name, and symbol. For the full token shape, see the token endpoints.
Users
User results appear only when the caller holds the user-search permission. The match runs against user name and wallet. Each item carries the user id, name, wallet, signingAddress, executorAddress, and role.
When the term is a wallet address that does not match a user directly, the platform resolves it through the on-chain identity registry and returns the user who owns that identity. An address pasted from an event therefore still resolves to a name. When the term matches the caller's own name, email, wallet, or role, the caller is placed at the top of the user results.
System contracts
System contracts are the indexed contracts that make up a system, such as token factories, registries, and compliance modules. The platform surfaces them so a client can put a readable label on a raw address that an operator meets in an event but that belongs to no token, account, or contact. Each item carries the contract id (lowercased address), a human-readable name, and a contractType.
Run a search
GET /api/v2/search-results runs the search and returns the matching sections.
curl --globoff "https://your-platform.example.com/api/v2/search-results?query[query]=bond" \
-H "x-api-key: YOUR_API_KEY"{
"data": {
"sections": [
{
"type": "contacts",
"items": [
{
"id": "8a3b8a14-8d50-4a52-a7db-2f4a7c2a8e5f",
"name": "Northwind Treasury",
"wallet": "0x71C7656EC7ab88b098defB751B7401B5f6d8976F"
}
]
},
{
"type": "tokens",
"items": [
{
"id": "0x2546BcD3c84621e976D8185a91A922aE77ECEc30",
"name": "Series A Bond",
"symbol": "BOND"
}
]
},
{
"type": "systemContracts",
"items": [
{
"id": "0x5fbdb2315678afecb367f032d93f642f64180aa3",
"name": "Bond Factory",
"contractType": "BondFactory"
}
]
}
]
},
"links": {
"self": "/v2/search-results"
}
}To cap a single section, add its limit. This request asks for up to 25 token matches and leaves the other sections at their default of 10.
curl --globoff "https://your-platform.example.com/api/v2/search-results?query[query]=treasury&query[limits][tokens]=25" \
-H "x-api-key: YOUR_API_KEY"When to use it
Use this endpoint when you need to:
- Build a search box or command palette that finds contacts, tokens, users, and system contracts in one call.
- Turn a raw address from an event or a transaction into a readable label, whether it belongs to a contact, a user, a token, or a system contract.
- Offer autocomplete that respects each operator's permissions without writing the section-by-section permission logic yourself.
To search one resource type with full filtering, sorting, and pagination instead, use that resource's list endpoint, such as address book contacts or the token endpoints. To use the same search from the Console, see Global search.
Actions API
List the pending and historical operational actions across an organization or one token through the DALP Platform API, with status, type, and per-action metadata for review and execution.
Metadata resolver API
Resolve a content-addressed metadata hash into its payload through the DALP Platform API, with the bytes32 hash parameter, the resolved content type, the base64 payload, and the not-found error.