tZERO Institutional API

REST/JSON API giving institutional issuers and partners programmatic access to tZERO transfer-agent, tokenization and custody operations: investors and holdings, securities and cap tables, book-entry transfers, issuance requests, documents, dividends, corporate actions, voting proposals, settlement instructions, omnibus investor accounts, token deployments, custody vaults/whitelists, and HMAC-signed webhooks. Authenticated with an X-API-Key header carrying scoped permissions.

Operations 102

GET /api/v1/investors/ List investors
POST /api/v1/investors/ Create investor
GET /api/v1/investors/{id} Get investor
PATCH /api/v1/investors/{id} Update investor
GET /api/v1/investors/{id}/holdings Get investor holdings
GET /api/v1/securities/ List securities
GET /api/v1/securities/{id} Get security
GET /api/v1/securities/{id}/captable Get cap table
GET /api/v1/securities/{id}/holders List security holders
GET /api/v1/transfers/ List transfer requests
POST /api/v1/transfers/ Submit transfer request
GET /api/v1/transfers/{id} Get transfer request
POST /api/v1/transfers/batch Batch submit transfer requests
PATCH /api/v1/transfers/{id}/status Approve or reject transfer
GET /api/v1/issuances/ List issuance requests
POST /api/v1/issuances/ Submit issuance request
GET /api/v1/issuances/{id} Get issuance request
POST /api/v1/issuances/{id}/approve Approve issuance request
POST /api/v1/issuances/{id}/reject Reject issuance request
GET /api/v1/documents/ List documents
GET /api/v1/documents/{id} Get document
DELETE /api/v1/documents/{id} Delete document
GET /api/v1/documents/{id}/download Get short-lived download URL
POST /api/v1/documents/upload-url Request document upload URL
PUT /api/v1/documents/upload/{uploadToken} Confirm document upload
GET /api/v1/webhooks/events List available webhook events
GET /api/v1/webhooks/ List webhook subscriptions
POST /api/v1/webhooks/ Create webhook subscription
PATCH /api/v1/webhooks/{id} Update webhook subscription
DELETE /api/v1/webhooks/{id} Delete webhook subscription
POST /api/v1/webhooks/{id}/test Send test webhook event
GET /api/v1/settlements/ List settlement instructions
POST /api/v1/settlements/ Submit settlement instruction
GET /api/v1/settlements/{id} Get settlement instruction
POST /api/v1/settlements/{id}/approve Approve settlement instruction
POST /api/v1/settlements/{id}/reject Reject settlement instruction
POST /api/v1/settlements/{id}/cancel Cancel settlement instruction
POST /api/v1/settlements/{id}/execute Manually execute approved settlement
POST /api/v1/settlements/{id}/reverse Create reversal of an executed settlement
GET /api/v1/settlements/configs List settlement configs (issuer + per-security)
PUT /api/v1/settlements/configs Upsert settlement config (issuer default or per-security override)
GET /api/v1/investor-accounts/ List investor accounts
POST /api/v1/investor-accounts/ Create investor account (omnibus parent or sub-account)
POST /api/v1/investor-accounts/{id}/reconcile Run omnibus reconciliation snapshot (parent vs Σ(children))
GET /api/v1/dividends/ List dividends
POST /api/v1/dividends/ Declare a dividend (enters tZERO review)
GET /api/v1/dividends/{id} Get a dividend with payment rollups
GET /api/v1/dividends/{id}/funding Get USDC funding deposit instructions for a CASH dividend
GET /api/v1/dividends/{id}/reconciliation Reconcile a dividend: declared vs distributed
GET /api/v1/dividends/payment-tokens List approved payment tokens for a security
POST /api/v1/dividends/{id}/cancel Cancel a dividend
GET /api/v1/corporate-actions/ List corporate actions
POST /api/v1/corporate-actions/ Declare a corporate action (enters tZERO review)
GET /api/v1/corporate-actions/{id} Get a corporate action
POST /api/v1/corporate-actions/{id}/cancel Cancel a corporate action
GET /api/v1/proposals/ List proposals
POST /api/v1/proposals/ Create a voting proposal (enters tZERO review)
GET /api/v1/proposals/{id} Get a proposal with running tallies
GET /api/v1/proposals/{id}/results Get final results with on-chain anchors
POST /api/v1/proposals/{id}/cancel Cancel a proposal
POST /api/v1/iso/fund-orders/subscriptions
POST /api/v1/iso/fund-orders/redemptions
POST /api/v1/iso/fund-orders/subscriptions/cancel
POST /api/v1/iso/fund-orders/redemptions/cancel
GET /api/v1/tokens/ List tokens
GET /api/v1/tokens/{id} Get token
GET /api/v1/deployments/ List deployments
GET /api/v1/deployments/{id} Get deployment
GET /api/v1/deployments/{id}/operations List deployment operations
GET /api/v1/custody/vaults List custody vaults
GET /api/v1/custody/vaults/{id} Get custody vault
GET /api/v1/custody/transfers List custody transfers
GET /api/v1/custody/whitelist List whitelisted addresses
GET /api/v1/custody/whitelist/{id} Get whitelisted address
GET /api/v1/custody/vaults/{id}/balances Get live vault balances
GET /api/v1/custody/supported-assets List supported assets
POST /api/v1/custody/validate-address Validate an address
GET /api/v1/custody/estimate-fee/{assetId} Estimate network fee
GET /api/v1/custody-accounts/accounts
GET /api/v1/custody-accounts/accounts/{accountId}
GET /api/v1/custody-accounts/accounts/{accountId}/positions
GET /api/v1/custody-accounts/accounts/{accountId}/deposit-addresses
GET /api/v1/custody-accounts/accounts/{accountId}/transfers
POST /api/v1/custody-accounts/accounts/{accountId}/transfers
GET /api/v1/custody-accounts/transfers/{transferId}
POST /api/v1/custody-accounts/transfers/{transferId}/approvals
GET /api/v1/custody-accounts/accounts/{accountId}/whitelist
GET /api/v1/custody-accounts/webhooks
POST /api/v1/custody-accounts/webhooks
DELETE /api/v1/custody-accounts/webhooks/{id}
GET /api/v1/custody-accounts/events
POST /api/v1/custody-accounts/events/{id}/replay
POST /api/v1/subred/sessions Mint an embed-session token
GET /api/v1/subred/embed/me Resolve the current embed session
GET /api/v1/subred/embed/securities List eligible securities
GET /api/v1/subred/embed/wallet Get investor wallet + buying power
POST /api/v1/subred/embed/subscriptions Subscribe (buy) with USDC
POST /api/v1/subred/embed/subscriptions/{instructionId}/pay-from-balance Pay a subscription from custody balance
GET /api/v1/subred/embed/orders/{instructionId}/status Order status
POST /api/v1/subred/embed/redemptions Redeem for USDC
GET /api/v1/subred/embed/securities/{securityId}/election
PUT /api/v1/subred/embed/securities/{securityId}/election

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/institutional"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

