General Information
Overview
The Synthetix API provides access to perpetual futures trading on our trading platform. The API is designed with high performance and security in mind, offering both REST and WebSocket endpoints for different use cases. Most actions are available on both REST and WS, with some additional subscriptions available through our WebSocket.
For connection URLs and environment configuration, see Environments.
API Architecture
The Synthetix API follows a unified design pattern:
- Two REST endpoints:
/v1/trade- Trading operations and account management (autheticated)/v1/info- Public market data and exchange information (no authentication required)
- WebSocket endpoints:
/v1/ws/trade- Trading operations/v1/ws/info- Public market data
Request Format
All REST API requests:
- For REST requests, uses POST method exclusively
- Accept JSON request bodies
- Return JSON responses
- Include API version in the URL path
Authentication
All trading actions require EIP-712 signatures for authentication. This provides cryptographic proof that requests originate from the account owner without requiring traditional API keys.
- No API keys required
- Each request is signed with your wallet's private key
- Supports subaccount delegation for authorized trading
- See Authentication for detailed information
Rate Limiting
API requests are rate-limited to ensure fair usage and system stability. Detailed rate limit specifications will be published closer to mainnet launch.
See Rate Limits for more information.
Data Types
- Amounts and Prices: All numeric values are represented as strings to preserve precision
- Timestamps: Unix timestamps in milliseconds
- Order IDs: 64-bit integers
- Client Order IDs: 128-bit hex strings (0x prefix + 32 hex characters)
Response Format
All API responses follow a consistent format:
Success Response
{
"status": "ok",
"response": [
// method specific response object or array. For example, when calling getOrders
{
"orderId": "1958787130134106112",
"symbol": "BTC-USDT",
"side": "buy",
"orderType": "limitGtc",
"quantity": "10",
"price": "45000",
"createdTime": 1755846234,
"updatedTime": 1755846234,
"filledQuantity": "10",
"filledPrice": "45000"
}
],
"request_id": "5ccf215d37e3ae6d",
"timestamp": "2025-01-01T00:00:00Z"
}Error Response
When an error occurs, the status will be set to error, a response will not be included,
and any additional error information will be included instead.
{
"status": "error",
"error": {
"code": "INTERNAL_ERROR",
"message": "Failed to list subaccounts",
"details": { /* optional context */ }
},
"request_id": "5ccf215d37e3ae6d",
"timestamp": "2025-01-01T00:00:00Z"
}Getting Started
-
Choose your integration method:
- REST API for request-response operations
- WebSocket API for real-time data and lower latency trading
-
Set up authentication:
- Implement EIP-712 signing for trading endpoints
- Public data endpoints require no authentication
-
Handle API errors and rate limit responses
Next Steps
- REST API - REST endpoint documentation
- WebSocket API - WebSocket endpoint documentation
- Authentication - Detailed authentication guide
- Fees - Fee schedule and tier structure