Sei Cosmos REST API Reference
Sei's Cosmos SDK layer provides native blockchain functionality through REST API endpoints. Access staking, governance, bank transfers, and CosmWasm contracts using familiar HTTP methods.
Base URLโ
https://api.blockeden.xyz/sei/<your-api-key>/cosmos/
Authenticationโ
Include your API key in the URL path:
https://sei-mainnet.blockeden.xyz/<your-api-key>/cosmos/bank/v1beta1/balances/sei1abc...
Bank Moduleโ
Get Account Balancesโ
Get all token balances for an account.
Endpoint: GET /cosmos/bank/v1beta1/balances/{address}
curl -X GET https://api.blockeden.xyz/sei/<your-api-key>/cosmos/bank/v1beta1/balances/sei1abc123def456ghi789
Response:
{
"balances": [
{
"denom": "usei",
"amount": "1000000000"
},
{
"denom": "factory/sei1abc.../token",
"amount": "500000000"
}
],
"pagination": {
"next_key": null,
"total": "2"
}
}
Get Specific Token Balanceโ
Get balance for a specific denomination.
Endpoint: GET /cosmos/bank/v1beta1/balances/{address}/by_denom
Parameters:
denom(query) - Token denomination (e.g., "usei")
curl -X GET "https://sei-mainnet.blockeden.xyz/<your-api-key>/cosmos/bank/v1beta1/balances/sei1abc123def456ghi789/by_denom?denom=usei"
Response:
{
"balance": {
"denom": "usei",
"amount": "1000000000"
}
}
Get Total Supplyโ
Get total supply of all tokens.
Endpoint: GET /cosmos/bank/v1beta1/supply
curl -X GET https://api.blockeden.xyz/sei/<your-api-key>/cosmos/bank/v1beta1/supply
Response:
{
"supply": [
{
"denom": "usei",
"amount": "10000000000000000"
}
],
"pagination": {
"next_key": null,
"total": "1"
}
}
Get Supply by Denominationโ
Endpoint: GET /cosmos/bank/v1beta1/supply/by_denom
Parameters:
denom(query) - Token denomination
curl -X GET "https://sei-mainnet.blockeden.xyz/<your-api-key>/cosmos/bank/v1beta1/supply/by_denom?denom=usei"
Get Bank Parametersโ
Endpoint: GET /cosmos/bank/v1beta1/params
curl -X GET https://api.blockeden.xyz/sei/<your-api-key>/cosmos/bank/v1beta1/params
Staking Moduleโ
Get All Validatorsโ
Get list of all validators.
Endpoint: GET /cosmos/staking/v1beta1/validators
Parameters:
status(query) - Validator status: "BOND_STATUS_BONDED", "BOND_STATUS_UNBONDED", "BOND_STATUS_UNBONDING"pagination.limit(query) - Number of results per pagepagination.offset(query) - Offset for pagination
curl -X GET "https://sei-mainnet.blockeden.xyz/<your-api-key>/cosmos/staking/v1beta1/validators?status=BOND_STATUS_BONDED&pagination.limit=10"
Response:
{
"validators": [
{
"operator_address": "seivaloper1abc123def456ghi789",
"consensus_pubkey": {
"@type": "/cosmos.crypto.ed25519.PubKey",
"key": "abc123def456..."
},
"jailed": false,
"status": "BOND_STATUS_BONDED",
"tokens": "1000000000000",
"delegator_shares": "1000000000000.000000000000000000",
"description": {
"moniker": "Validator Name",
"identity": "",
"website": "https://validator.com",
"security_contact": "",
"details": "Validator description"
},
"unbonding_height": "0",
"unbonding_time": "1970-01-01T00:00:00Z",
"commission": {
"commission_rates": {
"rate": "0.100000000000000000",
"max_rate": "0.200000000000000000",
"max_change_rate": "0.010000000000000000"
},
"update_time": "2023-01-01T00:00:00Z"
},
"min_self_delegation": "1"
}
],
"pagination": {
"next_key": null,
"total": "100"
}
}
Get Validator Detailsโ
Endpoint: GET /cosmos/staking/v1beta1/validators/{validator_addr}
curl -X GET https://api.blockeden.xyz/sei/<your-api-key>/cosmos/staking/v1beta1/validators/seivaloper1abc123def456ghi789
Get Delegations for Delegatorโ
Endpoint: GET /cosmos/staking/v1beta1/delegations/{delegator_addr}
curl -X GET https://api.blockeden.xyz/sei/<your-api-key>/cosmos/staking/v1beta1/delegations/sei1abc123def456ghi789
Response:
{
"delegation_responses": [
{
"delegation": {
"delegator_address": "sei1abc123def456ghi789",
"validator_address": "seivaloper1abc123def456ghi789",
"shares": "1000000000.000000000000000000"
},
"balance": {
"denom": "usei",
"amount": "1000000000"
}
}
],
"pagination": {
"next_key": null,
"total": "1"
}
}
Get Unbonding Delegationsโ
Endpoint: GET /cosmos/staking/v1beta1/delegators/{delegator_addr}/unbonding_delegations
curl -X GET https://api.blockeden.xyz/sei/<your-api-key>/cosmos/staking/v1beta1/delegators/sei1abc123def456ghi789/unbonding_delegations
Get Staking Poolโ
Endpoint: GET /cosmos/staking/v1beta1/pool
curl -X GET https://api.blockeden.xyz/sei/<your-api-key>/cosmos/staking/v1beta1/pool
Response:
{
"pool": {
"not_bonded_tokens": "1000000000000",
"bonded_tokens": "9000000000000"
}
}
Get Staking Parametersโ
Endpoint: GET /cosmos/staking/v1beta1/params
curl -X GET https://api.blockeden.xyz/sei/<your-api-key>/cosmos/staking/v1beta1/params
Distribution Moduleโ
Get Delegation Rewardsโ
Get rewards for a specific delegation.
Endpoint: GET /cosmos/distribution/v1beta1/delegators/{delegator_address}/rewards/{validator_address}
curl -X GET https://api.blockeden.xyz/sei/<your-api-key>/cosmos/distribution/v1beta1/delegators/sei1abc123def456ghi789/rewards/seivaloper1abc123def456ghi789
Response:
{
"rewards": [
{
"denom": "usei",
"amount": "123456789.123456789123456789"
}
]
}
Get Total Rewardsโ
Get total rewards for a delegator.
Endpoint: GET /cosmos/distribution/v1beta1/delegators/{delegator_address}/rewards
curl -X GET https://api.blockeden.xyz/sei/<your-api-key>/cosmos/distribution/v1beta1/delegators/sei1abc123def456ghi789/rewards
Get Validator Commissionโ
Endpoint: GET /cosmos/distribution/v1beta1/validators/{validator_address}/commission
curl -X GET https://api.blockeden.xyz/sei/<your-api-key>/cosmos/distribution/v1beta1/validators/seivaloper1abc123def456ghi789/commission
Get Community Poolโ
Endpoint: GET /cosmos/distribution/v1beta1/community_pool
curl -X GET https://api.blockeden.xyz/sei/<your-api-key>/cosmos/distribution/v1beta1/community_pool
Governance Moduleโ
Get All Proposalsโ
Get list of governance proposals.
Endpoint: GET /cosmos/gov/v1beta1/proposals
Parameters:
proposal_status(query) - Filter by status: "PROPOSAL_STATUS_VOTING_PERIOD", "PROPOSAL_STATUS_PASSED", etc.voter(query) - Filter by voter addressdepositor(query) - Filter by depositor address
curl -X GET "https://sei-mainnet.blockeden.xyz/<your-api-key>/cosmos/gov/v1beta1/proposals?proposal_status=PROPOSAL_STATUS_VOTING_PERIOD"
Response:
{
"proposals": [
{
"proposal_id": "1",
"content": {
"@type": "/cosmos.gov.v1beta1.TextProposal",
"title": "Proposal Title",
"description": "Proposal description"
},
"status": "PROPOSAL_STATUS_VOTING_PERIOD",
"final_tally_result": {
"yes": "0",
"abstain": "0",
"no": "0",
"no_with_veto": "0"
},
"submit_time": "2023-01-01T00:00:00Z",
"deposit_end_time": "2023-01-15T00:00:00Z",
"total_deposit": [
{
"denom": "usei",
"amount": "10000000000"
}
],
"voting_start_time": "2023-01-01T00:00:00Z",
"voting_end_time": "2023-01-08T00:00:00Z"
}
],
"pagination": {
"next_key": null,
"total": "1"
}
}
Get Proposal Detailsโ
Endpoint: GET /cosmos/gov/v1beta1/proposals/{proposal_id}
curl -X GET https://api.blockeden.xyz/sei/<your-api-key>/cosmos/gov/v1beta1/proposals/1
Get Proposal Votesโ
Endpoint: GET /cosmos/gov/v1beta1/proposals/{proposal_id}/votes
curl -X GET https://api.blockeden.xyz/sei/<your-api-key>/cosmos/gov/v1beta1/proposals/1/votes
Get Specific Voteโ
Endpoint: GET /cosmos/gov/v1beta1/proposals/{proposal_id}/votes/{voter}
curl -X GET https://api.blockeden.xyz/sei/<your-api-key>/cosmos/gov/v1beta1/proposals/1/votes/sei1abc123def456ghi789
Get Proposal Depositsโ
Endpoint: GET /cosmos/gov/v1beta1/proposals/{proposal_id}/deposits
curl -X GET https://api.blockeden.xyz/sei/<your-api-key>/cosmos/gov/v1beta1/proposals/1/deposits
Get Governance Parametersโ
Endpoint: GET /cosmos/gov/v1beta1/params/{params_type}
Parameters:
params_type- Type of parameters: "voting", "tallying", "deposit"
curl -X GET https://api.blockeden.xyz/sei/<your-api-key>/cosmos/gov/v1beta1/params/voting
Auth Moduleโ
Get Account Informationโ
Endpoint: GET /cosmos/auth/v1beta1/accounts/{address}
curl -X GET https://api.blockeden.xyz/sei/<your-api-key>/cosmos/auth/v1beta1/accounts/sei1abc123def456ghi789
Response:
{
"account": {
"@type": "/cosmos.auth.v1beta1.BaseAccount",
"address": "sei1abc123def456ghi789",
"pub_key": null,
"account_number": "12345",
"sequence": "0"
}
}
Get All Accountsโ
Endpoint: GET /cosmos/auth/v1beta1/accounts
curl -X GET https://api.blockeden.xyz/sei/<your-api-key>/cosmos/auth/v1beta1/accounts
Get Auth Parametersโ
Endpoint: GET /cosmos/auth/v1beta1/params
curl -X GET https://api.blockeden.xyz/sei/<your-api-key>/cosmos/auth/v1beta1/params
CosmWasm Moduleโ
Get All Contractsโ
Get list of all smart contracts.
Endpoint: GET /cosmwasm/wasm/v1/contract
curl -X GET https://api.blockeden.xyz/sei/<your-api-key>/cosmwasm/wasm/v1/contract
Get Contract Infoโ
Endpoint: GET /cosmwasm/wasm/v1/contract/{address}
curl -X GET https://api.blockeden.xyz/sei/<your-api-key>/cosmwasm/wasm/v1/contract/sei1contractaddress123
Response:
{
"address": "sei1contractaddress123",
"contract_info": {
"code_id": "1",
"creator": "sei1abc123def456ghi789",
"admin": "sei1abc123def456ghi789",
"label": "My Contract",
"created": {
"block_height": "12345",
"tx_index": "0"
},
"ibc_port_id": "",
"extension": null
}
}
Query Contract Stateโ
Endpoint: GET /cosmwasm/wasm/v1/contract/{address}/smart
Parameters:
query_msg(query) - Base64-encoded query message
# Query contract with a simple message
curl -X GET "https://api.blockeden.xyz/sei/<your-api-key>/cosmwasm/wasm/v1/contract/sei1contractaddress123/smart" \
-G -d 'query_msg=eyJnZXRfY29uZmlnIjp7fX0='
Example Query Message (before base64 encoding):
{"get_config":{}}
Get Contract Historyโ
Endpoint: GET /cosmwasm/wasm/v1/contract/{address}/history
curl -X GET https://api.blockeden.xyz/sei/<your-api-key>/cosmwasm/wasm/v1/contract/sei1contractaddress123/history
Get Contract Raw Stateโ
Endpoint: GET /cosmwasm/wasm/v1/contract/{address}/raw/{query_data}
curl -X GET https://api.blockeden.xyz/sei/<your-api-key>/cosmwasm/wasm/v1/contract/sei1contractaddress123/raw/636f6e666967
Get Code Infoโ
Endpoint: GET /cosmwasm/wasm/v1/code/{code_id}
curl -X GET https://api.blockeden.xyz/sei/<your-api-key>/cosmwasm/wasm/v1/code/1
Get All Codesโ
Endpoint: GET /cosmwasm/wasm/v1/code
curl -X GET https://api.blockeden.xyz/sei/<your-api-key>/cosmwasm/wasm/v1/code
Tendermint RPCโ
Access Tendermint consensus layer information.
Base URL: https://sei-mainnet.blockeden.xyz/<your-api-key>/tm
Get Node Statusโ
curl -X POST https://api.blockeden.xyz/sei/<your-api-key>/tm \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "status",
"params": [],
"id": 1
}'
Get Block Informationโ
curl -X POST https://api.blockeden.xyz/sei/<your-api-key>/tm \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "block",
"params": ["12345"],
"id": 1
}'
Get Validatorsโ
curl -X POST https://api.blockeden.xyz/sei/<your-api-key>/tm \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "validators",
"params": [],
"id": 1
}'
Error Handlingโ
HTTP Status Codesโ
200: Success400: Bad Request (invalid parameters)401: Unauthorized (invalid API key)404: Not Found (resource doesn't exist)429: Too Many Requests (rate limit exceeded)500: Internal Server Error
Common Error Response Formatโ
{
"code": 3,
"message": "account sei1abc123def456ghi789 not found",
"details": []
}
Paginationโ
Most list endpoints support pagination:
Parameters:
pagination.key- Key for next pagepagination.offset- Number of items to skippagination.limit- Number of items per page (default: 100, max: 1000)pagination.count_total- Include total count in responsepagination.reverse- Reverse the order
Example:
curl -X GET "https://sei-mainnet.blockeden.xyz/<your-api-key>/cosmos/staking/v1beta1/validators?pagination.limit=50&pagination.offset=100"
Rate Limitsโ
- Free Tier: 100 requests/second
- Pro Tier: 1,000 requests/second
- Enterprise: Custom limits
Rate limit headers:
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 99
X-RateLimit-Reset: 1640995200
Best Practicesโ
1. Use Paginationโ
Always paginate large result sets:
# Good - paginated request
curl -X GET "https://sei-mainnet.blockeden.xyz/<your-api-key>/cosmos/staking/v1beta1/validators?pagination.limit=100"
# Avoid - requesting all validators at once without pagination
2. Cache Responsesโ
Cache static data like validator information:
// Cache validator list for 5 minutes
const cacheKey = 'validators';
const cachedValidators = cache.get(cacheKey);
if (!cachedValidators) {
const validators = await fetch('/cosmos/staking/v1beta1/validators');
cache.set(cacheKey, validators, 300); // 5 minutes
}
3. Handle Errors Gracefullyโ
async function getBalance(address) {
try {
const response = await fetch(`/cosmos/bank/v1beta1/balances/${address}`);
if (!response.ok) {
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
}
return await response.json();
} catch (error) {
console.error('Failed to fetch balance:', error);
return null;
}
}
Next Stepsโ
- Learn about Sei WebSocket Guide for real-time data
- Check out Sei JSON-RPC API for EVM functionality
- Visit BlockEden.xyz Dashboard to monitor usage