Documentation Index
Fetch the complete documentation index at: https://docs.superform.xyz/llms.txt
Use this file to discover all available pages before exploring further.
SuperVaults exposes ~113 endpoints across three backend services. All share a single JWT auth model issued by Dynamic.xyz.
Backend Services
| Service | Language | Base URL | OpenAPI Spec |
|---|
| Erebor | Go | https://erebor.superform.xyz | ✅ Available |
| Strategy Engine | Go | https://strategy.superform.xyz | ✅ Available |
| OMS | Go | https://oms.superform.xyz | ✅ Available |
Authentication
All endpoints except explicitly public ones require a Bearer JWT:
Authorization: Bearer <jwt>
The JWT is issued by Dynamic.xyz upon wallet connection. See Authentication for the full flow.
Public Endpoints
| Endpoint | Backend |
|---|
GET /api/v1/public/vaults | Erebor |
GET /api/v1/registry/token-assets | Erebor |
On-Chain Settings
Settings changes (fees, PPS parameters, timelocks, banned leaves) are onchain transactions. The institutional dashboard constructs calldata via Erebor’s /prepare endpoints and your wallet signs and submits them to the protocol contracts directly. No Erebor REST endpoint is called for the actual setting change. Current values are read from GET /api/v1/vaults/{chain_id}/{address} (e.g., fee_config and upkeep_info fields in the response).
Common Patterns
Prepare Pattern
On-chain operations use a two-phase flow:
- Prepare — POST to a
prepare-* endpoint. Returns raw EVM calldata.
- Sign — Pass
{ to, data, value } to your wallet.
- Confirm (where applicable) — Notify Erebor of the transaction hash.
{
"to": "0xContractAddress...",
"data": "0xencoded_calldata...",
"value": "0"
}
Used for: vault creation, yield source management, user management, merkle root proposals, emergency pause.
Erebor supports cursor-based and offset-based pagination:
?limit=50&offset=0
?limit=50&cursor=<next_cursor>
Most list responses include has_more or next_cursor.
Async Jobs
Long-running operations (vault creation, merkle tree generation) return a job_id:
- Trigger operation → receive
job_id
- Poll
GET /api/v1/.../jobs/{job_id} with exponential backoff
- Status:
pending → running → completed / failed
Optimistic Concurrency
Strategy Engine PUT operations require a version field. Concurrent edits return 409 Conflict. Refresh and retry with the latest version.
Error Codes
| Code | Meaning |
|---|
400 | Invalid parameters |
401 | Missing or expired JWT |
403 | JWT valid, insufficient role |
404 | Resource not found |
409 | Duplicate or version conflict |
500 | Internal server error |
Route-to-Backend Matrix
| Feature | Backend | Auth |
|---|
| Home vault list | Erebor | None |
| Dashboard analytics | Erebor | JWT |
| Strategy canvas | Strategy Engine | JWT |
| Merkle tree management | Erebor | JWT |
| Yield source management | Erebor | JWT |
| User management | Erebor | JWT |
| Vault settings | Erebor | JWT |
| Service health | Erebor | JWT |
| Pause operations | Erebor | JWT |
| Registry management | Erebor | JWT |
| Admin backfill | Erebor | JWT |
| Vault creation | Erebor | JWT |
| DeFiX intents | OMS | JWT |
| OMS session keys | OMS | JWT |
Rate Limits
Rate limits are not yet published. Recommended polling intervals for automation:
| Data | Interval |
|---|
| Vault state | 15s |
| Analytics | 60s |
| Service health | 30s |
Implement exponential backoff on 429 Too Many Requests.
Endpoint Counts
| Backend | Endpoints |
|---|
| Erebor | ~89 |
| Strategy Engine | 14 |
| OMS | 10 |
| Total | ~113 |