Introduction to the Management API
The process of creating and maintaining waterfalls is both time and resource consuming. Once you have completed the verification process, the Management API provides a simple and quick method for publishers to create and maintain all settings required to monetize their apps with ads.
With the Management API you can perform the following functions for Apps and Placements:
- Get (retrieve)
- Create
- Update
- Delete
The Management API enables automation of the processes, when relying on insights and decisions taken on the publisher side.
User Verification
DT's API endpoints are secured, and must be used with an authentication token.
The first step is to obtain an authorization header for authentication. This enables you to use the Management API and be verified as a user within the Console.
Generating your verification keys:
- Click your login user name in the top-left corner
- Click User Profile to open the User Profile Window
In the Management API - Credentials section, the Client ID and Client Secret Keys are displayed.
Click Revoke to cancel the Client ID and Client Secret keys. Then click Generate New Keys to receive new keys.
The keys you have generated must now be placed in the Endpoint to generate your Access Token to the Management API.
Generating Your Access Token
Copy both the Client ID and Client Secret keys and create an HTTP request with the following body.
DescriptionUse the UI Management API credentials to authenticate your user and get back an access token to authorize further requests.
MethodPOST https://console.fyber.com/api/v2/management/auth
Request Parameters
Key | Description | Type | Required | Example |
---|---|---|---|---|
grant_type |
This key is constant and should always be completed for this API as "management_client |
String |
Required |
"management_client_ credentials" |
client_id | The Client ID token from the UI received for authentication. | String | Required | “677eXXXXXXcdcc3fd790 deb46duyud4” |
client_secret | The Client Secret token from the UI received for authentication. | String | Required | “ghhjhiGHXXXXXX87686" |
Example Request
{
"grant_type": "management_client_credentials",
"client_id": "677e6543049XXXXXXXXX0deb46d2ecd4",
"client_secret": "d0iSLq5y6XXXXXuOyM4blm8GwzQ
b2sLOlcBtsI9KvBx9tGuucM2kvrdxXXXXXPjIunXbATQTkHDjHv
VEVv1JgXFj0EUWmuNpNH53p9SnGWxwXXXXgdJSkCUDuHaDeFWH
z-prMEGftXXXXXXfa_-8mRZURDZu2d_CRnwZ-Z51EnuFszgEP0
4f1AjcKTVhNSw0rXXXXXXdKaGZNM4EPsV5SxLBZKKdQxa3PPW
L1Cb56U9ftviXPJKU47nAzXXXXXXXdfXKBsMCG2FX3nB7E2Ei
b_yHNK0EtXX4zFTr8uYRXXXXXXXCLMVRUxNjQ"
}
Response Parameters
Key | Description | Type | Required | Example |
---|---|---|---|---|
accessToken | Token to be used to authorize future requests | String | Required |
“eyJhbGciXXXXXXXXsInR5cCI6IkpXVC |
tokenType | Only bearer token type is available | String | Required | “bearer” |
expiresIn | The number of seconds for which the token is valid (3600 seconds = 1 hour) | String | Required |
3600 |
Example Response
{
"accessToken": "eyJhbGciXXXXXiIsInR5cCI6IkpXVCJ9.
eyJpYXQiOjE2Mjg2NzI4OTMsIXXXXXXXODY3NjQ5MywiYXfdhei
bWFuYWdlbWVuXXXXXXXnN1YiI6IjM2MiJ9.cjx3AgYcI0w5qG0YkVs
O6F_7M72lu_pqSqtXXXXXU",
"tokenType": "bearer",
"expiresIn": 3600
}
App Level
Here you can find the endpoints and parameters for Apps, using the DT Management API.
Get App/Apps
Description
Return the app's saved configuration by App ID.
Return all apps (of a single user)
Method
GET https://console.fyber.com/api/management/v1/app?appId=
GET https://console.fyber.com/api/management/v1/app?publisherId=
HeadersContentType: application/json
Authorization: Bearer <Access Token from Authentication Response>
Request Parameters
Key | Description | Type | Required | Example |
---|---|---|---|---|
appId | The ID of the app | Number | Required | 1070709 |
publisherId | The ID of the publisher | Number | Required | 4 |
Example Request
https://console.fyber.com/api/management/v1/app?appId=170709
When a boolean field is left empty, the value of the empty string is automatically parsed as false.
Response Parameters
Key | Description | Type | Example |
---|---|---|---|
appId | DT App ID | String | “170709” |
publisherId | DT Publisher ID | String | “3432” |
name | The name of the app | String | “CashCrash” |
bundle | App's android bundle or iOS Store ID | String | “com.cash_crash.54” |
status | The status of the app. Can be either "active" or "inactive" |
String | “active” |
platform | App's platform (Android or iOS) | String | "android" |
storeURL | App's store URL | String |
“https://play.google.com/store |
category1 | App's first store category | String | "Business" |
category2 | App's second store category | String | "Finance" |
coppa | Children's Online Privacy Protection Act. Is the app directed to children under 13 years of age? | Boolean | false |
rewardedAdUrl | URL to be used for server-side callbacks on app's rewarded placements | String | "https://mygamesdomain. com/callbacks.aspx?user_id={{USER_ID}}&reward_amount={{AMOUNT}} &signature={{SIG}}" |
rewardedAdSecurityToken | String | “036xxxx5027e12c00f85a 4cbec3d1XXXXXa608cc 573a3482bXXXXX1164b8 64169” |
Example Response
{
"appId": "170709",
"publisherId": "4",
"name": "bKash",
"bundle": "com.bKash.customerapp",
"status": "active",
"platform": "android",
"storeUrl": "https://play.google.com/store/apps/details?
id=com.bKash.customerapp",
"category1": "Finance",
"category2": "APPLICATION",
"coppa": false,
"rewardedAdUrl": "https://mygamesdomain.com/callbacks.
aspx?user_id={{USER_ID}}&reward_amount={{AMOUNT}}&
signature={{SIG}}", "rewardedAdSecurityToken":
"036ae5027XXXXXXXXX161a632a608cc573a3482b9c1XXXXX4b864169"
}
Create an App
Method
POST https://console.fyber.com/api/management/v1/app
HeadersContentType: application/json
Authorization: Bearer <Access Token from Authentication Response>
Request Parameters
Key | Description | Type | Required | Example |
---|---|---|---|---|
name | The name of the app | String | Required | "CashCrash" |
bundle | App's Android bundle or iOS Store ID | String | Required | "com.cash_crash.54" |
platform | App's platform (Android or iOS) | String | Required | "android" |
category1 | App's first store category | String | Required | "business" |
coppa | Children's Online Privacy Protection Act. Is the app directed to children under 13 years of age? | String | Required | false |
rewardedAdUrl | URL to be used for server side call back on app’s rewarded placements | String | Optional | "https://mygameesdomain.com /callbacks.aspx?user_id={{USER_ID}}&reward_amount ={{AMOUNT}}&signature={{SIG}}" |
category2 | App’s second store category | String | Optional | “Finance” |
Example Request
{
"publisherId": "3432",
"status": "active",
"name": "CashCrash",
"coppa": true,
"platform": "ios",
"category1": "Books",
"category2": "Business",
"bundle": "com.cash_crash.54",
"rewardedAdUrl": "https://mygameesdomain.com/callbacks
.aspx?user_id={{USER_ID}}&reward_amount={{AMOUNT}}
&signature={{SIG}}"
}
Response Parameters
Key | Description | Type | Example |
---|---|---|---|
appId | DT App ID | String | “170709” |
publisherId | DT Publisher ID | String | “3432” |
name | The name of the App | String | “CashCrash” |
bundle | App’s Android bundle or iOS store ID | String | “com.cash_crash.54” |
status | The status of the app. Can be either "active" or "inactive" |
String | “active” |
platform | App’s platform (Android or iOS) | String | “android” |
storeURL | App’s store URL | String | “https://play.google.com/store /apps/details?id=com.bKash. customerapp“ |
category1 | App’s first store category | String | “Business” |
category2 | App’s second store category | String | "Finance" |
coppa | Children's Online Privacy Protection Act. Is the app directed to children under 13 years of age? | Boolean | False |
rewardedAdUrl | URL to be used for server side call back on app’s rewarded placements | String | "https://mygameesdomain.com/ callbacks.aspx?user_id={{USER_ID}} &reward_amount={{AMOUNT}} &signature={{SIG}}" |
rewardedAdSecurityToken | String | “000096ae5027e12c00f 85a4XXXXXX3d161a632 a608ccXXXXXX82b9c 1151164b864169” |
Example Response
{
"appid": "170709",
"publisherId": "4",
"name": "CashCrash,
"bundle": "com.cash_crash.54",
"status": "active",
"platform": "ios",
"storeUrl": "",
"category1": "Books",
"category2": "Business",
"coppa": true,
"rewardedAdUrl": "https://mygameesdomain.com/callbacks
.aspx?user_id={{USER_ID}}&reward_amount={{AMOUNT}}
&signature={{SIG}}", "rewardedAdSecurityToken":
"d613c47d081eXXXXXXXXXXf19f90a197ba4b5057556493f1e5759b14c"
}
Update an App
Description
Update an existing app.
Method
PUT https://console.fyber.com/api/management/v1/app
HeadersContentType: application/json
Authorization: Bearer <Access Token from Authentication Response>
Request Parameters
Key | Description | Type | Required | Example |
---|---|---|---|---|
appId | DT App ID | String | Required | "170709" |
status | The status of the app. Can be either "active" or "inactive" |
String | Optional | "active" |
coppa | Children's Online Privacy Protection Act. Is the app directed to children under 13 years of age? | Boolean | Optional | true |
rewardedAdUrl | URL to be used for server-side call back on app's rewarded placements | String | Optional |
"https://mygameesdomain.com |
Example Request
{
"appId": "178505",
"coppa": true,
"status": "inactive",
"rewardedAdUrl": "https://check546745674.com/callbacks.
aspx?user_id={{USER_ID}}&reward_amount={{AMOUNT}}&signature
={{SIG}}"
}
Delete an App
Description
Delete an existing app.
Method
DELETE https://console.fyber.com/api/management/v1/app
HeadersContentType: application/json
Authorization: Bearer <Access Token from Authentication Response>
Request Parameters
Key | Description | Required | Type |
---|---|---|---|
appId | The ID of the app | Required | String |
Example Request
{
"appId": "123123"
}
Example Response
{
"message": "App 178441 has been deleted successfully."
}
Placement Level
Here you can find the endpoints and parameters for Placements, using the DT Management API.
Get Placement / Placements
Description
Return the placement’s configuration by placement ID.
Return all placements of a single app.
Method
GET https://console.fyber.com/api/management/v1/placement?placementId=
GET https://console.fyber.com/api/management/v1/placement?appId=
HeadersContentType: application/json
Authorization: Bearer <Access Token from Authentication Response>
Request Parameters
Key | Description | Type | Required | Example |
---|---|---|---|---|
placementId | The ID of the Placement | Number | Required | 10804 |
appId | The ID of the app | Number | Required | 170709 |
Example Request
https://console.fyber.com/api/management/v1/placement?placementId=10804
Response Parameters
Key | Description | Type | Example |
---|---|---|---|
placementId | The ID of the Placement | String | “24542” |
status | The status of the placement. Can be either "active" or "inactive" |
String | "active" |
name | The name of the Placement | String | "int_13" |
appId | The ID of the Placement's app | String | "12345" |
placementType | The Placement type ("Banner", "Rewarded", "Interstitial", "MREC") | String | "Banner" |
coppa | Children's Online Privacy Protection Act. Is the app directed to children under 13 years of age? | Boolean | false |
createTypes (Interstitial only) |
Allowed creative types for interstitial Placement | String array | ["video", "display"] |
bannerRefresh |
Set the Refresh Interval for the app banner placement. This determines the frequency in which a banner placement is refreshed. | Number | 45 |
floorPrices | The minimal price at which you are willing to sell your inventory. By default, it is set to $0.01 for all countries. | Object array (country: string, price: number) | [{ “country”: “WW”, “price”: 0.01 },{ “country”: “IL”, “price”: 0.05 }] |
targetingEnabled | Enable audience targeting by countries or connection type | Boolean | true |
geo | Geo target countries | Object (include: boolean, countries: string array) | { "countries": [ "BT", "SG" ], "include": true } |
connectivity | Targeted connection type (“Cellular”, “WIFI”) | String array | [“WIFI”] |
capping | *only if enabled=true Limit the number of impressions per second / minute / day |
Object (value: number, unit: string, enabled: boolean) | { "value": 12, "unit": "minute", "enabled": true } |
pacing | *only if enabled=true Set the pace for the maximum number of ad impressions per second / miמute / day / hour |
Object (value: number, unit: string, enabled: boolean) | { "value": 12, "unit": "minute", "enabled": true } |
ssrConfig (Rewarded only) |
*only if enabled=true | Object (currency: string, amount: number, enabled: boolean) | {"currency": "dollars", "amount": 3456, "enabled": true } |
skipability | Ads can be skippable or non-skippable | String | "NonSkippable" |
Response Example
{
"placementId": "10804",
"name": "Rewarded Placement",
"appId": "170709",
"placementType": "Rewarded",
"status": "active",
"coppa": true,
"rewardedConfig": {
"id": "",
"currency": {
"id": "dollars",
"appId": "",
"currency": "dollars"
},
"amount": 3456,
"rewardingType": "server",
"placementId": ""
},
"floorPrices": [
{
"country": "AF",
"price": 0.05
},
{
"country": "SG",
"price": 0.03
},
{
"country": "WW",
"price": 0.01
}
],
"targetingEnabled": true,
"geo": {
"include": true,
"countries": [
"BT"
]
},
"capping": {
"value": 12,
"unit": "minute",
"enabled": true
},
"pacing": {
"value": 13,
"unit": "second",
"enabled": true
}
}
Create a Placement
Description
Create a new placement
Method
POST https://console.fyber.com/api/management/v1/placement
HeadersContentType: application/json
Authorization: Bearer <Access Token from Authentication Response>
Request Parameters
Key | Description | Type | Required | Example |
---|---|---|---|---|
name | The name of the placement | String | Required | "int_13" |
appId | The ID of the placement's app | String | Required | "12345" |
placementType | The placement type ("Banner", "Rewarded", "Interstitial", "MREC") | String | Required | "Rewarded" |
coppa | Children's Online Privacy Protection Act. Is the app directed to children under 13 years of age? | Boolean | Required | false |
creativeTypes (Interstitial only) |
Allowed creative types for interstitial placement | String array | Optional | [“video”, “display״] |
bannerRefresh (Banner only) |
Set the Refresh Interval for the app banner placement. This determines the frequency in which a banner placement is refreshed. | Number | Optional | 45 |
floorPrices | The minimal price at which you are willing to sell your inventory. By default, it is set to $0.01 for all countries. | Object Array (country: string, price: number) | Optional |
[{ “country”: “WW”, “price”: 0.01 },{ “country”: “IL”, “price”: 0.05 }] |
targetingEnabled | Enable audience targeting by countries or connection type | Boolean | Optional | true |
geo | Geo target countries *only if targetingEnabled=true | Object (include: boolean, countries: string array) | Optional |
{ "countries": [ "BT", "SG" ], "include": true } |
connectivity | Targeted connection type (“Cellular”, “WIFI”) **only if targetingEnabled=true | String array | Optional | [“WIFI”] |
capping | *only if enabled=true Limit the number of impressions per second / minute / day |
Object (value: number, unit: string, enabled: boolean) | Optional |
{ "value": 12, |
pacing | *only if enabled=true Set the pace for the maximum number of ad impressions per second / miמute / day / hour |
Object (value: number, unit: string, enabled: boolean) | Optional |
{ |
ssrConfig (Rewarded only) |
*only if enabled=true | Object (currency: string, amount: number, enabled: boolean) | Optional |
{"currency": "dollars", |
skipability | Ads can be skippable or non-skippable | String | Optional | "NonSkippable" |
{
"name": "int_13",
"appId": "12345",
"placementType": "Rewarded",
"coppa": true,
"ssrConfig": {
"currency": "dollars",
"amount": 3456,
"enabled": true
},
"targetingEnabled": true,
"geo": {
"countries": [
"BT",
"SG"
],
"include": true
},
"connectivity": ["WIFI"],
"floorPrices": [
{
"price": 0.05,
"country": "AF"
},
{
"price": 0.03,
"country": "SG"
}
],
"capping": {
"value": 12,
"unit": "minute",
"enabled": true
},
"pacing": {
"value": 13,
"unit": "second",
"enabled": true
}
}
Response Parameters
Key | Description | Type | Example |
---|---|---|---|
placementId | The ID of the newly created placement | String | “24542” |
status | The status of the placement. Can be either "active" or "inactive" |
String | “active” |
name | The name of the placement | String | “int_13” |
appId | The ID of the placement's app | String | “12354” |
placementType | The placement type ("Banner", "Rewarded" or "Interstitial", "MREC") | String | “Banner” |
coppa | Children's Online Privacy Protection Act. Is the app directed to children under 13 years of age? | Boolean | false |
creativeTypes (Interstitial only) |
Allowed creative types for interstitial placement | String Array | [“video”, “display״] |
bannerRefresh (Banner only) |
Set the Refresh Interval for the app banner placement. This determines the frequency in which a banner placement is refreshed. | Number | 45 |
floorPrices | The minimal price at which you are willing to sell your inventory. By default, it is set to $0.01 for all countries. | Object array (country: string, price: number) | [{ “country”: “WW”, “price”: 0.01 },{ “country”: “IL”, “price”: 0.05 }] |
targetingEnabled | Enable audience targeting by countries or connection type | Boolean | true |
geo | Geo target countries | Object (include: boolean, countries: string array) | { "countries": [ "BT", "SG" ], "include": true } |
connectivity | Targeted connection type ("Cellular" or "WIFI") | String array | [“WIFI”] |
capping | *only if enabled=true Limit the number of impressions per second / minute / day |
Object (value: number, unit: string, enabled" boolean) | { "value": 12, "unit": "minute", "enabled": true } |
pacing | *only if enabled=true Set the pace for the maximum number of ad impressions per second / miמute / day / hour |
Object (value: number, unit: string, enabled" boolean) | { "value": 12, "unit": "minute", "enabled": true } |
ssrConfig (Rewarded only) |
*only if enabled=true | Object (currency: unit: string, amount, number enabled" boolean) | {"currency": "dollars", "amount": 3456, "enabled": true } |
skipability | Ads can be skippable or non-skippable | String | "NonSkippable" |
Example Response
{
"PlacementId": "245254",
"name": "Rewarded Placement",
"appId": "170709",
"placementType": "Rewarded",
"status": "active",
"coppa": true,
"rewardedConfig": {
"id": "",
"currency": {
"id": "dollars",
"appId": "",
"currency": "dollars"
},
"amount": 3456,
"rewardingType": "server",
"placementId": ""
},
"floorPrices": [
{
"country": "AF",
"price": 0.05
},
{
"country": "SG",
"price": 0.03
},
{
"country": "WW",
"price": 0.01
}
],
"targetingEnabled": true,
"geo": {
"include": true,
"countries": [
"BT"
]
},
"capping": {
"value": 12,
"unit": "minute",
"enabled": true
},
"pacing": {
"value": 13,
"unit": "second",
"enabled": true
}
}
Update a Placement
Description
Update an existing placement by Placement ID.
Method
PUT https://console.fyber.com/api/management/v1/placement
HeadersContentType: application/json
Authorization: Bearer <Access Token from Authentication Response>
Request Parameters
Key | Description | Type | Required | Example |
---|---|---|---|---|
placementId | The ID of the placement | String | Required | "123123" |
status | The status of the placement. Can be either "active" or "inactive" |
String | Optional | "active" |
name | The name of the placement | String | Optional | "int_13" |
coppa | Children's Online Privacy Protection Act. Is the app directed to children under 13 years of age? | Boolean | Optional | false |
creativeTypes (Interstitial only) |
Allowed creative types for Interstitial placement | String array | Optional | [“video”, “display״] |
bannerRefresh (Banner only) |
Set the Refresh Interval for the app banner placement. This determines the frequency in which a banner placement is refreshed. | Number | Optional | 45 |
floorPrices | The minimal price at which you are willing to sell your inventory. By default, it is set to $0.01 for all countries. | Object array (country: string, price: number) | Optional | [{ “country”: “WW”, “price”: 0.01 },{ “country”: “IL”, “price”: 0.05 }] |
targetingEnabled | Enable audience targeting by countries or connection type | Boolean | Optional | true |
geo | Geo target countries *only if targetingEnabled=true | Object (include: boolean, countries: string array) | Optional | { "countries": [ "BT", "SG" ], "include": true } |
connectivity | Targeted connection type ("Cellular" or "WIFI") *only if targetingEnabled=true |
String array | Optional | [“WIFI”] |
capping | *only if enabled=true Limit the number of impressions per second / minute / day |
Object (value: number, unit: string, enabled" boolean) | Optional | { "value": 12, "unit": "minute", "enabled": true } |
pacing | *only if enabled=true Set the pace for the maximum number of ad impressions per second / miמute / day / hour |
Object (value: number, unit: string, enabled" boolean) | Optional | { "value": 12, "unit": "minute", "enabled": true } |
ssrConfig (Rewarded only) |
*only if enabled=true | Object (currency: unit: string, amount, number enabled" boolean) | Optional | {"currency": "dollars", "amount": 3456, "enabled": true } |
skipability | Ads can be skippable or non-skippable | String | Optional | "NonSkippable" |
Example Request
{
"placementId": "12345",
"name": "updated_name",
"status": "active",
"coppa": true,
"ssrConfig": {
"currency": "dollars",
"amount": 3456,
"enabled": true
},
"targetingEnabled": true,
"geo": {
"countries": [
"BT",
"SG"
],
"include": true
},
"connectivity": ["WIFI"],
"floorPrices": [
{
"price": 0.05,
"country": "AF"
},
{
"price": 0.03,
"country": "SG"
}
],
"capping": {
"value": 12,
"unit": "minute",
"enabled": true
},
"pacing": {
"value": 13,
"unit": "second",
"enabled": true
}
}
Response Parameters
Key | Description | Type | Example |
---|---|---|---|
placementId | The ID of the newly created placement | String | "24542" |
status | The status of the placement. Can be either "active" or "inactive" |
String | "active" |
name | The name of the placement | String | "int_13" |
appId | The ID of the placement's app | String | "12345" |
placementType | The placement type ("Banner", "Rewarded", "Interstitial", "MREC") | String | "Banner" |
coppa | Children's Online Privacy Protection Act. Is the app directed to children under 13 years of age? | Boolean | false |
creativeTypes (Interstitial only) |
Allowed creative types for Interstitial placement | String array | [“video”, “display״] |
bannerRefresh (Banner only) |
Set the Refresh Interval for the app banner placement. This determines the frequency in which a banner placement is refreshed. | Number | 45 |
floorPrices | The minimal price at which you are willing to sell your inventory. By default, it is set to $0.01 for all countries. | Object array (country: string, price: number) | [{ “country”: “WW”, “price”: 0.01 },{ “country”: “IL”, “price”: 0.05 }] |
targetingEnabled | Enable audience targeting by countries or connection type | Boolean | true |
geo | Geo target countries *only if targetingEnabled=true | Object (include: boolean, countries: string array) | { "countries": [ "BT", "SG" ], "include": true } |
connectivity | Targeted connection type ("Cellular" or "WIFI") *only if targetingEnabled=true |
String array | [“WIFI”] |
capping | *only if enabled=true Limit the number of impressions per second / minute / day |
Object (value: number, unit: string, enabled" boolean) | { "value": 12, "unit": "minute", "enabled": true } |
pacing | *only if enabled=true Set the pace for the maximum number of ad impressions per second / miמute / day / hour |
Object (value: number, unit: string, enabled" boolean) | { "value": 12, "unit": "minute", "enabled": true } |
ssrConfig (Rewarded only) |
*only if enabled=true | Object (currency: unit: string, amount, number enabled" boolean) | {"currency": "dollars", "amount": 3456, "enabled": true } |
skipability | Ads can be skippable or non-skippable | String | "NonSkippable" |
Example Response
{
"placementId": "243713",
"name": "changedBanner",
"appId": "170709",
"placementType": "Banner",
"status": "active",
"coppa": false,
"bannerRefresh": 88,
"floorPrices": [
{
"country": "WW",
"price": 0.01
}
],
"targetingEnabled": false
}
Delete a Placement
Description
Delete an existing placement.
Method
DELETE https://console.fyber.com/api/management/v1/placement
HeadersContentType: application/json
Authorization: Bearer <Access Token from Authentication Response>
Request Parameters
Key | Description | Required | Type |
---|---|---|---|
placementId | The ID of the placement | Required | String |
Example Request
{
"placementId": "123123"
}
Example Response
{
"message": "Placement 123123 has been deleted
successfully."
}