API Key Access Required
You need to be logged in to view and manage your API keys.
Please sign in to your account to access your developer tools.
Secure Access
Your API keys are protected with enterprise-grade securityDeveloper Tools
Access powerful APIs to integrate with our platformUsage Analytics
Monitor your API usage and performance metricsAPI Documentation
Getting Started with the API
Welcome to the Eclesiar API documentation. This API allows you to interact programmatically with the Eclesiar platform.
Authentication
Requests authenticate with an API Key. You can generate your API Key in the "API Key Management" section above and send it in the Authorization header. The key works on every endpoint listed below (other API routes refuse it); /nukes/active needs no key at all.
Authorization: Bearer your_api_key_here
Viewer Fields
The key belongs to your account, but responses are not personalised for it: fields that describe the viewer (your own vote, roles, treasury access, online presence, management rights) come back as null, false or empty. The exception is the viewer block of the building order endpoints, which describes the key owner. Keep the key secret: generating a new key or revoking it takes effect immediately.
Base URL
All API endpoints are relative to the base URL:
https://api.eclesiar.com
Response Format
All responses are JSON with a code and a description, and errors also use the matching HTTP status. Results come in data, but that key is left out entirely when there is nothing to return (an empty list, for example), so check that it exists. Paginated lists hold 25 records per page.
{
"code": 200,
"description": "Success",
"data": [
"..."
]
}
Rate Limits
Public API keys are limited to 50,000 requests per account each day. Requests beyond that limit return HTTP 429 until the next day. Requests are also throttled per IP address; if you hit that limit, wait a moment before retrying. Cache what you fetch and avoid polling faster than the data changes. You can monitor today's usage and limit in the API Key Management panel above.
Getting Started
To get started with the API:
- Generate your API Key using the "Generate New Key" button above
- Include your API Key in the
Authorizationheader as shown in the authentication example - Browse the available endpoints below to find the data you need
- Make your first request and start building!
Endpoint URL
Responses
200 Success
{
"code": 200,
"description": "Success",
"data": [
{
"status": "ok",
"version": "1.3.0",
"server_name": "Eclesiar",
"server_time": "01:00:00",
"server_day": 125
}
]
}
Endpoint URL
Parameters
| Parameter | Type | Description | Default | Required |
|---|---|---|---|---|
page |
integer | The page number for pagination |
1
|
Optional |
Responses
200 Success
{
"code": 200,
"description": "Success",
"data": [
{
"id": 1,
"name": "Bread",
"quality": 5,
"type": "FOOD",
"avatar": "https://example.com/avatars/food.png"
}
]
}
Endpoint URL
Parameters
| Parameter | Type | Description | Default | Required |
|---|---|---|---|---|
page |
integer | The page number for pagination |
1
|
Optional |
Responses
200 Success
{
"code": 200,
"description": "Success",
"data": [
{
"id": 1,
"slot": 3,
"grade": 2,
"critical_chance": 0,
"critical_hit": 0,
"damage_percentage": 0,
"true_damage": 70,
"flatland_damage_percentage": 0,
"mountains_damage_percentage": 0,
"forest_damage_percentage": 0,
"desert_damage_percentage": 0,
"accuracy": 0,
"drop_chance": 0,
"construction_percentage": 0,
"hospital_construction_percentage": 0,
"militarybase_construction_percentage": 0,
"productionfields_construction_percentage": 0,
"industrialzone_construction_percentage": 0,
"construction_item_donation_percentage": 0,
"mining_gold_percentage": 0,
"construction_energy_reduction_percentage": 0,
"avatar": "https://example.com/avatars/equipment.png",
"drop_category": "MILITARY"
}
]
}
Endpoint URL
Parameters
| Parameter | Type | Description | Default | Required |
|---|---|---|---|---|
currency_id |
integer | The ID of the currency to filter offers by (Gold, id 1, is not accepted) | - | Required |
transaction |
string |
The type of transaction to filter offers by (BUY or SELL, case-sensitive)
Allowed values:
BUY
SELL
|
BUY
|
Optional |
page |
integer | The page number for pagination (25 offers per page) |
1
|
Optional |
Responses
200 Success - lowest rate first. Offers from inactive accounts, or from new accounts over their daily exchange limit, are skipped, so a page can hold fewer than 25 offers.
{
"code": 200,
"description": "Success - lowest rate first. Offers from inactive accounts, or from new accounts over their daily exchange limit, are skipped, so a page can hold fewer than 25 offers.",
"data": [
{
"id": 2305056,
"rate": 5.296,
"amount": 20,
"owner": {
"id": 436,
"type": "holding",
"name": "Aussie Assets",
"avatar": "https://example.com/avatars/holding.png",
"avatar_border": null
}
}
]
}
400 Response
{
"code": 400,
"message": "Bad Request"
}
Endpoint URL
Parameters
| Parameter | Type | Description | Default | Required |
|---|---|---|---|---|
country_id |
integer | The ID of the country whose market to read | - | Required |
item_id |
integer | The ID of the item to filter offers by | - | Required |
page |
integer | The page number for pagination (25 offers per page) |
1
|
Optional |
Responses
200 Success - cheapest offer first. Offers from inactive accounts are skipped, so a page can hold fewer than 25 offers. currency is the currency of the market country; import_tax.rate is the import tax (percent) that market applies to the seller origin country.
{
"code": 200,
"description": "Success - cheapest offer first. Offers from inactive accounts are skipped, so a page can hold fewer than 25 offers. currency is the currency of the market country; import_tax.rate is the import tax (percent) that market applies to the seller origin country.",
"data": [
{
"id": 524121,
"value": 0.375,
"amount": 299,
"owner": {
"id": 436,
"type": "holding",
"name": "Aussie Assets",
"avatar": "https://example.com/avatars/holding.png",
"country_id": 47
},
"item": {
"id": 12,
"name": "Weapon",
"type": "WEAPONS",
"quality": 5,
"avatar": "https://example.com/avatars/weapon.png"
},
"currency": {
"id": 45,
"name": "AUD",
"avatar": "https://example.com/avatars/aud.png"
},
"import_tax": {
"origin_country_id": 47,
"rate": 0
}
}
]
}
400 Response
{
"code": 400,
"message": "Bad Request"
}
Endpoint URL
Parameters
| Parameter | Type | Description | Default | Required |
|---|---|---|---|---|
country_id |
integer | The ID of the country whose job market to read (offers in the regions it rules) | - | Required |
page |
integer | The page number for pagination (25 offers per page) |
1
|
Optional |
Responses
200 Success - only offers the employer can honour right now, newest first, with pagination at the root of the response. net_value is the salary after the work tax (tax_percent) of the country that rules the company region.
{
"code": 200,
"description": "Success - only offers the employer can honour right now, newest first, with pagination at the root of the response. net_value is the salary after the work tax (tax_percent) of the country that rules the company region.",
"data": [
{
"id": 176056,
"value": 7.459,
"net_value": 5.967,
"tax_percent": 20,
"amount": 1,
"economic_skill": 0,
"currency": {
"id": 12,
"name": "PTE",
"avatar": "https://example.com/avatars/pte.png"
},
"company": {
"id": 11967,
"name": "Effertz LLC",
"avatar": "https://example.com/avatars/company.png",
"type": "Titanium Mine",
"quality": 1
},
"employer": {
"id": 5464,
"type": "npc",
"name": "Daisha Nicolas",
"avatar": "https://example.com/avatars/npc.png",
"country_id": 37
},
"region": {
"id": 213,
"name": "Durban"
},
"country": {
"id": 13,
"name": "Portugal",
"flag": "https://example.com/avatars/pt.png"
},
"currency_id": 12,
"business_id": 11967
}
],
"pagination": {
"current_page": 1,
"total_pages": 3,
"per_page": 25,
"total_records": 61
}
}
400 Response
{
"code": 400,
"message": "Bad Request"
}
Endpoint URL
Parameters
| Parameter | Type | Description | Default | Required |
|---|---|---|---|---|
finished |
integer | Active auctions (0, ending soonest first) or finished ones (1, most recent first); any other value returns 400 |
0
|
Optional |
type |
string |
Only auctions of this listing type
Allowed values:
all
equipment
item
|
all
|
Optional |
category |
string |
Equipment usage filter, applied only together with type=equipment
Allowed values:
all
construction
militar
mining
|
all
|
Optional |
page |
integer | The page number for pagination (25 auctions per page) |
1
|
Optional |
Responses
200 Success - status is 1 while the auction runs and 0 once it has finished; item.stats is filled for equipment only.
{
"code": 200,
"description": "Success - status is 1 while the auction runs and 0 once it has finished; item.stats is filled for equipment only.",
"data": [
{
"id": 102122,
"item": {
"id": 93,
"type": "equipment",
"name": "MILITAR TIER 3",
"avatar": "https://example.com/avatars/equipment.png",
"grade": 3,
"quality": 0,
"drop_category": "MILITAR",
"stats": {
"critical_chance": 2,
"critical_hit": 0,
"damage_percentage": 3,
"true_damage": 0,
"accuracy": 1,
"drop_chance": 0,
"flatland_damage_percentage": 0,
"mountains_damage_percentage": 0,
"forest_damage_percentage": 0,
"desert_damage_percentage": 0,
"construction_percentage": 0,
"hospital_construction_percentage": 0,
"militarybase_construction_percentage": 0,
"productionfields_construction_percentage": 0,
"industrialzone_construction_percentage": 0,
"construction_item_donation_percentage": 0,
"construction_energy_reduction_percentage": 0,
"mining_gold_percentage": 0
}
},
"owner": {
"id": 7792,
"type": "account",
"name": "JohnDoe",
"avatar": "https://example.com/avatars/johndoe.png",
"country_id": 13
},
"initial_bid": 1,
"current_bid": 2.1,
"bid_count": 4,
"highest_bidder": {
"id": 9755,
"name": "JaneDoe",
"avatar": "https://example.com/avatars/janedoe.png",
"country_id": 2
},
"average_price": {
"price": 2.4,
"days": 7
},
"created_at": "2025-06-03 11:32:52",
"created_at_ts": 1748950372,
"end_at": "2025-06-05 11:32:52",
"end_at_ts": 1749123172,
"server_now": 1749040000,
"status": 1
}
]
}
400 Response
{
"code": 400,
"message": "Bad Request"
}
Endpoint URL
Parameters
| Parameter | Type | Description | Default | Required |
|---|---|---|---|---|
auction_id |
integer | The ID of the auction to retrieve bids for | - | Required |
page |
integer | The page number for pagination (25 bids per page) |
1
|
Optional |
Responses
200 Success - highest bid first.
{
"code": 200,
"description": "Success - highest bid first.",
"data": [
{
"id": 181468,
"bid": 2.1,
"owner": {
"id": 9755,
"type": "account",
"name": "JaneDoe",
"avatar": "https://example.com/avatars/janedoe.png",
"country_id": 2
},
"created_at": "2025-06-04 20:32:55"
},
{
"id": 181351,
"bid": 1.999,
"owner": {
"id": 9802,
"type": "account",
"name": "Player2",
"avatar": "https://example.com/avatars/player2.png",
"country_id": 13
},
"created_at": "2025-06-04 17:52:40"
}
]
}
400 Response
{
"code": 400,
"message": "Bad Request"
}
Endpoint URL
Parameters
| Parameter | Type | Description | Default | Required |
|---|---|---|---|---|
account_id |
integer | The ID of the account to retrieve information for | - | Required |
Responses
200 Success
{
"code": 200,
"description": "Success",
"data": {
"id": 1,
"username": "JohnDoe",
"avatar": "https://example.com/avatars/johndoe.png",
"region_id": 1,
"nationality_id": 1,
"total_damage": 321432,
"total_mined_gold": 3424,
"total_builder_progress": 65243,
"day_of_birth": 100
}
}
Endpoint URL
Parameters
| Parameter | Type | Description | Default | Required |
|---|---|---|---|---|
page |
integer | The page number for pagination |
1
|
Optional |
Responses
200 Success
{
"code": 200,
"description": "Success",
"data": [
{
"id": 1,
"equipment_id": 2,
"is_equipped": true
},
{
"id": 2,
"equipment_id": 2,
"is_equipped": false
}
]
}
Endpoint URL
Parameters
| Parameter | Type | Description | Default | Required |
|---|---|---|---|---|
account_id |
integer (path) | The ID of the player | - | Required |
Responses
200 Success - ids in this payload are strings. For API keys online_status is null and is_own_profile is false. articles lists the 25 newest published articles; achievement texts come in the language of the key owner account.
{
"code": 200,
"description": "Success - ids in this payload are strings. For API keys online_status is null and is_own_profile is false. articles lists the 25 newest published articles; achievement texts come in the language of the key owner account.",
"data": {
"user_id": "42",
"username": "JohnDoe",
"description": "Veteran of the Iberian front",
"avatar_url": "https://example.com/avatars/johndoe.png",
"character_avatar_url": "https://example.com/avatars/johndoe.png",
"banner_url": "https://example.com/banners/1.jpg",
"background_url": "",
"avatar_border_url": "",
"level": 20,
"birth_day": 554,
"total_damage": 5262066,
"building_progress": 111693.427,
"strength": 12.22,
"economic_level": 11.07,
"combat": {
"base_damage": 561,
"bonus_damage": 34.66,
"accuracy": 77.1,
"critical_chance": 6.1,
"critical_hit": 130.2,
"attribute_effects": {
"strength_flat_damage": 0,
"accuracy_pct": 0.1,
"crit_chance_pct": 0.1,
"crit_hit_pct": 0.2,
"max_energy": 0,
"production_pct": 0.1,
"economic_skill": 0,
"construction_pct": 0
}
},
"attributes": {
"enabled": 1,
"unspent_points": 57,
"total_points": 60,
"stats": {
"strength": 0,
"accuracy": 1,
"luck": 1,
"endurance": 0,
"leadership": 1,
"economic_aptitude": 0,
"construction_efficiency": 0
}
},
"nationality": {
"country_id": "13",
"country_name": "Portugal",
"country_flag": "https://example.com/avatars/pt.png"
},
"current_location": {
"region_name": "Lisbon",
"region_id": "66",
"country_name": "Portugal",
"country_flag": "https://example.com/avatars/pt.png"
},
"online_status": null,
"military_rank": {
"name": "Sergeant",
"level": 4,
"icon_url": "https://example.com/avatars/rank_military.png",
"experience": 5262066,
"experience_to_next_level": 13000000
},
"builder_rank": {
"name": "Surveyor",
"level": 5,
"icon_url": "https://example.com/avatars/rank_builder.png",
"experience": 111693.427,
"experience_to_next_level": 250000
},
"military_unit": {
"id": "150",
"name": "Iron Wolves",
"avatar_url": "https://example.com/avatars/mu.png"
},
"political_party": {
"id": "334",
"name": "Liberty Party",
"avatar_url": "https://example.com/avatars/party.png"
},
"equipment": {
"boots": {
"id": "16",
"name": "MILITAR TIER 6",
"image_url": "https://example.com/avatars/equipment.png",
"slot": "boots",
"rarity": "red",
"critical_chance": null,
"critical_hit": null,
"damage_percentage": 4,
"true_damage": 1,
"accuracy": null,
"drop_chance": null,
"flatland_damage_percentage": null,
"mountains_damage_percentage": null,
"forest_damage_percentage": null,
"desert_damage_percentage": null,
"construction_percentage": null,
"hospital_construction_percentage": null,
"militarybase_construction_percentage": null,
"productionfields_construction_percentage": null,
"industrialzone_construction_percentage": null,
"construction_item_donation_percentage": null,
"construction_energy_reduction_percentage": null,
"mining_gold_percentage": null
}
},
"achievements": [
{
"id": "ach_1",
"achievement": {
"id": "a1",
"name": "Hard Worker",
"image_url": "https://example.com/achievements/1.png",
"description": "Worked 30 days in a row"
},
"count": 2,
"is_highlighted": false
}
],
"articles": [
{
"id": "1043",
"title": "Economic Update for Q3",
"journal_name": "The Daily Eclesiar",
"journal_image_url": "https://example.com/avatars/newspaper.png",
"published_at": "2025-06-03 11:32:52",
"category": "Economics",
"preview": "This quarter showed..."
}
],
"companies": [
{
"id": "8278",
"name": "Lisbon Farms",
"image_url": "https://example.com/avatars/company.png",
"type": "Farm",
"quality": 3,
"region": "Lisbon"
}
],
"is_own_profile": false,
"available_banners": [],
"available_backgrounds": [],
"available_avatar_borders": [],
"recruitment": {
"activated": 0,
"recruits_total": 0,
"title": null,
"country_rank": null
},
"punishment": null
}
}
400 Response
{
"code": 400,
"message": "Account ID is required"
}
404 Response
{
"code": 404,
"message": "Account not found"
}
Endpoint URL
Parameters
| Parameter | Type | Description | Default | Required |
|---|---|---|---|---|
npc_id |
integer (path) | The ID of the NPC | - | Required |
Responses
200 Success - ids in this payload are strings; job is null while the NPC has no job.
{
"code": 200,
"description": "Success - ids in this payload are strings; job is null while the NPC has no job.",
"data": {
"npc_id": "5490",
"username": "Torey Marvin",
"avatar_url": "https://example.com/avatars/npc.png",
"is_dead": false,
"death_date": null,
"total_damage": 0,
"strength": 1,
"economic_level": 0,
"nationality": {
"country_id": "45",
"country_name": "South Korea",
"country_flag": "https://example.com/avatars/kr.png"
},
"current_location": {
"region_id": "272",
"region_name": "Daejeon",
"country_name": "South Korea",
"country_flag": "https://example.com/avatars/kr.png"
},
"job": {
"business_id": "11993",
"business_name": "Mueller-Daniel",
"business_image_url": "https://example.com/avatars/company.png",
"business_type": "Iron Mine",
"quality": 1,
"region_name": "Daejeon",
"wage": 12.5,
"wage_currency_name": "KRW",
"wage_currency_icon": "https://example.com/avatars/krw.png",
"joined_at": "2025-11-02 10:00:00",
"days_at_work": 41
},
"companies": [
{
"id": "11993",
"name": "Mueller-Daniel",
"image_url": "https://example.com/avatars/company.png",
"type": "Iron Mine",
"quality": 1,
"region": "Daejeon"
}
]
}
}
400 Response
{
"code": 400,
"message": "NPC ID is required"
}
404 Response
{
"code": 404,
"message": "NPC not found"
}
Endpoint URL
Responses
200 Success
{
"code": 200,
"description": "Success",
"data": [
{
"id": 1,
"name": "United States",
"avatar": "https://example.com/avatars/us.png",
"currency": {
"id": 1,
"name": "USD",
"symbol": "https://example.com/avatars/us.png"
},
"is_available": true,
"laws": {
"work_tax": 20,
"vat": 10,
"import_taxes": 5,
"minimum_wage": 15
},
"ideology_share": {
"capitalism": 25,
"nationalism": 15,
"centralism": 10,
"socialism": 20,
"imperialism": 18,
"communism": 12
}
},
{
"id": 2,
"name": "Brazil",
"avatar": "https://example.com/avatars/br.png",
"currency": {
"id": 2,
"name": "BRL",
"symbol": "https://example.com/avatars/br.png"
},
"is_available": true,
"laws": {
"work_tax": 20,
"vat": 10,
"import_taxes": 5,
"minimum_wage": 15
},
"ideology_share": {
"capitalism": 30,
"nationalism": 20,
"centralism": 5,
"socialism": 25,
"imperialism": 10,
"communism": 10
}
}
]
}
Endpoint URL
Parameters
| Parameter | Type | Description | Default | Required |
|---|---|---|---|---|
country_id |
integer | The ID of the country to retrieve regions for | - | Required |
Responses
200 Success
{
"code": 200,
"description": "Success",
"data": [
{
"id": 213,
"name": "Durban",
"type": 3,
"population": 26,
"original_country_id": 37,
"country_id": 13,
"nb_npcs": 3,
"pollution": 23,
"factories": {
"food": 0,
"weapon": 0,
"oil": 0,
"grain": 0,
"iron": 0,
"aircraft": 0,
"titanium": 0,
"tickets": 0
},
"buildings": {
"hospital": {
"id": 1,
"name": "Hospital",
"level": 3
},
"military_base": {
"id": 2,
"name": "Military Base",
"level": 5
}
},
"bonus": [
{
"type": "FOOD",
"value": 15
}
]
}
]
}
Endpoint URL
Parameters
| Parameter | Type | Description | Default | Required |
|---|---|---|---|---|
country_id |
integer | The ID of the country to retrieve currency transactions for | - | Required |
page |
integer | Page number for pagination |
1
|
Optional |
Responses
200 Success - Returns currency transaction logs with associated complex transaction data (items, currencies, stocks) when available. Results are paginated with 25 records per page.
{
"code": 200,
"description": "Success - Returns currency transaction logs with associated complex transaction data (items, currencies, stocks) when available. Results are paginated with 25 records per page.",
"data": [
{
"id": 12345,
"from": {
"id": 1,
"name": "United States",
"type": "country",
"avatar": "https://example.com/avatars/us.png"
},
"to": {
"id": 123,
"name": "John Doe",
"type": "account",
"avatar": "https://example.com/avatars/user123.png"
},
"currency_id": 1,
"value": 1000.5,
"description": "Salary payment",
"created_at": "2024-01-15 10:30:00",
"complex_transactions": []
},
{
"id": 12346,
"from": {
"id": 456,
"name": "Acme Corporation",
"type": "holding",
"avatar": "https://example.com/avatars/holding456.png"
},
"to": {
"id": 1,
"name": "United States",
"type": "country",
"avatar": "https://example.com/avatars/us.png"
},
"currency_id": 1,
"value": 5000,
"description": "Trade: 100 Food for 5000 USD",
"created_at": "2024-01-15 11:45:00",
"complex_transactions": [
{
"id": 789,
"from": {
"id": 1,
"type": "country"
},
"to": {
"id": 456,
"type": "holding"
},
"created_at": "2024-01-15 11:45:00",
"item_logs": [
{
"id": 1001,
"item_id": 1,
"quantity": 100,
"from": {
"id": 1,
"type": "country"
},
"to": {
"id": 456,
"type": "holding"
},
"description": "Trade: 100 Food for 5000 USD",
"created_at": "2024-01-15 11:45:00"
}
],
"currency_logs": [],
"stock_logs": []
}
]
}
],
"pagination": {
"current_page": 1,
"total_pages": 42,
"per_page": 25,
"total_records": 1048
}
}
400 Bad Request
{
"code": 400,
"description": "Bad Request",
"message": "country_id parameter is required"
}
Endpoint URL
Parameters
| Parameter | Type | Description | Default | Required |
|---|---|---|---|---|
id |
integer (path) | The ID of the country | - | Required |
Responses
200 Success - population, government, laws, ideology and congress, the regions the country rules, its treasury and its companies. For API keys can_view_reports is false.
{
"code": 200,
"description": "Success - population, government, laws, ideology and congress, the regions the country rules, its treasury and its companies. For API keys can_view_reports is false.",
"data": {
"population": {
"total": 740,
"active": 212,
"new_today": 3
},
"government": {
"president": {
"id": 42,
"name": "JohnDoe",
"avatar": "https://example.com/avatars/johndoe.png",
"role": "president"
},
"vice_president": null,
"ministers": [
{
"id": 43,
"name": "JaneDoe",
"avatar": "https://example.com/avatars/janedoe.png",
"role": "economy"
}
]
},
"laws": {
"average_salary": 14.5,
"currency": {
"id": 12,
"name": "PTE",
"icon": "https://example.com/avatars/pte.png"
}
},
"ideology": {
"rules": {
"1": [
{
"target": "npc_production",
"operator": "add",
"label": "%s%% NPC production",
"value": 0.25,
"unit": "percent",
"scope": "country",
"kind": "main",
"effect_type": "weighted_modifier",
"description2": null
}
]
},
"share": {
"capitalism": 40,
"nationalism": 25,
"centralism": 0,
"socialism": 15,
"imperialism": 20,
"communism": 0
},
"congress_parties": [
{
"id": 334,
"name": "Liberty Party",
"avatar": "https://example.com/avatars/party.png",
"share": 60,
"ideology_id": 1,
"members": []
}
],
"congress_seats": 10,
"congress_independents": {
"share": 0,
"members": []
},
"printing_cc_cost": 1,
"capabilities": {
"country_specific_import_taxes": {
"ideology_id": 6,
"communism_share": 0,
"required_share": 35,
"requirement": "greater_than",
"enabled": false,
"endpoint": "/country/13/import-taxes"
}
}
},
"regions": [
{
"id": 66,
"name": "Lisbon",
"is_capital": true,
"terrain_icon": "https://example.com/assets/icons/terrain/0.png",
"buildings": {
"hospital": 3,
"military_base": 5,
"production_fields": 2,
"industrial_zone": 1
},
"bonus_resource": {
"icon": "https://example.com/avatars/grain.png",
"percentage": 15
},
"pollution": 23,
"pollution_color": "#7cb342",
"strategically_contestable": true,
"provisionally_held": false,
"rightful_owner": {
"id": 13,
"name": "Portugal",
"avatar": "https://example.com/avatars/pt.png"
}
}
],
"wallet": [
{
"code": "PTE",
"icon": "https://example.com/avatars/pte.png",
"amount": 15230.5
}
],
"companies": [
{
"id": 89,
"name": "Portugal - Food Factory",
"image": "https://example.com/avatars/company.png",
"type": "Food Factory",
"quality": 1,
"region_name": "Lisbon",
"country_name": "Portugal"
}
],
"nationality_cost": 10,
"nationality_war_multiplier": 1,
"nationality_active_wars": 0,
"can_view_reports": false
}
}
400 Response
{
"code": 400,
"message": "Invalid country"
}
Endpoint URL
Parameters
| Parameter | Type | Description | Default | Required |
|---|---|---|---|---|
statistic |
string |
The statistic parameter to order countries by. With bonus, value is the per-item bonus breakdown instead of a number
Allowed values:
development
citizens
todaycitizens
productivity
activecitizens
damagetoday
damage
strength
regions
buildings
miners
npcwage
builders
bonus
|
- | Required |
Responses
200 Success - every country, highest value first (not paginated).
{
"code": 200,
"description": "Success - every country, highest value first (not paginated).",
"data": [
{
"country": {
"id": 1,
"name": "United States",
"avatar": "https://example.com/avatars/us.png"
},
"value": 1000000
}
]
}
400 Response
{
"code": 400,
"message": "Bad Request - The \"statistic\" query parameter is required."
}
Endpoint URL
Parameters
| Parameter | Type | Description | Default | Required |
|---|---|---|---|---|
order |
string |
The statistic to rank by; each row value is that statistic (strength is the military skill). Unknown values fall back to damage
Allowed values:
damage
invitedplayers
economicskill
strength
damagetoday
totalxp
miners
builders
achievements
|
damage
|
Optional |
country_id |
integer | Only citizens of this country (nationality); 0 lists every country |
0
|
Optional |
details |
integer |
Set to 1 to add level, economic_skill, strength, description, party, military_unit, military_rank and builder_rank to every row
Allowed values:
0
1
|
0
|
Optional |
page |
integer | The page number for pagination (25 citizens per page) |
1
|
Optional |
Responses
200 Success - only active citizens (seen in the last 7 days). Rows are in data.data with pagination next to them; the fields after value come only with details=1, and description is the player biography, which may contain HTML.
{
"code": 200,
"description": "Success - only active citizens (seen in the last 7 days). Rows are in data.data with pagination next to them; the fields after value come only with details=1, and description is the player biography, which may contain HTML.",
"data": {
"data": [
{
"rank": 1,
"account": {
"id": 42,
"name": "JohnDoe",
"avatar": "https://example.com/avatars/johndoe.png"
},
"country": {
"id": 13,
"name": "Portugal",
"flag": "https://example.com/avatars/pt.png"
},
"value": 5262066,
"level": 20,
"economic_skill": 11.07,
"strength": 12.22,
"description": "Veteran of the Iberian front",
"party": {
"id": 334,
"name": "Liberty Party",
"avatar": "https://example.com/avatars/party.png"
},
"military_unit": {
"id": 150,
"name": "Iron Wolves",
"avatar": "https://example.com/avatars/mu.png"
},
"military_rank": {
"id": 4,
"name": "Sergeant",
"icon": "https://example.com/avatars/rank_military.png"
},
"builder_rank": {
"id": 5,
"name": "Surveyor",
"icon": "https://example.com/avatars/rank_builder.png"
}
}
],
"pagination": {
"current_page": 1,
"total_pages": 8,
"per_page": 25,
"total_records": 187
}
}
}
Endpoint URL
Parameters
| Parameter | Type | Description | Default | Required |
|---|---|---|---|---|
order |
string |
The statistic to rank by; each row value is that statistic. Unknown values fall back to damage
Allowed values:
damage
economicskill
strength
damagetoday
builders
achievements
|
damage
|
Optional |
country_id |
integer | Only units of this country; 0 lists every country |
0
|
Optional |
page |
integer | The page number for pagination (25 units per page) |
1
|
Optional |
Responses
200 Success - rows are in data.data with pagination next to them.
{
"code": 200,
"description": "Success - rows are in data.data with pagination next to them.",
"data": {
"data": [
{
"rank": 1,
"unit": {
"id": 150,
"name": "Iron Wolves",
"avatar": "https://example.com/avatars/mu.png"
},
"country": {
"id": 13,
"name": "Portugal",
"flag": "https://example.com/avatars/pt.png"
},
"members": 24,
"value": 98231220
}
],
"pagination": {
"current_page": 1,
"total_pages": 4,
"per_page": 25,
"total_records": 83
}
}
}
Endpoint URL
Parameters
| Parameter | Type | Description | Default | Required |
|---|---|---|---|---|
event_wars |
integer | Display event wars or normal wars (0 for normal, 1 for event) |
0
|
Optional |
extra_details |
integer | Include extra details in the response (0 for no, 1 for yes) |
0
|
Optional |
expired |
integer | Show expired wars in the response (0 for no, 1 for yes) |
0
|
Optional |
war_id |
integer | The ID of the war to retrieve details for |
0
|
Optional |
page |
integer | The page number for pagination |
1
|
Optional |
Responses
200 Success - attackers_score and defenders_score count rounds won.
{
"code": 200,
"description": "Success - attackers_score and defenders_score count rounds won.",
"data": [
{
"id": 1,
"attackers": {
"id": 1,
"name": "United States",
"avatar": "https://example.com/avatars/us.png"
},
"defenders": {
"id": 2,
"name": "Portugal",
"avatar": "https://example.com/avatars/pt.png"
},
"region": {
"id": 1,
"name": "Lisbon"
},
"attackers_score": 3,
"defenders_score": 1,
"current_round_number": 5,
"current_round_id": 325432,
"flags": {
"is_revolution": 0
}
}
]
}
Endpoint URL
Parameters
| Parameter | Type | Description | Default | Required |
|---|---|---|---|---|
war_id |
integer | The ID of the war to retrieve hits for | - | Required |
Responses
200 Success
{
"code": 200,
"description": "Success",
"data": [
{
"id": 86653,
"end_date": "2025-07-07 05:42:38",
"attackers_score": 0,
"defenders_score": 0,
"attackers_points": 0,
"defenders_points": 0,
"attackers_hero": null,
"defenders_hero": null
},
{
"id": 86654,
"end_date": "2025-07-07 08:22:38",
"attackers_score": 0,
"defenders_score": 0,
"attackers_points": 0,
"defenders_points": 0,
"attackers_hero": null,
"defenders_hero": null
}
]
}
404 Response
{
"code": 404,
"message": "War not found"
}
Endpoint URL
Parameters
| Parameter | Type | Description | Default | Required |
|---|---|---|---|---|
war_round_id |
integer | The ID of the war round to retrieve hits for | - | Required |
page |
integer | The page number for pagination |
1
|
Optional |
Responses
200 Success
{
"code": 200,
"description": "Success",
"data": [
{
"id": 1,
"fighter": {
"id": 1,
"type": "account"
},
"damage": 1342,
"side": "ATTACKER",
"item_id": null,
"created_at": "2025-07-01 01:00:00"
},
{
"id": 1,
"fighter": {
"id": 1,
"type": "account"
},
"damage": 1252,
"side": "DEFENDER",
"item_id": null,
"created_at": "2025-07-01 00:01:00"
}
]
}
Endpoint URL
Parameters
| Parameter | Type | Description | Default | Required |
|---|---|---|---|---|
id |
integer (path) | The ID of the country | - | Required |
Responses
200 Success - the running election of each kind, or the latest one. status 1 means voting is open (total_votes stays null until it closes) and 0 means finished; use presidential.id and congress.id with the detail endpoints. For API keys has_voted and cannot_vote_reason are null and can_vote is false.
{
"code": 200,
"description": "Success - the running election of each kind, or the latest one. status 1 means voting is open (total_votes stays null until it closes) and 0 means finished; use presidential.id and congress.id with the detail endpoints. For API keys has_voted and cannot_vote_reason are null and can_vote is false.",
"data": {
"country": {
"id": 13,
"name": "Portugal",
"avatar": "https://example.com/avatars/pt.png"
},
"presidential": {
"type": "presidential",
"id": 592,
"status": 0,
"is_open": false,
"is_results": true,
"end_date": "2025-11-02 00:00:09",
"total_votes": 118,
"candidate_count": 3,
"has_voted": null,
"can_vote": false,
"cannot_vote_reason": null
},
"congress": {
"type": "congress",
"id": 642,
"status": 1,
"is_open": true,
"is_results": false,
"end_date": "2025-11-26 00:00:03",
"total_votes": null,
"candidate_count": 4,
"has_voted": null,
"can_vote": false,
"cannot_vote_reason": null
}
}
}
400 Response
{
"code": 400,
"message": "Bad Request"
}
Endpoint URL
Parameters
| Parameter | Type | Description | Default | Required |
|---|---|---|---|---|
id |
integer (path) | The ID of the presidential election | - | Required |
Responses
200 Success - while voting is open (status 1) votes and total_votes are null and candidates are listed alphabetically; once it closes they are sorted by votes and winner is filled. For API keys my_vote, has_voted and cannot_vote_reason are null, and can_vote and every is_my_vote are false.
{
"code": 200,
"description": "Success - while voting is open (status 1) votes and total_votes are null and candidates are listed alphabetically; once it closes they are sorted by votes and winner is filled. For API keys my_vote, has_voted and cannot_vote_reason are null, and can_vote and every is_my_vote are false.",
"data": {
"type": "presidential",
"id": 592,
"status": 0,
"is_open": false,
"end_date": "2025-11-02 00:00:09",
"scope": {
"kind": "country",
"id": 13,
"name": "Portugal",
"avatar": "https://example.com/avatars/pt.png"
},
"candidates": [
{
"id": 42,
"name": "JohnDoe",
"avatar": "https://example.com/avatars/johndoe.png",
"avatar_border": null,
"votes": 71,
"is_my_vote": false,
"party": {
"id": 334,
"name": "Liberty Party",
"avatar": "https://example.com/avatars/party.png",
"ideology_id": 1,
"ideology_name": "Capitalism"
}
}
],
"total_votes": 118,
"my_vote": null,
"has_voted": null,
"can_vote": false,
"cannot_vote_reason": null,
"min_level": 10,
"winner": {
"id": 42,
"name": "JohnDoe",
"avatar": "https://example.com/avatars/johndoe.png",
"avatar_border": null
}
}
}
400 Response
{
"code": 400,
"message": "Bad Request"
}
Endpoint URL
Parameters
| Parameter | Type | Description | Default | Required |
|---|---|---|---|---|
id |
integer (path) | The ID of the congress election | - | Required |
Responses
200 Success - candidates are parties. congress_slots is the number of seats and elected_deputies is filled once voting has closed. Votes, ordering and the API key viewer fields follow the presidential election rules.
{
"code": 200,
"description": "Success - candidates are parties. congress_slots is the number of seats and elected_deputies is filled once voting has closed. Votes, ordering and the API key viewer fields follow the presidential election rules.",
"data": {
"type": "congress",
"id": 642,
"status": 0,
"is_open": false,
"end_date": "2025-11-26 00:00:03",
"scope": {
"kind": "country",
"id": 13,
"name": "Portugal",
"avatar": "https://example.com/avatars/pt.png"
},
"candidates": [
{
"id": 334,
"name": "Liberty Party",
"avatar": "https://example.com/avatars/party.png",
"ideology_id": 1,
"ideology_name": "Capitalism",
"votes": 54,
"is_my_vote": false,
"party": null
}
],
"total_votes": 96,
"my_vote": null,
"has_voted": null,
"can_vote": false,
"cannot_vote_reason": null,
"min_level": 10,
"winner": {
"id": 334,
"name": "Liberty Party",
"avatar": "https://example.com/avatars/party.png",
"ideology_id": 1,
"ideology_name": "Capitalism"
},
"congress_slots": 8,
"elected_deputies": [
{
"party_id": 334,
"party_name": "Liberty Party",
"accounts": [
{
"id": 42,
"name": "JohnDoe",
"avatar": "https://example.com/avatars/johndoe.png",
"avatar_border": null
}
]
}
]
}
}
400 Response
{
"code": 400,
"message": "Bad Request"
}
Endpoint URL
Parameters
| Parameter | Type | Description | Default | Required |
|---|---|---|---|---|
id |
integer (path) | The ID of the country | - | Required |
Responses
200 Success - parties without active members are left out. For API keys viewer is null.
{
"code": 200,
"description": "Success - parties without active members are left out. For API keys viewer is null.",
"data": {
"parties": [
{
"id": 334,
"name": "Liberty Party",
"avatar": "https://example.com/avatars/party.png",
"members_count": 18,
"president_name": "JohnDoe"
}
],
"viewer": null
}
}
400 Response
{
"code": 400,
"message": "Invalid country"
}
Endpoint URL
Parameters
| Parameter | Type | Description | Default | Required |
|---|---|---|---|---|
id |
integer (path) | The ID of the party | - | Required |
Responses
200 Success - members are the active members in congress priority order; ideology_options holds the bonuses of each of the six ideologies. For API keys applications is empty and viewer and the elections ids are null.
{
"code": 200,
"description": "Success - members are the active members in congress priority order; ideology_options holds the bonuses of each of the six ideologies. For API keys applications is empty and viewer and the elections ids are null.",
"data": {
"id": 334,
"name": "Liberty Party",
"description": "For a strong Portugal",
"avatar": "https://example.com/avatars/party.png",
"country": {
"id": 13,
"name": "Portugal",
"avatar": "https://example.com/avatars/pt.png"
},
"president": {
"id": 42,
"name": "JohnDoe"
},
"ideology_id": 2,
"ideology_name": "Nationalism",
"ideology_bonuses": {
"main": [
{
"target": "defense_core_regions",
"operator": "add",
"value": 0.1,
"unit": "percent",
"scope": "region",
"label": "%s%% Damage defending core regions ruled by your country.",
"description2": null,
"effect_type": "weighted_modifier"
}
],
"buffs": [
{
"target": "revolution_damage_core",
"operator": "add",
"value": 0.1,
"unit": "percent",
"scope": "region",
"label": "%s%% Damage when reclaiming your country's rightful core regions",
"description2": null,
"effect_type": "weighted_modifier"
}
],
"debuffs": [
{
"target": "damage_outside_country",
"operator": "add",
"value": -0.1,
"unit": "percent",
"scope": "country",
"label": "%s%% Damage when fighting outside your core regions (both sides)",
"description2": null,
"effect_type": "weighted_modifier"
}
]
},
"ideology_options": [
{
"id": 1,
"bonuses": {
"main": [],
"buffs": [],
"debuffs": []
}
}
],
"ideology_change_cost": 95,
"auto_accept_members": 0,
"stats": {
"total_members": 18,
"active_deputies": 4,
"congress_share": 40
},
"members": [
{
"id": 42,
"name": "JohnDoe",
"avatar": "https://example.com/avatars/johndoe.png",
"rank": 1,
"is_president": true,
"is_congressperson": true,
"is_president_candidate": false,
"signup_congress": true,
"signup_party_leader": false
}
],
"applications": [],
"viewer": null,
"elections": {
"active_id": null,
"results_id": null
}
}
}
400 Response
{
"code": 400,
"message": "Invalid party"
}
Endpoint URL
Parameters
| Parameter | Type | Description | Default | Required |
|---|---|---|---|---|
id |
integer (path) | The ID of the country | - | Required |
Responses
200 Success - the open squads of every military unit of the country. For API keys managed_units is empty, my_military_unit_id is null and can_create is false.
{
"code": 200,
"description": "Success - the open squads of every military unit of the country. For API keys managed_units is empty, my_military_unit_id is null and can_create is false.",
"data": {
"squads": [
{
"squad_id": 7,
"name": "Alpha",
"level": 1,
"type": 1,
"type_name": "Ground",
"member_count": 2,
"military_unit_id": 150,
"military_unit_name": "Iron Wolves",
"military_unit_avatar": "https://example.com/avatars/mu.png"
}
],
"managed_units": [],
"my_military_unit_id": null,
"can_create": false
}
}
400 Response
{
"code": 400,
"message": "Invalid country"
}
Endpoint URL
Parameters
| Parameter | Type | Description | Default | Required |
|---|---|---|---|---|
id |
integer (path) | The ID of the military unit | - | Required |
Responses
200 Success - current_order is set only while the ordered war is running. Treasury, applications and member presence are for officers, so for API keys wallets and applications are empty, members carry no presence and viewer is null.
{
"code": 200,
"description": "Success - current_order is set only while the ordered war is running. Treasury, applications and member presence are for officers, so for API keys wallets and applications are empty, members carry no presence and viewer is null.",
"data": {
"id": 150,
"name": "Iron Wolves",
"description": "We fight at dawn",
"avatar": "https://example.com/avatars/mu.png",
"owner": {
"type": "account",
"id": 42,
"name": "JohnDoe",
"avatar": "https://example.com/avatars/johndoe.png"
},
"congressional_approvals_enabled": false,
"pending_ownership_transfer": null,
"country": {
"id": 13,
"name": "Portugal",
"avatar": "https://example.com/avatars/pt.png"
},
"total_members": 24,
"max_squads": 10,
"storage": {
"used": 24,
"capacity": 3750,
"market": 0
},
"current_order": {
"war_id": 686874,
"region": "Zahedan",
"attacker": {
"id": 13,
"name": "Portugal",
"avatar": "https://example.com/avatars/pt.png"
},
"defender": {
"id": 39,
"name": "Saudi Arabia",
"avatar": "https://example.com/avatars/sa.png"
},
"support": {
"id": 13,
"name": "Portugal"
}
},
"squads": [
{
"id": 419,
"name": "Squad 1",
"level": 1,
"type": 0,
"type_name": "General",
"is_open": 0,
"member_count": 4,
"members": [
{
"id": 42,
"name": "JohnDoe",
"avatar": "https://example.com/avatars/johndoe.png",
"squad_locked_until": null
}
]
}
],
"wallets": [],
"staff": {
"vices": [
{
"id": 43,
"name": "JaneDoe",
"avatar": "https://example.com/avatars/janedoe.png"
}
],
"commanders": [],
"managers": [],
"accountants": []
},
"applications": [],
"viewer": null
}
}
400 Response
{
"code": 400,
"message": "Invalid military unit"
}
Endpoint URL
Parameters
| Parameter | Type | Description | Default | Required |
|---|---|---|---|---|
id |
integer (path) | The ID of the holding company | - | Required |
Responses
200 Success - shareholders are listed only when the holding is public (shareholders_full says whether the list is complete) and reports only for holdings listed on the stock market. For API keys wallets is empty and storage and viewer are null.
{
"code": 200,
"description": "Success - shareholders are listed only when the holding is public (shareholders_full says whether the list is complete) and reports only for holdings listed on the stock market. For API keys wallets is empty and storage and viewer are null.",
"data": {
"id": 436,
"congressional_approvals_enabled": false,
"name": "Aussie Assets",
"avatar": "https://example.com/avatars/holding.png",
"description": "Mining and farming",
"is_public": true,
"is_listed": true,
"created_at": "2026-01-26 13:19:01",
"country": {
"id": 47,
"name": "Australia",
"avatar": "https://example.com/avatars/au.png"
},
"ceo": {
"id": 42,
"type": "account",
"name": "JohnDoe",
"avatar": "https://example.com/avatars/johndoe.png"
},
"governance": null,
"shares": {
"total_active": 100,
"total_raw": 100
},
"dividends": {
"count": 12,
"last_date": "2026-09-01 00:00:00",
"last_value": 250
},
"shareholders": [
{
"id": 42,
"type": "account",
"name": "JohnDoe",
"avatar": "https://example.com/avatars/johndoe.png",
"shares": 60,
"pct_active": 60,
"pct_raw": 60,
"voting_shares": null,
"pct_voting": null
}
],
"shareholders_full": true,
"staff": {
"vices": [],
"accountants": [],
"managers": [],
"salesmen": []
},
"companies": [
{
"id": 12013,
"name": "Outback Farm",
"image": "https://example.com/avatars/company.png",
"type": "Farm",
"quality": 1,
"region_name": "Perth",
"country_name": "Australia"
}
],
"proposals": [
{
"id": 88,
"proposal_id": 3,
"value": 500,
"value2": null,
"value3": null,
"status": 1,
"end_date": "2026-09-15 12:00:00",
"parsed_name": null,
"governance": null,
"proposal_payload": null
}
],
"reports": [
{
"id": 17,
"created_at": "2026-09-01 00:00:00"
}
],
"wallets": [],
"storage": null,
"viewer": null
}
}
400 Response
{
"code": 400,
"message": "Invalid holding"
}
Endpoint URL
Parameters
| Parameter | Type | Description | Default | Required |
|---|---|---|---|---|
id |
integer (path) | The ID of the company | - | Required |
Responses
200 Success - region is where the company stands (with its sovereign country); market is the country whose job market it belongs to, the ruler of that region, and net_salary is after that country work tax. For API keys can_manage is false.
{
"code": 200,
"description": "Success - region is where the company stands (with its sovereign country); market is the country whose job market it belongs to, the ruler of that region, and net_salary is after that country work tax. For API keys can_manage is false.",
"data": {
"id": 12013,
"name": "Outback Farm",
"image_url": "https://example.com/avatars/company.png",
"type": "Farm",
"quality": 1,
"region": {
"id": 215,
"name": "Bloemfontein",
"country_id": 37,
"country_name": "South Africa",
"country_flag": "https://example.com/avatars/za.png"
},
"market": {
"country_id": 13,
"country_name": "Portugal",
"country_flag": "https://example.com/avatars/pt.png"
},
"owner": {
"id": 436,
"name": "Aussie Assets",
"type": "holding",
"avatar_url": "https://example.com/avatars/holding.png"
},
"job_offers": [
{
"id": 176056,
"net_salary": 5.967,
"gross_salary": 7.459,
"amount": 1,
"currency_id": 12,
"currency": {
"id": 12,
"name": "PTE",
"avatar": "https://example.com/avatars/pte.png"
},
"economic_skill": 0
}
],
"employees": [
{
"id": 42,
"type": "account",
"username": "JohnDoe",
"avatar_url": "https://example.com/avatars/johndoe.png",
"skill": 3.5,
"work_days": 20,
"wage": 7.459,
"worked_today": true,
"currency": {
"id": 12,
"name": "PTE",
"avatar": "https://example.com/avatars/pte.png"
}
}
],
"created_at": "2026-03-18 13:11:05",
"is_listed": false,
"can_manage": false
}
}
400 Response
{
"code": 400,
"message": "Bad Request"
}
404 Response
{
"code": 404,
"message": "Not found"
}
Endpoint URL
Parameters
| Parameter | Type | Description | Default | Required |
|---|---|---|---|---|
status |
string |
Orders in this status; FINISHED means DONE and CANCELED together. Unknown values fall back to INPROGRESS
Allowed values:
INPROGRESS
DONE
CANCELED
FINISHED
|
INPROGRESS
|
Optional |
country_id |
integer | Only orders of this country; 0 lists every country |
0
|
Optional |
page |
integer | Page of the finished archive (25 per page); INPROGRESS returns every running order at once |
1
|
Optional |
Responses
200 Success - newest first, cached for up to 60 seconds.
{
"code": 200,
"description": "Success - newest first, cached for up to 60 seconds.",
"data": [
{
"id": 7164,
"building": {
"id": 1,
"name": "Hospital",
"avatar": "https://example.com/avatars/hospital.png"
},
"region": {
"id": 108,
"name": "Novo Mesto",
"type": 0,
"terrain_name": "Flat Land",
"image_url": "https://example.com/assets/regions/108.jpg"
},
"country": {
"id": 20,
"name": "Slovenia",
"flag": "https://example.com/avatars/si.png",
"is_npc": false
},
"target_level": 5,
"current_progress": 52531.178,
"needed_progress": 75000,
"progress_percentage": 70,
"contributors_count": 24,
"status": "INPROGRESS",
"created_at": "2025-10-27 18:10:10",
"last5_contributors": [
{
"id": 42,
"username": "JohnDoe",
"avatar": "https://example.com/avatars/johndoe.png",
"border": null
}
]
}
]
}
Endpoint URL
Parameters
| Parameter | Type | Description | Default | Required |
|---|---|---|---|---|
id |
integer (path) | The ID of the building order | - | Required |
Responses
200 Success - the list row plus current_level, start_cost and viewer. Here viewer describes the account that owns the API key (donation eligibility, energy cost, builder rank).
{
"code": 200,
"description": "Success - the list row plus current_level, start_cost and viewer. Here viewer describes the account that owns the API key (donation eligibility, energy cost, builder rank).",
"data": {
"id": 7164,
"building": {
"id": 1,
"name": "Hospital",
"avatar": "https://example.com/avatars/hospital.png"
},
"region": {
"id": 108,
"name": "Novo Mesto",
"type": 0,
"terrain_name": "Flat Land",
"image_url": "https://example.com/assets/regions/108.jpg"
},
"country": {
"id": 20,
"name": "Slovenia",
"flag": "https://example.com/avatars/si.png",
"is_npc": false
},
"target_level": 5,
"current_progress": 52531.178,
"needed_progress": 75000,
"progress_percentage": 70,
"contributors_count": 24,
"status": "INPROGRESS",
"created_at": "2025-10-27 18:10:10",
"last5_contributors": [
{
"id": 42,
"username": "JohnDoe",
"avatar": "https://example.com/avatars/johndoe.png",
"border": null
}
],
"current_level": 4,
"start_cost": 10,
"viewer": {
"can_donate": true,
"cannot_donate_reason": null,
"can_finish": false,
"is_manager": false,
"hits_today": 0,
"energy_cost": 10,
"energy_progress_estimate": 28,
"item_bonus_percentage": 0,
"item_progress_modifiers": {
"equipment_bonus_percentage": 0,
"construction_efficiency_percentage": 0,
"builder_rank_multiplier": 1.4,
"hammer_bonus_percentage": 0,
"hammer_study_bonus_percentage": 0,
"valid_for_seconds": null
},
"builder_rank": {
"name": "Surveyor",
"avatar": "https://example.com/avatars/rank_builder.png",
"multiplier": 1.4,
"points": 111693.427,
"next_rank_points": 250000
}
}
}
}
404 Response
{
"code": 404,
"message": "Building order not found"
}
Endpoint URL
Parameters
| Parameter | Type | Description | Default | Required |
|---|---|---|---|---|
id |
integer (path) | The ID of the building order | - | Required |
Responses
200 Success - the latest contributions, the contributor ranking and the totals. Here viewer describes the account that owns the API key.
{
"code": 200,
"description": "Success - the latest contributions, the contributor ranking and the totals. Here viewer describes the account that owns the API key.",
"data": {
"contributions": [
{
"id": 10358256,
"account": {
"id": 42,
"username": "JohnDoe",
"avatar": "https://example.com/avatars/johndoe.png",
"avatarBorder": null,
"countryFlag": "https://example.com/avatars/si.png"
},
"kind": "energy",
"item": null,
"amount": null,
"progress": 56.592,
"created_at": "2025-10-28 17:07:04"
}
],
"ranking": [
{
"id": 42,
"username": "JohnDoe",
"avatar": "https://example.com/avatars/johndoe.png",
"avatarBorder": null,
"countryFlag": "https://example.com/avatars/si.png",
"countryName": "Slovenia",
"totalProgress": 22920.622,
"totalDonations": 224,
"energyDonations": 222,
"itemDonations": 2,
"itemAmount": 23
}
],
"stats": {
"contributors_count": 24,
"donations_count": 2397,
"energy_donations_count": 2395,
"item_donations_count": 2,
"item_amount_total": 23,
"energy_progress_total": 151719.178,
"item_progress_total": 811.642,
"top_items": [
{
"item_id": 5,
"name": "Food",
"avatar": "https://example.com/avatars/food.png",
"quality": 4,
"total_amount": 22,
"total_progress": 808.579
}
],
"started_at": "2025-10-27 18:10:10",
"last_donation_at": "2025-10-28 17:07:04"
},
"viewer": {
"my_progress": 0,
"my_rank_position": null,
"my_donations": 0
}
}
}
404 Response
{
"code": 404,
"message": "Building order not found"
}
Endpoint URL
Parameters
| Parameter | Type | Description | Default | Required |
|---|---|---|---|---|
country_id |
integer | Only events of this country; 0 lists every country |
0
|
Optional |
event_id |
string | Only events of this type: a value from event_types, or disasters for every natural disaster. Unknown values are ignored |
0
|
Optional |
page |
integer | The page number for pagination (25 events per page) |
1
|
Optional |
Responses
200 Success - newest first. events[].id is the event type, not a row id; title and content (HTML with links) come in the language of the key owner account, and nuke_id is set on nuclear strike events. countries and event_types list the values the filters accept.
{
"code": 200,
"description": "Success - newest first. events[].id is the event type, not a row id; title and content (HTML with links) come in the language of the key owner account, and nuke_id is set on nuclear strike events. countries and event_types list the values the filters accept.",
"data": {
"events": [
{
"id": 7,
"image_id": 7,
"title": "New invasion started",
"content": "Portugal started an invasion",
"created_at": "2025-12-27 13:59:40",
"nuke_id": null
}
],
"countries": [
{
"id": 25,
"name": "Albania",
"avatar": "https://example.com/avatars/al.png"
}
],
"event_types": [
{
"value": "1",
"label": "New war started"
},
{
"value": "disasters",
"label": "Nature Events"
}
],
"pagination": {
"current_page": 1,
"total_pages": 695,
"per_page": 25,
"total_records": 17374
}
}
}
Endpoint URL
Responses
200 Success - no API key needed. Every launched strike not resolved yet, with times in Unix seconds; a strike can stay listed briefly after impact_at until the game engine processes it.
{
"code": 200,
"description": "Success - no API key needed. Every launched strike not resolved yet, with times in Unix seconds; a strike can stay listed briefly after impact_at until the game engine processes it.",
"data": {
"snapshot_timestamp": 1789401017.018925,
"server_time": 1789401017.056536,
"nukes": [
{
"nuke_id": 404,
"from_country_id": 13,
"from_region_id": 66,
"to_region_id": 4,
"launched_at": 1789400417,
"impact_at": 1789401617,
"duration_seconds": 1200,
"server_time": 1789401017.056536,
"timestamp": 1789401017.018925
}
]
}
}
Endpoint URL
Parameters
| Parameter | Type | Description | Default | Required |
|---|---|---|---|---|
id |
integer (path) | The ID of the strike (nuke_id) | - | Required |
Responses
200 Success - buildings lists the impact on the target region and its connected regions; it stays empty until the strike lands.
{
"code": 200,
"description": "Success - buildings lists the impact on the target region and its connected regions; it stays empty until the strike lands.",
"data": {
"attacker": {
"id": 13,
"name": "Portugal",
"avatar": "https://example.com/avatars/pt.png"
},
"target_region": {
"id": 4,
"name": "Edinburgh"
},
"target_country": {
"id": 2,
"name": "United Kingdom",
"avatar": "https://example.com/avatars/uk.png"
},
"hit_at": "2025-11-03 01:39:12",
"buildings": [
{
"name": "Hospital",
"region": {
"id": 4,
"name": "Edinburgh"
},
"is_target_region": true,
"level_before": 5,
"level_after": 3,
"levels_decreased": 2,
"status": "level_reduced",
"hits": 2
}
]
}
}
404 Response
{
"code": 404,
"message": "Not found"
}
Endpoint URL
Parameters
| Parameter | Type | Description | Default | Required |
|---|---|---|---|---|
newspaper_id |
integer | The ID of the newspaper to retrieve information for | - | Required |
Responses
200 Success
{
"code": 200,
"description": "Success",
"data": {
"id": 12,
"name": "The Daily Eclesiar",
"avatar": "https://example.com/avatars/newspaper.png",
"owner": {
"id": 42,
"type": "account",
"name": "JohnDoe",
"avatar": "https://example.com/avatars/johndoe.png"
},
"subscription_cost": 0,
"is_free": true,
"nb_subscribers": 134,
"nb_articles": 27,
"created_at": "2025-03-12 18:24:11"
}
}
400 Response
{
"code": 400,
"message": "Newspaper ID is required"
}
404 Response
{
"code": 404,
"message": "Newspaper not found"
}
Endpoint URL
Parameters
| Parameter | Type | Description | Default | Required |
|---|---|---|---|---|
newspaper_id |
integer | The ID of the newspaper to retrieve articles for | - | Required |
page |
integer | The page number for pagination (25 articles per page, newest first) |
1
|
Optional |
Responses
200 Success
{
"code": 200,
"description": "Success",
"data": [
{
"id": 1043,
"title": "Economic Update for Q3",
"category": "Economics",
"has_paywall": false,
"paywall_price": null,
"nb_votes": 45,
"nb_comments": 12,
"writer": {
"id": 42,
"username": "JohnDoe",
"avatar": "https://example.com/avatars/johndoe.png"
},
"created_at": "2025-06-03 11:32:52"
}
]
}
400 Response
{
"code": 400,
"message": "Newspaper ID is required"
}
404 Response
{
"code": 404,
"message": "Newspaper not found"
}
Endpoint URL
Parameters
| Parameter | Type | Description | Default | Required |
|---|---|---|---|---|
article_id |
integer | The ID of the article to retrieve. Paywall content is never exposed through the public API; has_paywall and paywall_price indicate whether additional paid content exists. | - | Required |
Responses
200 Success
{
"code": 200,
"description": "Success",
"data": {
"id": 1043,
"title": "Economic Update for Q3",
"category": "Economics",
"content": "This quarter showed...
",
"has_paywall": false,
"paywall_price": null,
"nb_votes": 45,
"nb_comments": 12,
"newspaper": {
"id": 12,
"name": "The Daily Eclesiar",
"avatar": "https://example.com/avatars/newspaper.png",
"owner_id": 42,
"owner_type": "account",
"owner_name": "JohnDoe"
},
"writer": {
"id": 42,
"username": "JohnDoe",
"avatar": "https://example.com/avatars/johndoe.png"
},
"created_at": "2025-06-03 11:32:52"
}
}
400 Response
{
"code": 400,
"message": "Article ID is required"
}
404 Response
{
"code": 404,
"message": "Article not found"
}
Endpoint URL
Parameters
| Parameter | Type | Description | Default | Required |
|---|---|---|---|---|
article_id |
integer | The ID of the article to retrieve comments for | - | Required |
page |
integer | The page number for pagination (25 top-level comments per page, newest first; replies are nested in each comment) |
1
|
Optional |
Responses
200 Success
{
"code": 200,
"description": "Success",
"data": [
{
"id": 501,
"content": "Great article!",
"nb_votes": 5,
"writer": {
"id": 101,
"username": "Player2",
"avatar": "https://example.com/avatars/player2.png"
},
"replies": [
{
"id": 502,
"content": "Thanks!",
"nb_votes": 1,
"writer": {
"id": 42,
"username": "JohnDoe",
"avatar": "https://example.com/avatars/johndoe.png"
},
"created_at": "2025-06-03 13:05:10"
}
],
"created_at": "2025-06-03 12:48:33"
}
]
}
400 Response
{
"code": 400,
"message": "Article ID is required"
}
404 Response
{
"code": 404,
"message": "Article not found"
}