API reference
Access the OpenAPI specification and generate type-safe clients for integrating with the DALP platform programmatically.
The DALP platform exposes a complete REST API with an auto-generated OpenAPI 3.x specification. You can explore endpoints interactively, generate client SDKs for your language, or integrate with API testing tools.

OpenAPI specification endpoint
The OpenAPI spec is served at your platform's /api/ path:
Open API Explorer
This endpoint returns a JSON document conforming to the OpenAPI 3.x specification. The spec includes:
- Endpoint definitions – All available routes organized by namespace (token, system, user, etc.)
- Request schemas – Parameter types, validation rules, and required fields
- Response schemas – Return types for successful responses and error codes
- Authentication – Security scheme using
X-Api-Keyheader - Examples – Sample requests and responses for common operations
Viewing the specification
In your browser:
Visit /api on your platform (e.g., https://your-platform.example.com/api) to see the interactive API documentation powered by OpenAPI Reference Plugin.
With curl:
curl https://your-platform.example.com/openapi.json | jqIn Postman/Insomnia:
Import the OpenAPI spec URL to auto-generate a collection with all endpoints configured.
Authentication
All API requests require authentication, either via an API key in the X-Api-Key header or a session cookie. When using session-based (cookie) authentication, sensitive operations that trigger blockchain transactions also require wallet verification. When using API key authentication, wallet verification is skipped automatically — the walletVerification field can be omitted.
See Getting started for API key creation and client configuration.
Response headers
Transaction hash header
Mutation operations that submit blockchain transactions return the transaction hash in the X-Transaction-Hash response header.
The API automatically waits for transaction confirmation—you typically don't need this header. However, if you receive a CONFIRMATION_TIMEOUT error, use the hash to check whether the transaction eventually succeeded before retrying.
See Transaction tracking for timeout recovery patterns.
API namespaces
The API is organized into logical namespaces, each containing related procedures:
| Namespace | Description | Example operations |
|---|---|---|
| token | Token CRUD, supply management, compliance, stats | token.create, token.mint, token.burn, token.transfer, token.freezeAddress |
| transaction | Blockchain transaction status tracking | transaction.read |
| system | Platform infrastructure (access control, identity, claims) | system.accessManager.grantRole, system.identity.register, system.trustedIssuers.create |
| user | User profile and organization membership | user.me, user.update |
| account | Blockchain wallet and identity management | account.identity, account.claims |
| actions | Scheduled tasks and executable operations | actions.list, actions.read |
| addons | Optional features (token sale, fixed yield) | addons.tokenSale.create, addons.fixedYield.configure |
| contacts | Address book for frequent recipients | contacts.list, contacts.create |
| exchangeRates | Foreign exchange rates for multi-currency assets | exchangeRates.list, exchangeRates.convert |
| search | Global search across tokens, contacts, transactions | search.query |
| settings | Platform configuration and preferences | settings.get, settings.update |
| externalToken | Import and track tokens from other systems | externalToken.register, externalToken.list |
| auth | Better Auth endpoints (sign-in, sessions, passkeys) | /auth/sign-in, /auth/session, /auth/passkey/create |
Each namespace is prefixed in the API path. For example, token.create maps to POST /api/token/create.
User statistics data sources
User statistics endpoints (user.stats, user.statsUserCount, user.statsGrowthOverTime) report counts based on
organization membership data in the DALP database. Recent activity is derived from each member's most recent login
timestamp, falling back to their created date when login history is unavailable.
TypeScript SDK
Generate a type-safe client from the OpenAPI specification using @hey-api/openapi-ts. The generated SDK provides full IntelliSense, request/response types, and BigDecimal helpers.
See Getting started for SDK generation and client configuration.
Using with API tools
Swagger UI
Swagger UI provides an interactive API explorer:
- Open
/apiin your browser (e.g.,https://your-platform.example.com/api) - The OpenAPI Reference Plugin serves a styled documentation page
- Expand endpoint groups to see request schemas and examples
- Click "Try it out" to execute requests directly from the browser
Redoc
For a cleaner, read-only documentation view:
- Download the OpenAPI spec:
curl https://your-platform.example.com/openapi.json > openapi.json - Serve with Redoc:
npx @redocly/cli preview-docs openapi.json - Open
http://localhost:8080in your browser
Postman
Import the OpenAPI spec into Postman:
- Click Import in Postman
- Select Link tab
- Paste:
https://your-platform.example.com/openapi.json - Click Continue → Import
- Configure the collection's authorization with your API key:
- Auth Type: API Key
- Key:
X-Api-Key - Value:
sm_dalp_xxxxxxxxxxxxxxxx - Add to: Header
Insomnia
Import the OpenAPI spec into Insomnia:
- Click Create → Import
- Paste:
https://your-platform.example.com/openapi.json - Click Scan → Import
- Add an environment variable for
X-Api-Keyheader
curl examples
Fetch user profile:
curl -X POST https://your-platform.example.com/api/user/me \
-H "X-Api-Key: sm_dalp_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{}'List tokens:
curl -X POST https://your-platform.example.com/api/token \
-H "X-Api-Key: sm_dalp_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"limit": 10, "offset": 0}'Create a token (API key auth — no walletVerification needed):
curl -X POST https://your-platform.example.com/api/token/create \
-H "X-Api-Key: sm_dalp_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"type": "stablecoin",
"name": "Test USD Coin",
"symbol": "TUSD",
"decimals": 6,
"countryCode": "840",
"priceCurrency": "USD",
"basePrice": ["100", 2],
"initialModulePairs": []
}'When using session-based authentication, add the walletVerification field:
curl -X POST https://your-platform.example.com/api/token/create \
-H "Cookie: session=..." \
-H "Content-Type: application/json" \
-d '{
"type": "stablecoin",
"name": "Test USD Coin",
"symbol": "TUSD",
"decimals": 6,
"countryCode": "840",
"priceCurrency": "USD",
"basePrice": ["100", 2],
"initialModulePairs": [],
"walletVerification": {
"verificationType": "PINCODE",
"secretVerificationCode": "123456"
}
}'Generating client SDKs
Use the OpenAPI spec to generate clients for languages beyond TypeScript.
Python (openapi-generator)
openapi-generator-cli generate \
-i https://your-platform.example.com/openapi.json \
-g python \
-o ./dalp-python-clientGo
openapi-generator-cli generate \
-i https://your-platform.example.com/openapi.json \
-g go \
-o ./dalp-go-clientC# / .NET
openapi-generator-cli generate \
-i https://your-platform.example.com/openapi.json \
-g csharp-netcore \
-o ./dalp-csharp-clientJava
openapi-generator-cli generate \
-i https://your-platform.example.com/openapi.json \
-g java \
-o ./dalp-java-clientNote: Generated clients may require manual adjustments for BigInt/BigDecimal serialization. The TypeScript SDK includes toBigDecimal() and fromBigDecimal() helpers for this purpose.
Error handling
The API returns standardized HTTP status codes and machine-readable error codes. Errors include detailed messages and contextual data to help diagnose issues.
See Error handling for the complete error reference, retry strategies, and blockchain revert reasons.
Next steps
- Getting started – Create an API key and configure the TypeScript client
- Error handling – Handle errors and implement retry strategies
- Transaction tracking – Recover from confirmation timeouts
- Token lifecycle – Visual flowcharts for token operations