Authentication
The Chainworks API uses token-based authentication over WebSocket connections.
Authentication Flow
- Obtain your API credentials (API URL and Auth Token)
- Connect to the WebSocket server with your token
- The server validates your token on connection
- If valid, you can start making API requests
Connecting with Credentials
TypeScript
typescript
import { io } from 'socket.io-client';
const socket = io(CHAINWORKS_API_URL, {
transports: ['websocket'],
auth: {
token: CHAINWORKS_API_AUTH_TOKEN,
},
});Python
python
import socketio
sio = socketio.Client()
sio.connect(
CHAINWORKS_API_URL,
transports=["websocket"],
auth={"token": CHAINWORKS_API_AUTH_TOKEN}
)Environment Variables
We recommend storing your credentials in environment variables:
bash
# .env
CHAINWORKS_API_URL=https://api.chainworks.co
CHAINWORKS_API_AUTH_TOKEN=your-secret-tokentypescript
const socket = io(process.env.CHAINWORKS_API_URL!, {
transports: ['websocket'],
auth: {
token: process.env.CHAINWORKS_API_AUTH_TOKEN!,
},
});Connection Events
Handle connection lifecycle events to ensure robust operation:
typescript
socket.on('connect', () => {
console.log('Connected successfully');
// Start making API requests
});
socket.on('connect_error', (error) => {
console.error('Connection error:', error.message);
// Handle authentication failures
if (error.message.includes('unauthorized')) {
console.error('Invalid API token');
}
});
socket.on('disconnect', (reason) => {
console.log('Disconnected:', reason);
// Handle reconnection if needed
});Reconnection
Socket.IO automatically handles reconnection. You can configure the behavior:
typescript
const socket = io(CHAINWORKS_API_URL, {
transports: ['websocket'],
auth: {
token: CHAINWORKS_API_AUTH_TOKEN,
},
reconnection: true,
reconnectionAttempts: 5,
reconnectionDelay: 1000,
reconnectionDelayMax: 5000,
});Security Best Practices
- Never expose tokens in client-side code - Use server-side proxies for browser applications
- Rotate tokens regularly - Contact us to regenerate compromised tokens
- Use environment variables - Never hardcode tokens in source code
- Monitor usage - Track API calls to detect unauthorized access
Rate Limits
API rate limits depend on your subscription tier. Contact us for details about rate limits and quotas.
Getting Credentials
To obtain API credentials:
- Contact us at info@chainworks.co
- Describe your use case
- We'll provision credentials for your application
Next Steps
- Quick Start - Get started with your first request
- EVM Endpoints - Explore Ethereum, Base, and BSC endpoints
- SVM Endpoints - Explore Solana endpoints