tzero-institutional-openapi.json Raw ↑
{"openapi":"3.0.3","info":{"title":"tZERO Institutional API Documents","description":"## Overview\n\nThe **tZERO Institutional API** — programmatic access to transfer-agent, tokenization, and custody operations for institutional issuers and partners. Production base URL `api.t0direct.com`.\n\n### Authentication\nAll requests require an API key in the `X-API-Key` header. Generate keys at [app.t0kenizer.com/ta/api-keys](https://app.t0kenizer.com/ta/api-keys).\n\n```\nX-API-Key: t0k_your_api_key_here\n```\n\n### Scopes\nKeys are issued with one or more scopes. A request to an endpoint whose\nrequired scope the key lacks returns `403 FORBIDDEN`. `FULL_ACCESS` satisfies\nevery scope.\n\n**Transfer Agent**\n- `TA_READ` — Read investors, securities, holdings, documents, dividends, corporate actions, proposals\n- `TA_WRITE` — Create/update investors, submit issuances, declare dividends and corporate actions, create voting proposals\n- `TA_TRANSFERS` — Submit and manage book-entry transfers\n- `TA_ADMIN` — Administrative TA operations\n\n**Tokenization** (read-only today)\n- `TOKENS_READ` — Read token configurations and deployments\n- `DEPLOYMENTS_READ` — Read deployments and operation history\n\n> The investor registry / cap table is served by the Transfer Agent **Investors** endpoints (`TA_READ` / `TA_WRITE`).\n\n**Custody** (read-only today)\n- `CUSTODY_READ` — Read vaults, balances, transfers, and whitelisted addresses\n\n> Write scopes (`TOKENS_WRITE`, `DEPLOYMENTS_WRITE`, `PRICE_WRITE`, `CUSTODY_WRITE`, `CAPTABLE_*`) exist in the enum but are **reserved** — exposed only when those capabilities are opened to customers.\n\n**Master**\n- `FULL_ACCESS` — Satisfies all scopes (use sparingly)\n\n### Base URL\n```\nhttps://api.t0direct.com/api/v1\n```\n\n### Pagination\nList endpoints support `page` and `perPage` query parameters. Responses include a `pagination` object with `total`, `page`, `perPage`, and `totalPages`.\n\n### Idempotency\nTransfer and issuance requests support an `idempotencyKey` field. Submitting the same key twice returns the original record without creating a duplicate.\n\nDividend, corporate-action, and proposal mutations require an `Idempotency-Key` **header**. An exact retry replays the original response; reusing a key with a different payload returns `409 Conflict`.\n\n### Corporate actions, dividends & voting (review-gated)\nDeclarations submitted through `/v1/dividends`, `/v1/corporate-actions`, and `/v1/proposals` enter `PENDING_REVIEW` — a tZERO transfer-agent reviewer approves or rejects each one under a regulatory turnaround timer (SEC Rule 17Ad-2). Approved actions execute according to the security's execution target; on-chain executions (dividend creation on the claim contract, split initialization, vote anchoring) settle via tZERO's Fireblocks custody and surface transaction hashes on the entity.\n\nVoting proposals support per-token `votingMode`: `OFF_CHAIN` (transfer-agent register) or `ON_CHAIN` (record-block eligibility from token checkpoints, privacy-preserving ballot commitments, and Merkle-root anchors published on the token's chain). Investors vote in their own t0kenizer portal accounts — ballots cannot be submitted through this API. Track lifecycle via `ta.dividend.*`, `ta.corporate_action.*`, and `ta.proposal.*` webhook events.\n\n### Webhooks\nSubscribe to events at `POST /v1/webhooks`. Payloads are signed with HMAC-SHA256 using your webhook secret.","version":"1.1.0","contact":{"name":"T0kenizer API Support","email":"api@t0direct.com"}},"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-Key","description":"API key generated at app.t0kenizer.com/ta/api-keys"}},"schemas":{"PaginationMeta":{"type":"object","properties":{"total":{"type":"integer","description":"Total number of matching records"},"page":{"type":"integer","description":"Current page number"},"perPage":{"type":"integer","description":"Records per page"},"totalPages":{"type":"integer","description":"Total number of pages"}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"T0K-V1-INV-001"},"message":{"type":"string","example":"Investor not found"}}}}},"TokenConfig":{"type":"object","description":"A token configuration (the blueprint). Deployments are its on-chain instances.","properties":{"id":{"type":"string","description":"CUID"},"name":{"type":"string"},"symbol":{"type":"string"},"decimals":{"type":"integer","example":18},"initialSupply":{"type":"string","description":"Integer as string"},"supplyCap":{"type":"string","nullable":true,"description":"Integer as string"},"price":{"type":"number","nullable":true},"assetType":{"type":"string","nullable":true},"assetClass":{"type":"string","nullable":true,"description":"e.g. \"t-bill\", \"mmf\", \"private-credit\""},"tokenStandard":{"type":"string","nullable":true},"mintable":{"type":"boolean"},"burnable":{"type":"boolean"},"pausable":{"type":"boolean"},"upgradeable":{"type":"boolean"},"whitelistEnabled":{"type":"boolean"},"blacklistEnabled":{"type":"boolean"},"snapshotEnabled":{"type":"boolean"},"imported":{"type":"boolean"},"delisted":{"type":"boolean"},"lifecycleStatus":{"type":"string","example":"DRAFT"},"createdAt":{"type":"string","format":"date-time"},"deployments":{"type":"array","items":{"$ref":"#/components/schemas/def-3"}}}},"Deployment":{"type":"object","description":"An on-chain instance of a token configuration on a specific chain/network.","properties":{"id":{"type":"string"},"tokenConfigId":{"type":"string"},"chain":{"type":"string","description":"Target chain (e.g. ETHEREUM, POLYGON, BESU)"},"network":{"type":"string","description":"MAINNET / TESTNET / DEVNET"},"contractAddress":{"type":"string","nullable":true},"txHash":{"type":"string","nullable":true},"status":{"type":"string","example":"DEPLOYED"},"walletAddress":{"type":"string","nullable":true},"deployedAt":{"type":"string","format":"date-time","nullable":true},"createdAt":{"type":"string","format":"date-time"}}},"Operation":{"type":"object","description":"A logged on-chain operation against a deployment (MINT, BURN, TRANSFER, …).","properties":{"id":{"type":"string"},"operation":{"type":"string","example":"MINT"},"params":{"type":"object","nullable":true,"additionalProperties":true},"txHash":{"type":"string","nullable":true},"txStatus":{"type":"string","example":"CONFIRMED"},"error":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time"}}},"CustodyWallet":{"type":"object","description":"An asset wallet inside a custody vault.","properties":{"id":{"type":"string"},"assetId":{"type":"string","description":"Fireblocks asset id (e.g. ETH_TEST5, USDC)"},"address":{"type":"string","nullable":true},"tag":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time"}}},"CustodyVault":{"type":"object","description":"A Fireblocks-backed custody vault owned by the issuer.","properties":{"id":{"type":"string"},"name":{"type":"string"},"fireblocksVaultId":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"wallets":{"type":"array","items":{"$ref":"#/components/schemas/def-5"}},"_count":{"type":"object","properties":{"wallets":{"type":"integer"},"transfers":{"type":"integer"}}}}},"CustodyTransfer":{"type":"object","description":"A transfer of assets out of a custody vault.","properties":{"id":{"type":"string"},"vaultId":{"type":"string"},"assetId":{"type":"string"},"amount":{"type":"string","description":"Decimal as string"},"destAddress":{"type":"string"},"status":{"type":"string","example":"PENDING"},"destinationType":{"type":"string","example":"ONE_TIME_ADDRESS"},"whitelistedAddressId":{"type":"string","nullable":true},"fireblocksTxId":{"type":"string","nullable":true},"note":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time"}}},"WhitelistedAddressAsset":{"type":"object","properties":{"id":{"type":"string"},"assetId":{"type":"string"},"address":{"type":"string"},"tag":{"type":"string","nullable":true}}},"WhitelistedAddress":{"type":"object","description":"An external address approved to receive transfers from custody.","properties":{"id":{"type":"string"},"type":{"type":"string","description":"EXTERNAL / INTERNAL / CONTRACT"},"name":{"type":"string"},"status":{"type":"string","example":"ACTIVE"},"fireblocksWalletId":{"type":"string"},"approvedAt":{"type":"string","format":"date-time","nullable":true},"revokedAt":{"type":"string","format":"date-time","nullable":true},"createdAt":{"type":"string","format":"date-time"},"assets":{"type":"array","items":{"$ref":"#/components/schemas/def-8"}}}},"Investor":{"type":"object","properties":{"id":{"type":"string","description":"CUID"},"name":{"type":"string"},"email":{"type":"string","format":"email","nullable":true},"entityType":{"type":"string","enum":["INDIVIDUAL","CORPORATION","LLC","PARTNERSHIP","TRUST","FUND","DAO","OTHER"]},"jurisdiction":{"type":"string","nullable":true},"taxId":{"type":"string","nullable":true},"walletAddress":{"type":"string","nullable":true},"sharesOwned":{"type":"string","description":"Integer as string"},"ownershipPct":{"type":"string","nullable":true},"kycStatus":{"type":"string","enum":["NOT_STARTED","PENDING","APPROVED","REJECTED","EXPIRED"]},"kycVerifiedAt":{"type":"string","format":"date-time","nullable":true},"kycExpiresAt":{"type":"string","format":"date-time","nullable":true},"kybStatus":{"type":"string","nullable":true},"accreditationStatus":{"type":"string","enum":["NONE","PENDING","VERIFIED","EXPIRED"]},"accreditationVerifiedAt":{"type":"string","format":"date-time","nullable":true},"accreditationExpiresAt":{"type":"string","format":"date-time","nullable":true},"hasPortalAccount":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"}}},"InvestorHolding":{"type":"object","properties":{"securityId":{"type":"string","nullable":true},"securityName":{"type":"string","nullable":true},"securityType":{"type":"string","nullable":true,"description":"Security type (e.g. COMMON_STOCK)"},"symbol":{"type":"string","nullable":true,"description":"Security ticker symbol"},"shares":{"type":"string","description":"Integer as string"},"percentage":{"type":"string","nullable":true,"description":"Percentage of shares outstanding"},"lastSyncAt":{"type":"string","format":"date-time","nullable":true,"description":"Last chain-sync timestamp"}}},"Security":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"symbol":{"type":"string","nullable":true},"type":{"type":"string"},"status":{"type":"string"},"description":{"type":"string","nullable":true},"totalShares":{"type":"string","nullable":true,"description":"Total authorized shares (integer as string)"},"sharesOutstanding":{"type":"string","nullable":true},"parValue":{"type":"string","nullable":true},"cusip":{"type":"string","nullable":true},"isin":{"type":"string","nullable":true},"regType":{"type":"string","nullable":true,"description":"Regulatory exemption type (e.g. REG_D_506C)"},"contractAddress":{"type":"string","nullable":true,"description":"On-chain token contract address"},"chain":{"type":"string","nullable":true,"description":"Chain the token contract lives on"},"dividendRate":{"type":"number","nullable":true,"description":"Annual dividend rate %"},"liquidationPref":{"type":"number","nullable":true,"description":"Liquidation preference multiplier"},"holders":{"type":"array","items":{"$ref":"#/components/schemas/def-13"},"description":"Top 10 holders — present on the detail endpoint only"},"createdAt":{"type":"string","format":"date-time"}}},"SecurityHolder":{"type":"object","properties":{"rank":{"type":"integer"},"walletAddress":{"type":"string","nullable":true,"description":"On-chain holder wallet address"},"investorId":{"type":"string","nullable":true},"investorName":{"type":"string","nullable":true},"shares":{"type":"string","description":"Shares held (integer as string)"},"percentage":{"type":"string","nullable":true,"description":"Percentage of shares outstanding"},"lastSyncAt":{"type":"string","format":"date-time","nullable":true,"description":"Last chain-sync timestamp"}}},"TransferRequest":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string","enum":["PENDING","APPROVED","REJECTED"]},"payload":{"type":"object","description":"The transfer details captured at submission time.","properties":{"fromInvestorId":{"type":"string"},"toInvestorId":{"type":"string"},"securityId":{"type":"string"},"quantity":{"type":"string","description":"Number of shares as numeric string"},"price":{"type":"string","nullable":true,"description":"Price per unit as numeric string"},"signature":{"type":"object","nullable":true,"properties":{"status":{"type":"string"},"signature":{"type":"string"},"date":{"type":"string"}}},"idempotencyKey":{"type":"string","nullable":true},"batchIdempotencyId":{"type":"string","nullable":true,"description":"Outer batch idempotency id (batch submissions only)"},"matchedOn":{"type":"string","format":"date-time","nullable":true},"settledOn":{"type":"string","format":"date-time","nullable":true}},"additionalProperties":true},"requestedBy":{"type":"string"},"reviewedBy":{"type":"string","nullable":true},"rejectionReason":{"type":"string","nullable":true},"resolvedAt":{"type":"string","format":"date-time","nullable":true},"createdAt":{"type":"string","format":"date-time"}}},"IssuanceRequest":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string","enum":["PENDING","APPROVED","REJECTED"]},"payload":{"type":"object","description":"The issuance request details captured at submission time.","properties":{"investorId":{"type":"string"},"securityId":{"type":"string"},"quantity":{"type":"string","description":"Number of shares as numeric string"},"issuanceDate":{"type":"string","description":"Issuance date (ISO date or date-time)"},"recipientType":{"type":"string","description":"Why the issuance was submitted (e.g. PRIMARY_OFFERING)"},"costBasis":{"type":"string","nullable":true,"description":"Cost basis as numeric string"},"notes":{"type":"string","nullable":true},"idempotencyKey":{"type":"string","nullable":true}},"additionalProperties":true},"securityId":{"type":"string"},"investorId":{"type":"string"},"shares":{"type":"string"},"pricePerShare":{"type":"string","nullable":true},"consideration":{"type":"string","nullable":true},"memo":{"type":"string","nullable":true},"idempotencyKey":{"type":"string","nullable":true},"metadata":{"type":"object","nullable":true},"requestedBy":{"type":"string"},"reviewedBy":{"type":"string","nullable":true},"rejectionReason":{"type":"string","nullable":true},"resolvedAt":{"type":"string","format":"date-time","nullable":true},"createdAt":{"type":"string","format":"date-time"},"webhookId":{"type":"string","nullable":true,"description":"Correlation id echoed on submission responses — matches the issuanceId in ta.issuance.* webhook events"}}},"Document":{"type":"object","properties":{"id":{"type":"string"},"investorId":{"type":"string"},"investorName":{"type":"string","nullable":true,"description":"Name of the owning investor"},"documentType":{"type":"string"},"fileName":{"type":"string","nullable":true,"description":"Sanitized original filename"},"fileSize":{"type":"integer","nullable":true,"description":"File size in bytes"},"status":{"type":"string","nullable":true,"description":"Upload status (lowercased): pending / confirmed / rejected"},"uploadedBy":{"type":"string","nullable":true,"description":"Identity that initiated the upload"},"label":{"type":"string","nullable":true},"storageUrl":{"type":"string","nullable":true},"mimeType":{"type":"string","nullable":true},"sizeBytes":{"type":"integer","nullable":true},"createdAt":{"type":"string","format":"date-time"}}},"WebhookSubscription":{"type":"object","properties":{"id":{"type":"string"},"url":{"type":"string","format":"uri"},"events":{"type":"array","items":{"type":"string"}},"isActive":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"def-0":{"type":"object","properties":{"total":{"type":"integer","description":"Total number of matching records"},"page":{"type":"integer","description":"Current page number"},"perPage":{"type":"integer","description":"Records per page"},"totalPages":{"type":"integer","description":"Total number of pages"}},"title":"PaginationMeta"},"def-1":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"T0K-V1-INV-001"},"message":{"type":"string","example":"Investor not found"}}}},"title":"ErrorResponse"},"def-2":{"type":"object","description":"A token configuration (the blueprint). Deployments are its on-chain instances.","properties":{"id":{"type":"string","description":"CUID"},"name":{"type":"string"},"symbol":{"type":"string"},"decimals":{"type":"integer","example":18},"initialSupply":{"type":"string","description":"Integer as string"},"supplyCap":{"type":"string","nullable":true,"description":"Integer as string"},"price":{"type":"number","nullable":true},"assetType":{"type":"string","nullable":true},"assetClass":{"type":"string","nullable":true,"description":"e.g. \"t-bill\", \"mmf\", \"private-credit\""},"tokenStandard":{"type":"string","nullable":true},"mintable":{"type":"boolean"},"burnable":{"type":"boolean"},"pausable":{"type":"boolean"},"upgradeable":{"type":"boolean"},"whitelistEnabled":{"type":"boolean"},"blacklistEnabled":{"type":"boolean"},"snapshotEnabled":{"type":"boolean"},"imported":{"type":"boolean"},"delisted":{"type":"boolean"},"lifecycleStatus":{"type":"string","example":"DRAFT"},"createdAt":{"type":"string","format":"date-time"},"deployments":{"type":"array","items":{"$ref":"#/components/schemas/def-3"}}},"title":"TokenConfig"},"def-3":{"type":"object","description":"An on-chain instance of a token configuration on a specific chain/network.","properties":{"id":{"type":"string"},"tokenConfigId":{"type":"string"},"chain":{"type":"string","description":"Target chain (e.g. ETHEREUM, POLYGON, BESU)"},"network":{"type":"string","description":"MAINNET / TESTNET / DEVNET"},"contractAddress":{"type":"string","nullable":true},"txHash":{"type":"string","nullable":true},"status":{"type":"string","example":"DEPLOYED"},"walletAddress":{"type":"string","nullable":true},"deployedAt":{"type":"string","format":"date-time","nullable":true},"createdAt":{"type":"string","format":"date-time"}},"title":"Deployment"},"def-4":{"type":"object","description":"A logged on-chain operation against a deployment (MINT, BURN, TRANSFER, …).","properties":{"id":{"type":"string"},"operation":{"type":"string","example":"MINT"},"params":{"type":"object","nullable":true,"additionalProperties":true},"txHash":{"type":"string","nullable":true},"txStatus":{"type":"string","example":"CONFIRMED"},"error":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time"}},"title":"Operation"},"def-5":{"type":"object","description":"An asset wallet inside a custody vault.","properties":{"id":{"type":"string"},"assetId":{"type":"string","description":"Fireblocks asset id (e.g. ETH_TEST5, USDC)"},"address":{"type":"string","nullable":true},"tag":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time"}},"title":"CustodyWallet"},"def-6":{"type":"object","description":"A Fireblocks-backed custody vault owned by the issuer.","properties":{"id":{"type":"string"},"name":{"type":"string"},"fireblocksVaultId":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"wallets":{"type":"array","items":{"$ref":"#/components/schemas/def-5"}},"_count":{"type":"object","properties":{"wallets":{"type":"integer"},"transfers":{"type":"integer"}}}},"title":"CustodyVault"},"def-7":{"type":"object","description":"A transfer of assets out of a custody vault.","properties":{"id":{"type":"string"},"vaultId":{"type":"string"},"assetId":{"type":"string"},"amount":{"type":"string","description":"Decimal as string"},"destAddress":{"type":"string"},"status":{"type":"string","example":"PENDING"},"destinationType":{"type":"string","example":"ONE_TIME_ADDRESS"},"whitelistedAddressId":{"type":"string","nullable":true},"fireblocksTxId":{"type":"string","nullable":true},"note":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time"}},"title":"CustodyTransfer"},"def-8":{"type":"object","properties":{"id":{"type":"string"},"assetId":{"type":"string"},"address":{"type":"string"},"tag":{"type":"string","nullable":true}},"title":"WhitelistedAddressAsset"},"def-9":{"type":"object","description":"An external address approved to receive transfers from custody.","properties":{"id":{"type":"string"},"type":{"type":"string","description":"EXTERNAL / INTERNAL / CONTRACT"},"name":{"type":"string"},"status":{"type":"string","example":"ACTIVE"},"fireblocksWalletId":{"type":"string"},"approvedAt":{"type":"string","format":"date-time","nullable":true},"revokedAt":{"type":"string","format":"date-time","nullable":true},"createdAt":{"type":"string","format":"date-time"},"assets":{"type":"array","items":{"$ref":"#/components/schemas/def-8"}}},"title":"WhitelistedAddress"},"def-10":{"type":"object","properties":{"id":{"type":"string","description":"CUID"},"name":{"type":"string"},"email":{"type":"string","format":"email","nullable":true},"entityType":{"type":"string","enum":["INDIVIDUAL","CORPORATION","LLC","PARTNERSHIP","TRUST","FUND","DAO","OTHER"]},"jurisdiction":{"type":"string","nullable":true},"taxId":{"type":"string","nullable":true},"walletAddress":{"type":"string","nullable":true},"sharesOwned":{"type":"string","description":"Integer as string"},"ownershipPct":{"type":"string","nullable":true},"kycStatus":{"type":"string","enum":["NOT_STARTED","PENDING","APPROVED","REJECTED","EXPIRED"]},"kycVerifiedAt":{"type":"string","format":"date-time","nullable":true},"kycExpiresAt":{"type":"string","format":"date-time","nullable":true},"kybStatus":{"type":"string","nullable":true},"accreditationStatus":{"type":"string","enum":["NONE","PENDING","VERIFIED","EXPIRED"]},"accreditationVerifiedAt":{"type":"string","format":"date-time","nullable":true},"accreditationExpiresAt":{"type":"string","format":"date-time","nullable":true},"hasPortalAccount":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"}},"title":"Investor"},"def-11":{"type":"object","properties":{"securityId":{"type":"string","nullable":true},"securityName":{"type":"string","nullable":true},"securityType":{"type":"string","nullable":true,"description":"Security type (e.g. COMMON_STOCK)"},"symbol":{"type":"string","nullable":true,"description":"Security ticker symbol"},"shares":{"type":"string","description":"Integer as string"},"percentage":{"type":"string","nullable":true,"description":"Percentage of shares outstanding"},"lastSyncAt":{"type":"string","format":"date-time","nullable":true,"description":"Last chain-sync timestamp"}},"title":"InvestorHolding"},"def-12":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"symbol":{"type":"string","nullable":true},"type":{"type":"string"},"status":{"type":"string"},"description":{"type":"string","nullable":true},"totalShares":{"type":"string","nullable":true,"description":"Total authorized shares (integer as string)"},"sharesOutstanding":{"type":"string","nullable":true},"parValue":{"type":"string","nullable":true},"cusip":{"type":"string","nullable":true},"isin":{"type":"string","nullable":true},"regType":{"type":"string","nullable":true,"description":"Regulatory exemption type (e.g. REG_D_506C)"},"contractAddress":{"type":"string","nullable":true,"description":"On-chain token contract address"},"chain":{"type":"string","nullable":true,"description":"Chain the token contract lives on"},"dividendRate":{"type":"number","nullable":true,"description":"Annual dividend rate %"},"liquidationPref":{"type":"number","nullable":true,"description":"Liquidation preference multiplier"},"holders":{"type":"array","items":{"$ref":"#/components/schemas/def-13"},"description":"Top 10 holders — present on the detail endpoint only"},"createdAt":{"type":"string","format":"date-time"}},"title":"Security"},"def-13":{"type":"object","properties":{"rank":{"type":"integer"},"walletAddress":{"type":"string","nullable":true,"description":"On-chain holder wallet address"},"investorId":{"type":"string","nullable":true},"investorName":{"type":"string","nullable":true},"shares":{"type":"string","description":"Shares held (integer as string)"},"percentage":{"type":"string","nullable":true,"description":"Percentage of shares outstanding"},"lastSyncAt":{"type":"string","format":"date-time","nullable":true,"description":"Last chain-sync timestamp"}},"title":"SecurityHolder"},"def-14":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string","enum":["PENDING","APPROVED","REJECTED"]},"payload":{"type":"object","description":"The transfer details captured at submission time.","properties":{"fromInvestorId":{"type":"string"},"toInvestorId":{"type":"string"},"securityId":{"type":"string"},"quantity":{"type":"string","description":"Number of shares as numeric string"},"price":{"type":"string","nullable":true,"description":"Price per unit as numeric string"},"signature":{"type":"object","nullable":true,"properties":{"status":{"type":"string"},"signature":{"type":"string"},"date":{"type":"string"}}},"idempotencyKey":{"type":"string","nullable":true},"batchIdempotencyId":{"type":"string","nullable":true,"description":"Outer batch idempotency id (batch submissions only)"},"matchedOn":{"type":"string","format":"date-time","nullable":true},"settledOn":{"type":"string","format":"date-time","nullable":true}},"additionalProperties":true},"requestedBy":{"type":"string"},"reviewedBy":{"type":"string","nullable":true},"rejectionReason":{"type":"string","nullable":true},"resolvedAt":{"type":"string","format":"date-time","nullable":true},"createdAt":{"type":"string","format":"date-time"}},"title":"TransferRequest"},"def-15":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string","enum":["PENDING","APPROVED","REJECTED"]},"payload":{"type":"object","description":"The issuance request details captured at submission time.","properties":{"investorId":{"type":"string"},"securityId":{"type":"string"},"quantity":{"type":"string","description":"Number of shares as numeric string"},"issuanceDate":{"type":"string","description":"Issuance date (ISO date or date-time)"},"recipientType":{"type":"string","description":"Why the issuance was submitted (e.g. PRIMARY_OFFERING)"},"costBasis":{"type":"string","nullable":true,"description":"Cost basis as numeric string"},"notes":{"type":"string","nullable":true},"idempotencyKey":{"type":"string","nullable":true}},"additionalProperties":true},"securityId":{"type":"string"},"investorId":{"type":"string"},"shares":{"type":"string"},"pricePerShare":{"type":"string","nullable":true},"consideration":{"type":"string","nullable":true},"memo":{"type":"string","nullable":true},"idempotencyKey":{"type":"string","nullable":true},"metadata":{"type":"object","nullable":true},"requestedBy":{"type":"string"},"reviewedBy":{"type":"string","nullable":true},"rejectionReason":{"type":"string","nullable":true},"resolvedAt":{"type":"string","format":"date-time","nullable":true},"createdAt":{"type":"string","format":"date-time"},"webhookId":{"type":"string","nullable":true,"description":"Correlation id echoed on submission responses — matches the issuanceId in ta.issuance.* webhook events"}},"title":"IssuanceRequest"},"def-16":{"type":"object","properties":{"id":{"type":"string"},"investorId":{"type":"string"},"investorName":{"type":"string","nullable":true,"description":"Name of the owning investor"},"documentType":{"type":"string"},"fileName":{"type":"string","nullable":true,"description":"Sanitized original filename"},"fileSize":{"type":"integer","nullable":true,"description":"File size in bytes"},"status":{"type":"string","nullable":true,"description":"Upload status (lowercased): pending / confirmed / rejected"},"uploadedBy":{"type":"string","nullable":true,"description":"Identity that initiated the upload"},"label":{"type":"string","nullable":true},"storageUrl":{"type":"string","nullable":true},"mimeType":{"type":"string","nullable":true},"sizeBytes":{"type":"integer","nullable":true},"createdAt":{"type":"string","format":"date-time"}},"title":"Document"},"def-17":{"type":"object","properties":{"id":{"type":"string"},"url":{"type":"string","format":"uri"},"events":{"type":"array","items":{"type":"string"}},"isActive":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"title":"WebhookSubscription"}}},"paths":{"/api/v1/investors/":{"get":{"summary":"List investors","tags":["Investors"],"description":"Returns a paginated list of investors for the authenticated issuer.","parameters":[{"schema":{"type":"integer","default":1,"minimum":1},"in":"query","name":"page","required":false,"description":"Page number"},{"schema":{"type":"integer","default":50,"minimum":1,"maximum":200},"in":"query","name":"perPage","required":false,"description":"Results per page"},{"schema":{"type":"string","enum":["NOT_STARTED","PENDING","APPROVED","REJECTED","EXPIRED"]},"in":"query","name":"kycStatus","required":false,"description":"Filter by KYC status"},{"schema":{"type":"string","enum":["NONE","PENDING","VERIFIED","EXPIRED"]},"in":"query","name":"accreditationStatus","required":false,"description":"Filter by accreditation status"},{"schema":{"type":"string","enum":["INDIVIDUAL","CORPORATION","LLC","PARTNERSHIP","TRUST","FUND","DAO","OTHER"]},"in":"query","name":"entityType","required":false,"description":"Filter by entity type"},{"schema":{"type":"string"},"in":"query","name":"search","required":false,"description":"Search by name or email"}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/def-10"}},"pagination":{"$ref":"#/components/schemas/def-0"}}}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/def-1"}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/def-1"}}}}}},"post":{"summary":"Create investor","tags":["Investors"],"description":"Creates a new investor record for the authenticated issuer.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["name"],"properties":{"name":{"type":"string","minLength":1,"maxLength":200,"description":"Investor full name or entity name"},"email":{"type":"string","format":"email","nullable":true,"description":"Contact email address"},"entityType":{"type":"string","enum":["INDIVIDUAL","CORPORATION","LLC","PARTNERSHIP","TRUST","FUND","DAO","OTHER"],"default":"INDIVIDUAL","description":"Legal entity type"},"jurisdiction":{"type":"string","maxLength":100,"nullable":true,"description":"Country or state of jurisdiction"},"taxId":{"type":"string","maxLength":100,"nullable":true,"description":"Tax identification number (EIN, SSN, etc.)"},"walletAddress":{"type":"string","maxLength":200,"nullable":true,"description":"Blockchain wallet address"},"sharesOwned":{"type":"string","pattern":"^\\d+$","description":"Total shares owned — non-negative integer as string"},"kycStatus":{"type":"string","enum":["NOT_STARTED","PENDING","APPROVED","REJECTED","EXPIRED"],"default":"NOT_STARTED","description":"KYC verification status"},"accreditationStatus":{"type":"string","enum":["NONE","PENDING","VERIFIED","EXPIRED"],"default":"NONE","description":"Investor accreditation status"},"notes":{"type":"string","maxLength":5000,"nullable":true,"description":"Internal notes"}}}}}},"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/def-10"}}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/def-1"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/def-1"}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/def-1"}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/def-1"}}}}}}},"/api/v1/investors/{id}":{"ge

# --- truncated at 32 KB (87 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/tzero/refs/heads/main/openapi/tzero-institutional-openapi.json