Ad Account¶
An ad account is the billing and reporting container for one advertiser app. Nova Play runs one ad account per game, so there are 10 ad accounts: 6 Android games and 4 iOS games. All accounts bill in USD and report in the UTC timezone.
Ad account ids are always written with the act_ prefix in paths and in the id field
(act_199454714457591). The bare numeric id is available as account_id
(199454714457591); insights rows use the bare form.
Fields¶
| Field | Type | Description |
|---|---|---|
id |
string | Account id with act_ prefix. Always returned. |
account_id |
string | Numeric account id without prefix. Matches account_id in insights rows. |
name |
string | Game name followed by the OS in parentheses, e.g. Dragon Merge Saga (Android). |
currency |
string | ISO currency code. Always USD. |
timezone_name |
string | Reporting timezone. Always UTC. |
timezone_offset_hours_utc |
int | Always 0. |
account_status |
int | 1 = ACTIVE. All Nova Play accounts are active. |
disable_reason |
int | Always 0. |
is_prepay_account |
bool | Always false. |
business |
object | { "id", "name" } of the owning business (Nova Play). |
created_time |
datetime | YYYY-MM-DDTHH:MM:SS+0000. |
promoted_app_store_url |
string | Store listing of the game this account promotes. The app id is the id= query parameter (Google Play) or the last path segment (App Store). |
Default fields when fields is omitted: id,account_id.
Edges¶
| Edge | Description |
|---|---|
/act_<id>/campaigns |
Campaigns in the account. |
/act_<id>/adsets |
All ad sets in the account, across campaigns. |
/act_<id>/ads |
All ads in the account, across ad sets. |
/act_<id>/insights |
Performance at any level (account, campaign, adset, ad). |
List ad accounts: GET /me/adaccounts¶
Returns every ad account the token can read.
| Parameter | Type | Required | Description |
|---|---|---|---|
access_token |
string | yes | Personal token (or Authorization: Bearer). |
fields |
string | no | Comma-separated list of the fields above. Default id,account_id. |
limit |
int | no | Page size, default 25, maximum 500. There are only 10 accounts, so one page is enough. |
after |
string | no | Cursor from a previous page. See Paging. |
curl -G "https://graph.huydata.com/v21.0/me/adaccounts" \
-d "access_token=$META_ACCESS_TOKEN" \
-d "fields=id,name,account_id,currency,timezone_name,account_status,promoted_app_store_url,business"
{
"data": [
{
"id": "act_199454714457591",
"name": "Dragon Merge Saga (Android)",
"account_id": "199454714457591",
"currency": "USD",
"timezone_name": "UTC",
"account_status": 1,
"promoted_app_store_url": "https://play.google.com/store/apps/details?id=com.novaplay.dragonmerge",
"business": {
"id": "100000000000001",
"name": "Nova Play"
}
},
{
"id": "act_195371095837700",
"name": "Idle Mining Empire (Android)",
"account_id": "195371095837700",
"currency": "USD",
"timezone_name": "UTC",
"account_status": 1,
"promoted_app_store_url": "https://play.google.com/store/apps/details?id=com.novaplay.idlemining",
"business": {
"id": "100000000000001",
"name": "Nova Play"
}
},
{
"id": "act_125122534005354",
"name": "Puzzle Blast Mania (iOS)",
"account_id": "125122534005354",
"currency": "USD",
"timezone_name": "UTC",
"account_status": 1,
"promoted_app_store_url": "https://apps.apple.com/app/id1600000011",
"business": {
"id": "100000000000001",
"name": "Nova Play"
}
},
"..."
],
"paging": {
"cursors": {
"before": "b2Zmc2V0OjA",
"after": "b2Zmc2V0OjEw"
}
}
}
There is no paging.next because all 10 accounts fit in one page.
Read one ad account: GET /act_<account_id>¶
| Parameter | Type | Required | Description |
|---|---|---|---|
access_token |
string | yes | Personal token. |
fields |
string | no | Comma-separated list of the fields above. Default id,account_id. |
curl -G "https://graph.huydata.com/v21.0/act_199454714457591" \
-d "access_token=$META_ACCESS_TOKEN" \
-d "fields=id,name,account_id,currency,timezone_name,account_status,business,created_time,promoted_app_store_url"
{
"id": "act_199454714457591",
"name": "Dragon Merge Saga (Android)",
"account_id": "199454714457591",
"currency": "USD",
"timezone_name": "UTC",
"account_status": 1,
"business": {
"id": "100000000000001",
"name": "Nova Play"
},
"created_time": "2025-10-15T09:00:00+0000",
"promoted_app_store_url": "https://play.google.com/store/apps/details?id=com.novaplay.dragonmerge"
}
Without fields, only the defaults come back:
{
"id": "act_199454714457591",
"account_id": "199454714457591"
}
Errors specific to this object¶
code |
error_subcode |
type |
Message | Cause |
|---|---|---|---|---|
100 |
33 |
GraphMethodException |
Unsupported get request. Object with ID 'act_123' does not exist, ... |
The account id is not one of the 10 Nova Play accounts. |
100 |
— | OAuthException |
(#100) Tried accessing nonexisting field (xyz) on node type (AdAccount) |
A name in fields is not an ad account field. |
{
"error": {
"message": "Unsupported get request. Object with ID 'act_123' does not exist, cannot be loaded due to missing permissions, or does not support this operation.",
"type": "GraphMethodException",
"code": 100,
"error_subcode": 33,
"fbtrace_id": "AoeFaty9DVAYm_-nQjVGt"
}
}