Project Votes
POST /api/v2/projects/{projectId}/votes HTTP/1.1
Host: api.ethos.network
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 33
{
"voteType": "BULLISH",
"amount": 1
}
{
"success": true,
"message": "text",
"newBalance": {
"bullishVotesRemaining": 1,
"bearishVotesRemaining": 1,
"bullishVotesSpent": 1,
"bearishVotesSpent": 1,
"allocationResetDate": "text"
}
}
GET /api/v2/projects/votes/balance HTTP/1.1
Host: api.ethos.network
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"balance": {
"bullishVotesRemaining": 1,
"bearishVotesRemaining": 1,
"bullishVotesSpent": 1,
"bearishVotesSpent": 1,
"allocationResetDate": "text"
},
"projectHistory": {
"bullishVotesSpent": 1,
"bearishVotesSpent": 1
}
}
Time Scope Options (scope parameter):
scope=global
: All-time data from first vote to presentscope=global-dates
: Custom date range (requires startDate & endDate)scope=current-period
: Current voting period (default - backend determines automatically)scope=period
: Specific voting period (requires year & period)
Parameter Requirements by Scope:
global
: No additional parameters neededglobal-dates
: RequiresstartDate
andendDate
(ISO date strings)current-period
: No additional parameters needed (default)period
: Requiresyear
(number) andperiod
(number)
Examples:
All-time:
GET /projects/123/voters?scope=global
Date range:
GET /projects/123/voters?scope=global-dates&startDate=2024-01-01&endDate=2024-12-31
Current period:
GET /projects/123/voters
(default) orGET /projects/123/voters?scope=current-period
Specific period:
GET /projects/123/voters?scope=period&year=2024&period=3
Notes:
End dates extending into the future are automatically capped to the current time
Global scope uses all historical data for the project
score
Possible values: desc
Possible values: current-period
Possible values: 50
0
GET /api/v2/projects/{projectId}/voters HTTP/1.1
Host: api.ethos.network
Accept: */*
{
"values": [
{
"user": {
"id": 1,
"profileId": 1,
"displayName": "text",
"username": "text",
"avatarUrl": "https://example.com",
"description": "text",
"score": 1,
"status": "ACTIVE",
"userkeys": [
"text"
],
"xpTotal": 1,
"xpStreakDays": 1,
"links": {
"profile": "https://example.com",
"scoreBreakdown": "https://example.com"
},
"stats": {
"review": {
"received": {
"negative": 1,
"neutral": 1,
"positive": 1
}
},
"vouch": {
"given": {
"amountWeiTotal": 1,
"count": 1
},
"received": {
"amountWeiTotal": 1,
"count": 1
}
}
}
},
"bullishCount": 1,
"bearishCount": 1,
"totalVotes": 1,
"firstVoteAt": "text",
"lastVoteAt": "text"
}
],
"total": 1,
"limit": 1,
"offset": 1,
"totals": {
"totalVoters": 1,
"totalBullishVoters": 1,
"totalBearishVoters": 1,
"totalBullishVotes": 1,
"totalBearishVotes": 1
}
}
POST /api/v2/projects/votes/reallocate HTTP/1.1
Host: api.ethos.network
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"allocationsCreated": 1,
"totalVotesAllocated": 1,
"message": "text"
}
Time Scope Options (scope parameter):
scope=global
: All-time data from first vote to presentscope=global-dates
: Custom date range (requires startDate & endDate)scope=current-period
: Current voting period (default - backend determines automatically)scope=period
: Specific voting period (requires year & period)
Parameter Requirements by Scope:
global
: No additional parameters neededglobal-dates
: RequiresstartDate
andendDate
(ISO date strings)current-period
: No additional parameters needed (default)period
: Requiresyear
(number) andperiod
(number)
Examples:
All-time:
GET /projects/PROJECT_ID/bulk-totals?scope=global
Date range:
GET /projects/PROJECT_ID/bulk-totals?scope=global-dates&startDate=2024-01-01&endDate=2024-12-31
Current period:
GET /projects/PROJECT_ID/bulk-totals
(default) orGET /projects/PROJECT_ID/bulk-totals?scope=current-period
Specific period:
GET /projects/PROJECT_ID/bulk-totals?scope=period&year=2024&period=3
Notes:
End dates extending into the future are automatically capped to the current time
Global scope uses all historical data for the project
current-period
Possible values: GET /api/v2/projects/votes/bulk-totals HTTP/1.1
Host: api.ethos.network
Accept: */*
{
"ANY_ADDITIONAL_PROPERTY": {
"totalBullishVotes": 1,
"totalBearishVotes": 1
}
}
Time Scope Options (scope parameter):
scope=global
: All-time data from first vote to presentscope=global-dates
: Custom date range (requires startDate & endDate)scope=current-period
: Current voting period (default - backend determines automatically)scope=period
: Specific voting period (requires year & period)
Parameter Requirements by Scope:
global
: No additional parameters neededglobal-dates
: RequiresstartDate
andendDate
(ISO date strings)current-period
: No additional parameters needed (default)period
: Requiresyear
(number) andperiod
(number)
Time Aggregation (bucket parameter):
Available buckets: '1 minute', '5 minutes', '15 minutes', '30 minutes', '1 hour', '2 hours', '6 hours', '12 hours', '1 day', '1 week', '1 month'
If bucket is omitted, the API auto-selects an optimal bucket size based on the time range to prevent excessive data points
For large time spans with small buckets, an error will be returned with a suggested larger bucket
Maximum data points: 2000 (for performance)
Examples:
All-time:
GET /projects/123/chart?scope=global
Date range:
GET /projects/123/chart?scope=global-dates&startDate=2024-01-01&endDate=2024-12-31
Current period:
GET /projects/123/chart
(default) orGET /projects/123/chart?scope=current-period
Specific period:
GET /projects/123/chart?scope=period&year=2024&period=3
Notes:
End dates extending into the future are automatically capped to the current time
Global scope uses all historical data for the project
current-period
Possible values: GET /api/v2/projects/{projectId}/chart HTTP/1.1
Host: api.ethos.network
Accept: */*
[
{
"timeBucket": "text",
"totalBullishVotes": 1,
"totalBearishVotes": 1,
"bullishVotes": 1,
"bearishVotes": 1,
"uniqueVoters": 1
}
]