Base URL
All API requests should be made to:- ENS:
https://vote.ens.domains/api/v1 - Optimism:
https://vote.optimism.io/api/v1 - Uniswap:
https://vote.uniswap.org/api/v1
Authentication
All API endpoints require authentication using either:- API Key (recommended for server-to-server)
- JWT Token (for wallet-based authentication)
Response Format
All API responses follow a consistent JSON format:Success Response
Error Response
Pagination
Most list endpoints support pagination using query parameters:Number of items to return (max: 50-1000 depending on endpoint)
Number of items to skip
Example
Rate Limiting
API rate limits are enforced per API key:- Rate limits are configured per tenant and API user
- Monitor your usage through provider dashboards
- Contact support if you need higher limits
Error Handling
The API uses standard HTTP status codes:| Status Code | Description |
|---|---|
200 | Success |
400 | Bad Request - Invalid parameters |
401 | Unauthorized - Missing or invalid authentication |
404 | Not Found - Resource doesn’t exist |
500 | Internal Server Error |
Common Error Responses
Invalid Query ParametersData Sources
The API aggregates data from multiple sources:- PostgreSQL Database - Primary data store with views and materialized views
- DAO Node Service - External service for delegate and proposal data
- Snapshot - Off-chain voting data
- Blockchain RPC - On-chain data via Alchemy
Environment Configuration
The API behavior varies based on the tenant configuration:NEXT_PUBLIC_AGORA_INSTANCE_NAME- Determines DAO configurationNEXT_PUBLIC_AGORA_ENV- Controls prod vs dev environment- Database URLs are environment-specific (prod vs dev)
Getting Started
- Generate an API key
- Make your first request to /api/v1/proposals
- Explore other endpoints for delegates, votes, and analytics
SDK and Libraries
Currently, there are no official SDKs. You can use any HTTP client:Support
For API support:- Review the endpoint documentation
- Check error messages for guidance
- Contact the Agora team via Discord