Skip to main content
Pre-release — contact your Fortary account team for access.
The API uses stable, human-readable identifiers and a small set of consistent data-format rules across every endpoint. Learning them once means you can read any response.

Resource identifiers

Resources are identified by opaque, prefixed strings rather than raw database IDs. The prefix tells you the resource type:
PrefixResource
vault_A vault, e.g. vault_3f8a2c1d9b
Resource IDs are lowercase and URL-safe (a–z, 0–9, _). Treat them as opaque — don’t parse or construct them; store and pass back the exact string you received.

Networks

Networks are identified by friendly names from a fixed, validated set — not chain IDs or CAIP-2 strings. Mainnets use the chain name; test networks use a composite name:
KindExamples
MainnetEthereum, Bitcoin, Solana, Avalanche
TestnetEthereumSepolia, BaseSepolia, PolygonAmoy
These names are validated against a closed list, so an unknown network name is rejected rather than silently accepted. The networks available to your organization are returned by the GET /v1/networks endpoint, and new networks are added as Fortary supports them.

Assets

Assets use a structured identifier that combines the network, the token type, and — for tokens — the on-chain address:
{network}/{tokenType}[:{address}]
For example:
  • Ethereum/erc20:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 — an ERC-20 token on Ethereum
  • Bitcoin/native — the network’s native asset
Unlike resource IDs, asset identifiers are structured and readable: they contain the friendly network name, / and : separators, and the token address may be mixed-case (EIP-55 checksummed).

Data-format conventions

Every response follows these rules:
  • Amounts are strings. All monetary values — token amounts and fiat — are JSON strings, never numbers, so no precision is lost on large or high-decimal values. Parse them with a decimal library, not a float.
  • Timestamps are UTC ISO 8601 with a Z suffix, e.g. 2026-01-14T09:32:07Z.
  • Absent values are explicit null. A documented field is always present in the response; when it has no value it is null rather than omitted, so the shape of a response is stable.
  • Field names are camelCase, e.g. nextCursor, createdAt, correlationId.