API reference / Operations by tag
offers
Offers: the unit you send traffic to. Includes tracking-link generation, partner access and per-offer settings.
37 operations. Base URL https://api.metrixed.com/v1; see authentication, errors and pagination.
Operations
| Method | Path | Summary |
|---|---|---|
| GET | /offer-groups | List OfferGroups |
| POST | /offer-groups | Create OfferGroup |
| GET | /offer-groups/{id} | Get OfferGroup |
| PATCH | /offer-groups/{id} | Update OfferGroup |
| DELETE | /offer-groups/{id} | Delete OfferGroup |
| POST | /offer-groups/bulk/apply | Bulk edit apply |
| POST | /offer-groups/bulk/preview | Bulk edit preview |
| POST | /offer-groups/search | Search OfferGroups (advanced) |
| GET | /offers | List Offers |
| POST | /offers | Create Offer |
| GET | /offers/{id} | Get Offer |
| PATCH | /offers/{id} | Update Offer |
| DELETE | /offers/{id} | Delete Offer |
| POST | /offers/{id}/clone | Copy an offer with its goals, payout entries, landing pages and caps; the copy starts paused |
| GET | /offers/{id}/partners | Partners with access/overrides for offer |
| GET | /offers/{id}/timeline | Offer timeline |
| POST | /offers/bulk/apply | Bulk edit apply |
| POST | /offers/bulk/delete | Delete up to 500 offers in one transaction (dry_run: true previews without saving) |
| POST | /offers/bulk/payout | Change the default payout or revenue of up to 500 offers: set an amount or scale by a percentage (dry_run previews every change) |
| POST | /offers/bulk/preview | Bulk edit preview |
| POST | /offers/search | Search Offers (advanced) |
| POST | /offers/wizard | Create an offer with its base goal and default payout in one transaction |
| GET | /product-feeds | Product feeds shared with partners (newest first) |
| POST | /product-feeds | Create a product feed from an uploaded CSV (validated: header row, unique columns, at most 200,000 rows / 20 MB) |
| GET | /product-feeds/{id} | One product feed |
| PATCH | /product-feeds/{id} | Update a product feed (file_ref replaces the file) |
| DELETE | /product-feeds/{id} | Delete a product feed |
| GET | /product-feeds/{id}/download | Download the feed's original CSV |
| GET | /scheduled-actions | List ScheduledActions |
| POST | /scheduled-actions | Create ScheduledAction |
| GET | /scheduled-actions/{id} | Get ScheduledAction |
| PATCH | /scheduled-actions/{id} | Update ScheduledAction |
| DELETE | /scheduled-actions/{id} | Delete ScheduledAction |
| POST | /scheduled-actions/{id}/cancel | Cancel a scheduled action |
| POST | /scheduled-actions/bulk/apply | Bulk edit apply |
| POST | /scheduled-actions/bulk/preview | Bulk edit preview |
| POST | /scheduled-actions/search | Search ScheduledActions (advanced) |
GET /offer-groups
List OfferGroups
Operation getOfferGroups. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
page | query | integer | no | |
page_size | query | integer | no | |
sort | query | string | no | field or -field |
include | query | string | no | comma-separated relationships |
filter | query | object (free-form) | no | |
q | query | string | no | free-text search |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json OfferGroupList |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/offer-groups?page=1&page_size=50' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"data": [
{}
],
"page": {}
}
POST /offer-groups
Create OfferGroup
Operation postOfferGroups. Auth: API key (Bearer) or session cookie.
Request body (application/json, required): OfferGroupCreate
| Field | Type | Flags | Description |
|---|---|---|---|
name | string | required | |
status | string | ||
advertiser_id | string | ||
routing_type | enum: priority, weight | ||
settings | object (free-form) |
| Status | Description | Body |
|---|---|---|
| 201 | ok | application/json OfferGroup |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/offer-groups' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"name":""}'
Example 201 response:
{
"external_ref": ""
}
GET /offer-groups/{id}
Get OfferGroup
Operation getOfferGroupsId. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json OfferGroup |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/offer-groups/<id>' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"external_ref": ""
}
PATCH /offer-groups/{id}
Update OfferGroup
Operation patchOfferGroupsId. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
Request body (application/json, required): OfferGroupUpdate
| Field | Type | Flags | Description |
|---|---|---|---|
name | string | ||
status | string | ||
advertiser_id | string | ||
routing_type | enum: priority, weight | ||
settings | object (free-form) |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json OfferGroup |
| default | error | application/json Error |
curl -X PATCH 'https://api.metrixed.com/v1/offer-groups/<id>' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"name":"","status":"","advertiser_id":"","routing_type":"priority"}'
Example 200 response:
{
"external_ref": ""
}
DELETE /offer-groups/{id}
Delete OfferGroup
Operation deleteOfferGroupsId. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
curl -X DELETE 'https://api.metrixed.com/v1/offer-groups/<id>' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 204 response:
{
"ok": false
}
POST /offer-groups/bulk/apply
Bulk edit apply
Operation postOfferGroupsBulkApply. Auth: API key (Bearer) or session cookie.
Request body (application/json, required): BulkPatch
| Field | Type | Flags | Description |
|---|---|---|---|
ids | array of string | required | |
patches | array of object | required |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json BulkPreview |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/offer-groups/bulk/apply' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"ids":[""],"patches":[{"field":"","value":{}}]}'
Example 200 response:
{
"affected": 0,
"changes": [
{}
],
"warnings": [
""
],
"token": ""
}
POST /offer-groups/bulk/preview
Bulk edit preview
Operation postOfferGroupsBulkPreview. Auth: API key (Bearer) or session cookie.
Request body (application/json, required): BulkPatch
| Field | Type | Flags | Description |
|---|---|---|---|
ids | array of string | required | |
patches | array of object | required |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json BulkPreview |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/offer-groups/bulk/preview' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"ids":[""],"patches":[{"field":"","value":{}}]}'
Example 200 response:
{
"affected": 0,
"changes": [
{}
],
"warnings": [
""
],
"token": ""
}
POST /offer-groups/search
Search OfferGroups (advanced)
Operation postOfferGroupsSearch. Auth: API key (Bearer) or session cookie.
Request body (application/json, required): SearchRequest
| Field | Type | Flags | Description |
|---|---|---|---|
filters | array of object | ||
search | string | ||
sort | array of object (free-form) | ||
page | integer | ||
page_size | integer | ||
include | array of string |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json OfferGroupList |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/offer-groups/search' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"filters":[{}],"search":"","sort":[{}],"page":0}'
Example 200 response:
{
"data": [
{}
],
"page": {}
}
GET /offers
List Offers
Operation getOffers. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
page | query | integer | no | |
page_size | query | integer | no | |
sort | query | string | no | field or -field |
include | query | string | no | comma-separated relationships |
filter | query | object (free-form) | no | |
q | query | string | no | free-text search |
curl 'https://api.metrixed.com/v1/offers?page=1&page_size=50' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"data": [
{}
],
"page": {}
}
POST /offers
Create Offer
Operation postOffers. Auth: API key (Bearer) or session cookie.
Request body (application/json, required): OfferCreate
| Field | Type | Flags | Description |
|---|---|---|---|
name | string | required | |
advertiser_id | string | required | |
offer_group_id | string | ||
description_html | string | ||
is_description_plain_text | boolean | ||
internal_notes | string | ||
thumbnail_url | string | ||
preview_url | string | ||
category_ids | array of string | ||
tags | array of string | ||
channel_ids | array of string | ||
vertical | enum: web, mobile_app, igaming, lead_gen, ecommerce, call | ||
app_identifier | string | ||
app_name | string | ||
erid | string | ||
project_id | string | ||
external_offer_id | string | ||
status | enum: active, pending, paused, disabled, expired, deleted, archived | ||
inactive_reason | string | ||
visibility | enum: public, require_approval, private | ||
start_at | string (date-time) | ||
end_at | string (date-time) | ||
expire_action | enum: pause, fallback | ||
schedule | object (free-form) | timezone, start_hour, end_hour, day_parting[{day_of_week,start_hour,start_minute,end_hour,end_minute}] | |
currency | string | ||
commission_model | enum: cpa, cpi, cpl, cps, cpm, cpc, cpe, revshare, hybrid, kpi | ||
payout_calc_param | string | ||
default_goal_name | string | ||
destination_url | string | required | |
impression_url | string | ||
server_side_url | string | ||
view_through_destination_url | string | ||
fallback_url | string | ||
fallback_offer_id | string | ||
is_allow_deep_link | boolean | ||
deep_link_allowed_domains | array of string | ||
tracking_domain_id | string | ||
conversion_tracking_domain_id | string | ||
is_use_secure_link | boolean | ||
redirect_mode | enum: http302, http302_hide_referrer, http200_js, http200_js_hide_referrer, meta_refresh_single, meta_refresh_double, seo_friendly_301, direct_link, interstitial, app_store_smart | ||
max_hops | integer | ||
allowed_tracking_link_format | enum: numeric_id, unique_id, both | ||
conversion_method | enum: server_postback, image_pixel, iframe_pixel, javascript_sdk, cookie_based, gtm, shopify, s2s_event_api, coupon_code, call | ||
is_whitelist_check_enabled | boolean | ||
session_definition | enum: cookie, ip, ip_user_agent, gaid, idfa, click_id_only | ||
session_duration_hours | integer | ||
unique_click_session_hours | integer | ||
duplicate_click_action | enum: count, block, fail_traffic | ||
already_converted_action | enum: allow, block, fail_traffic | ||
attribution_method | enum: last_touch, first_touch, linear, position_based, time_decay | ||
attribution_priority | array of enum: click_id, cookie, fingerprint, email, coupon | WP-80: matching order for this offer's conversions; empty = default ladder (click_id, cookie, coupon; fingerprint and email off) | |
sku_payouts | array of object | WP-80: per-SKU payout / revenue per line item (flat per unit or percent of the line amount); a conversion carrying SKU lines is priced as the sum of its lines | |
ctit_min_seconds | integer | ||
ctit_max_hours | integer | ||
is_view_through_enabled | boolean | ||
view_through_lifespan_minutes | integer | ||
view_through_min_seconds | integer | ||
allow_impressions | boolean | ||
email_attribution | object (free-form) | enabled, method, window_minutes, window_type | |
track_multi_conversions | boolean | ||
is_allow_duplicate_conversion | boolean | ||
is_must_approve_conversion | boolean | ||
default_conversion_status | enum: approved, pending | ||
allow_spillover_conversions | boolean | ||
cancel_fallback_conversions | boolean | ||
cancel_blocked_postback_conversions | boolean | ||
scrub | object (free-form) | enabled, percentage, status pending|rejected | |
is_caps_enabled | boolean | ||
caps | object (free-form) | daily/weekly/monthly/global x conversion/payout/revenue/click, is_soft_cap, timezone | |
partner_controls | object (free-form) | blocked_partner_ids, allowed_partner_ids, subids_blocked, subids_allowed, blacklist_postback_partners, whitelist_postback_partners, source_names, application_questionnaire_id | |
email_compliance | object (free-form) | ||
integrations | object (free-form) | ||
terms | object (free-form) | text, is_explicit, is_force | |
kpi_requirements | array of object (free-form) | ||
required_tracking_parameters | array of object (free-form) | ||
localized_descriptions | object (free-form) | ||
flow | array of object (free-form) | ||
account_manager_id | string | ||
sales_manager_id | string |
curl -X POST 'https://api.metrixed.com/v1/offers' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"name":"","advertiser_id":"","destination_url":""}'
Example 201 response:
{
"external_ref": ""
}
GET /offers/{id}
Get Offer
Operation getOffersId. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
curl 'https://api.metrixed.com/v1/offers/<id>' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"external_ref": ""
}
PATCH /offers/{id}
Update Offer
Operation patchOffersId. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
Request body (application/json, required): OfferUpdate
| Field | Type | Flags | Description |
|---|---|---|---|
name | string | ||
advertiser_id | string | ||
offer_group_id | string | ||
description_html | string | ||
is_description_plain_text | boolean | ||
internal_notes | string | ||
thumbnail_url | string | ||
preview_url | string | ||
category_ids | array of string | ||
tags | array of string | ||
channel_ids | array of string | ||
vertical | enum: web, mobile_app, igaming, lead_gen, ecommerce, call | ||
app_identifier | string | ||
app_name | string | ||
erid | string | ||
project_id | string | ||
external_offer_id | string | ||
status | enum: active, pending, paused, disabled, expired, deleted, archived | ||
inactive_reason | string | ||
visibility | enum: public, require_approval, private | ||
start_at | string (date-time) | ||
end_at | string (date-time) | ||
expire_action | enum: pause, fallback | ||
schedule | object (free-form) | timezone, start_hour, end_hour, day_parting[{day_of_week,start_hour,start_minute,end_hour,end_minute}] | |
currency | string | ||
commission_model | enum: cpa, cpi, cpl, cps, cpm, cpc, cpe, revshare, hybrid, kpi | ||
payout_calc_param | string | ||
default_goal_name | string | ||
destination_url | string | ||
impression_url | string | ||
server_side_url | string | ||
view_through_destination_url | string | ||
fallback_url | string | ||
fallback_offer_id | string | ||
is_allow_deep_link | boolean | ||
deep_link_allowed_domains | array of string | ||
tracking_domain_id | string | ||
conversion_tracking_domain_id | string | ||
is_use_secure_link | boolean | ||
redirect_mode | enum: http302, http302_hide_referrer, http200_js, http200_js_hide_referrer, meta_refresh_single, meta_refresh_double, seo_friendly_301, direct_link, interstitial, app_store_smart | ||
max_hops | integer | ||
allowed_tracking_link_format | enum: numeric_id, unique_id, both | ||
conversion_method | enum: server_postback, image_pixel, iframe_pixel, javascript_sdk, cookie_based, gtm, shopify, s2s_event_api, coupon_code, call | ||
is_whitelist_check_enabled | boolean | ||
session_definition | enum: cookie, ip, ip_user_agent, gaid, idfa, click_id_only | ||
session_duration_hours | integer | ||
unique_click_session_hours | integer | ||
duplicate_click_action | enum: count, block, fail_traffic | ||
already_converted_action | enum: allow, block, fail_traffic | ||
attribution_method | enum: last_touch, first_touch, linear, position_based, time_decay | ||
attribution_priority | array of enum: click_id, cookie, fingerprint, email, coupon | WP-80: matching order for this offer's conversions; empty = default ladder (click_id, cookie, coupon; fingerprint and email off) | |
sku_payouts | array of object | WP-80: per-SKU payout / revenue per line item (flat per unit or percent of the line amount); a conversion carrying SKU lines is priced as the sum of its lines | |
ctit_min_seconds | integer | ||
ctit_max_hours | integer | ||
is_view_through_enabled | boolean | ||
view_through_lifespan_minutes | integer | ||
view_through_min_seconds | integer | ||
allow_impressions | boolean | ||
email_attribution | object (free-form) | enabled, method, window_minutes, window_type | |
track_multi_conversions | boolean | ||
is_allow_duplicate_conversion | boolean | ||
is_must_approve_conversion | boolean | ||
default_conversion_status | enum: approved, pending | ||
allow_spillover_conversions | boolean | ||
cancel_fallback_conversions | boolean | ||
cancel_blocked_postback_conversions | boolean | ||
scrub | object (free-form) | enabled, percentage, status pending|rejected | |
is_caps_enabled | boolean | ||
caps | object (free-form) | daily/weekly/monthly/global x conversion/payout/revenue/click, is_soft_cap, timezone | |
partner_controls | object (free-form) | blocked_partner_ids, allowed_partner_ids, subids_blocked, subids_allowed, blacklist_postback_partners, whitelist_postback_partners, source_names, application_questionnaire_id | |
email_compliance | object (free-form) | ||
integrations | object (free-form) | ||
terms | object (free-form) | text, is_explicit, is_force | |
kpi_requirements | array of object (free-form) | ||
required_tracking_parameters | array of object (free-form) | ||
localized_descriptions | object (free-form) | ||
flow | array of object (free-form) | ||
account_manager_id | string | ||
sales_manager_id | string |
curl -X PATCH 'https://api.metrixed.com/v1/offers/<id>' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"name":"","advertiser_id":"","offer_group_id":"","description_html":""}'
Example 200 response:
{
"external_ref": ""
}
DELETE /offers/{id}
Delete Offer
Operation deleteOffersId. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
curl -X DELETE 'https://api.metrixed.com/v1/offers/<id>' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 204 response:
{
"ok": false
}
POST /offers/{id}/clone
Copy an offer with its goals, payout entries, landing pages and caps; the copy starts paused
Operation postOffersIdClone. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
Request body (application/json, required): OfferCloneRequest
| Status | Description | Body |
|---|---|---|
| 201 | ok | application/json OfferCloneResult |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/offers/<id>/clone' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{}'
Example 201 response:
{}
GET /offers/{id}/partners
Partners with access/overrides for offer
Operation getOffersIdPartners. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes | |
page | query | integer | no | |
page_size | query | integer | no | |
sort | query | string | no | field or -field |
include | query | string | no | comma-separated relationships |
filter | query | object (free-form) | no | |
q | query | string | no | free-text search |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json PartnerOfferSettingList |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/offers/<id>/partners?page=1&page_size=50' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"data": [
{}
],
"page": {}
}
GET /offers/{id}/timeline
Offer timeline
Operation getOffersIdTimeline. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json LogSearchResult |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/offers/<id>/timeline' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"rows": [
{}
],
"next_cursor": "",
"has_more": false
}
POST /offers/bulk/apply
Bulk edit apply
Operation postOffersBulkApply. Auth: API key (Bearer) or session cookie.
Request body (application/json, required): BulkPatch
| Field | Type | Flags | Description |
|---|---|---|---|
ids | array of string | required | |
patches | array of object | required |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json BulkPreview |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/offers/bulk/apply' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"ids":[""],"patches":[{"field":"","value":{}}]}'
Example 200 response:
{
"affected": 0,
"changes": [
{}
],
"warnings": [
""
],
"token": ""
}
POST /offers/bulk/delete
Delete up to 500 offers in one transaction (dry_run: true previews without saving)
Operation postOffersBulkDelete. Auth: API key (Bearer) or session cookie.
Request body (application/json, required): BulkDeleteRequest
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json BulkActionResult |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/offers/bulk/delete' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{}'
Example 200 response:
{}
POST /offers/bulk/payout
Change the default payout or revenue of up to 500 offers: set an amount or scale by a percentage (dry_run previews every change)
Operation postOffersBulkPayout. Auth: API key (Bearer) or session cookie.
Request body (application/json, required): BulkPayoutRequest
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json BulkActionResult |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/offers/bulk/payout' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{}'
Example 200 response:
{}
POST /offers/bulk/preview
Bulk edit preview
Operation postOffersBulkPreview. Auth: API key (Bearer) or session cookie.
Request body (application/json, required): BulkPatch
| Field | Type | Flags | Description |
|---|---|---|---|
ids | array of string | required | |
patches | array of object | required |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json BulkPreview |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/offers/bulk/preview' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"ids":[""],"patches":[{"field":"","value":{}}]}'
Example 200 response:
{
"affected": 0,
"changes": [
{}
],
"warnings": [
""
],
"token": ""
}
POST /offers/search
Search Offers (advanced)
Operation postOffersSearch. Auth: API key (Bearer) or session cookie.
Request body (application/json, required): SearchRequest
| Field | Type | Flags | Description |
|---|---|---|---|
filters | array of object | ||
search | string | ||
sort | array of object (free-form) | ||
page | integer | ||
page_size | integer | ||
include | array of string |
curl -X POST 'https://api.metrixed.com/v1/offers/search' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"filters":[{}],"search":"","sort":[{}],"page":0}'
Example 200 response:
{
"data": [
{}
],
"page": {}
}
POST /offers/wizard
Create an offer with its base goal and default payout in one transaction
Operation postOffersWizard. Auth: API key (Bearer) or session cookie.
Request body (application/json, required): OfferWizardRequest
| Status | Description | Body |
|---|---|---|
| 201 | ok | application/json OfferWizardResult |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/offers/wizard' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{}'
Example 201 response:
{}
GET /product-feeds
Product feeds shared with partners (newest first) Product feeds shared with partners (newest first). WP-67: naturally small; returns at most 500 rows and capped: true when that cap is hit.
Operation getProductFeeds. Auth: API key (Bearer) or session cookie.
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json ProductFeedList |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/product-feeds' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"data": [
{}
]
}
POST /product-feeds
Create a product feed from an uploaded CSV (validated: header row, unique columns, at most 200,000 rows / 20 MB)
Operation postProductFeeds. Auth: API key (Bearer) or session cookie.
Request body (application/json, required): ProductFeedWrite
| Field | Type | Flags | Description |
|---|---|---|---|
name | string | ||
description | string | ||
advertiser_id | string | ||
offer_id | string | ||
visibility | enum: all, approved | ||
status | enum: active, paused | ||
file_ref | string | id from POST /files/upload (CSV with a header row; a url/product_url/link column enables partner tracking links) |
| Status | Description | Body |
|---|---|---|
| 201 | ok | application/json ProductFeed |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/product-feeds' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"name":"","description":"","advertiser_id":"","offer_id":""}'
Example 201 response:
{
"id": "",
"name": "",
"description": "",
"advertiser_id": ""
}
GET /product-feeds/{id}
One product feed
Operation getProductFeedsId. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json ProductFeed |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/product-feeds/<id>' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"id": "",
"name": "",
"description": "",
"advertiser_id": ""
}
PATCH /product-feeds/{id}
Update a product feed (file_ref replaces the file)
Operation patchProductFeedsId. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
Request body (application/json, required): ProductFeedWrite
| Field | Type | Flags | Description |
|---|---|---|---|
name | string | ||
description | string | ||
advertiser_id | string | ||
offer_id | string | ||
visibility | enum: all, approved | ||
status | enum: active, paused | ||
file_ref | string | id from POST /files/upload (CSV with a header row; a url/product_url/link column enables partner tracking links) |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json ProductFeed |
| default | error | application/json Error |
curl -X PATCH 'https://api.metrixed.com/v1/product-feeds/<id>' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"name":"","description":"","advertiser_id":"","offer_id":""}'
Example 200 response:
{
"id": "",
"name": "",
"description": "",
"advertiser_id": ""
}
DELETE /product-feeds/{id}
Delete a product feed
Operation deleteProductFeedsId. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
curl -X DELETE 'https://api.metrixed.com/v1/product-feeds/<id>' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 204 response:
{
"ok": false
}
GET /product-feeds/{id}/download
Download the feed's original CSV
Operation getProductFeedsIdDownload. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
curl 'https://api.metrixed.com/v1/product-feeds/<id>/download' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{}
GET /scheduled-actions
List ScheduledActions
Operation getScheduledActions. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
page | query | integer | no | |
page_size | query | integer | no | |
sort | query | string | no | field or -field |
include | query | string | no | comma-separated relationships |
filter | query | object (free-form) | no | |
q | query | string | no | free-text search |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json ScheduledActionList |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/scheduled-actions?page=1&page_size=50' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"data": [
{}
],
"page": {}
}
POST /scheduled-actions
Create ScheduledAction
Operation postScheduledActions. Auth: API key (Bearer) or session cookie.
Request body (application/json, required): ScheduledActionCreate
| Field | Type | Flags | Description |
|---|---|---|---|
name | string | ||
entity_type | enum: offer, partner, advertiser, smartlink, cap, payout_entry, partner_offer_setting | required | |
entity_id | string | required | |
action | enum: set_status, set_cap, set_payout, set_access | required | |
params | object (free-form) | set_status {status}; set_cap {hourly,daily,weekly,monthly,lifetime,is_soft_cap,status}; set_payout {payout_amount,revenue_amount}; set_access {access_status} | |
run_at | string (date-time) | required |
| Status | Description | Body |
|---|---|---|
| 201 | ok | application/json ScheduledAction |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/scheduled-actions' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"entity_type":"offer","entity_id":"","action":"set_status","run_at":"1970-01-01T00:00:00.000Z"}'
Example 201 response:
{
"external_ref": ""
}
GET /scheduled-actions/{id}
Get ScheduledAction
Operation getScheduledActionsId. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json ScheduledAction |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/scheduled-actions/<id>' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"external_ref": ""
}
PATCH /scheduled-actions/{id}
Update ScheduledAction
Operation patchScheduledActionsId. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
Request body (application/json, required): ScheduledActionUpdate
| Field | Type | Flags | Description |
|---|---|---|---|
name | string | ||
entity_type | enum: offer, partner, advertiser, smartlink, cap, payout_entry, partner_offer_setting | ||
entity_id | string | ||
action | enum: set_status, set_cap, set_payout, set_access | ||
params | object (free-form) | set_status {status}; set_cap {hourly,daily,weekly,monthly,lifetime,is_soft_cap,status}; set_payout {payout_amount,revenue_amount}; set_access {access_status} | |
run_at | string (date-time) |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json ScheduledAction |
| default | error | application/json Error |
curl -X PATCH 'https://api.metrixed.com/v1/scheduled-actions/<id>' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"name":"","entity_type":"offer","entity_id":"","action":"set_status"}'
Example 200 response:
{
"external_ref": ""
}
DELETE /scheduled-actions/{id}
Delete ScheduledAction
Operation deleteScheduledActionsId. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
curl -X DELETE 'https://api.metrixed.com/v1/scheduled-actions/<id>' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 204 response:
{
"ok": false
}
POST /scheduled-actions/{id}/cancel
Cancel a scheduled action
Operation postScheduledActionsIdCancel. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json ScheduledAction |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/scheduled-actions/<id>/cancel' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"external_ref": ""
}
POST /scheduled-actions/bulk/apply
Bulk edit apply
Operation postScheduledActionsBulkApply. Auth: API key (Bearer) or session cookie.
Request body (application/json, required): BulkPatch
| Field | Type | Flags | Description |
|---|---|---|---|
ids | array of string | required | |
patches | array of object | required |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json BulkPreview |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/scheduled-actions/bulk/apply' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"ids":[""],"patches":[{"field":"","value":{}}]}'
Example 200 response:
{
"affected": 0,
"changes": [
{}
],
"warnings": [
""
],
"token": ""
}
POST /scheduled-actions/bulk/preview
Bulk edit preview
Operation postScheduledActionsBulkPreview. Auth: API key (Bearer) or session cookie.
Request body (application/json, required): BulkPatch
| Field | Type | Flags | Description |
|---|---|---|---|
ids | array of string | required | |
patches | array of object | required |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json BulkPreview |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/scheduled-actions/bulk/preview' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"ids":[""],"patches":[{"field":"","value":{}}]}'
Example 200 response:
{
"affected": 0,
"changes": [
{}
],
"warnings": [
""
],
"token": ""
}
POST /scheduled-actions/search
Search ScheduledActions (advanced)
Operation postScheduledActionsSearch. Auth: API key (Bearer) or session cookie.
Request body (application/json, required): SearchRequest
| Field | Type | Flags | Description |
|---|---|---|---|
filters | array of object | ||
search | string | ||
sort | array of object (free-form) | ||
page | integer | ||
page_size | integer | ||
include | array of string |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json ScheduledActionList |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/scheduled-actions/search' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"filters":[{}],"search":"","sort":[{}],"page":0}'
Example 200 response:
{
"data": [
{}
],
"page": {}
}