This documentation aims to provide all the information you need to work with our API. The v2 (and above) API follows the Design Principles and Guidelines. If you find anything that doesn't comply, please complain to the dev team immediately 👮
To authenticate requests, include a Authorization header with the value "{accessToken}".
All authenticated endpoints are marked with a requires authentication badge in the documentation below.
For more information see Authentication in the P&E docs.
Manages the creator blocklist for an advertiser.
Creators added to the blocklist will not see the advertiser nor be able to convert links for that advertiser.
The ID of the advertiser.
Filters results to match user ID or username. Must not be greater than 128 characters.
curl --request GET \
--get "https://api.metapic.dev/v2/advertisers/16/blocklist?query=bygcbh" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" {
"data": [
{
"id": null,
"created_at": null,
"created_by": {
"id": 4030,
"username": "melyssa.beatty",
"display_name": "Howell Lesch",
"email": "[email protected]",
"client_id": 4266,
"locale": "en_US"
},
"client": {
"id": 4267,
"name": "Dr. Isaac Walker PhD",
"has_own_payment_system": false,
"revenue_share": 1
}
},
{
"id": null,
"created_at": null,
"created_by": {
"id": 4031,
"username": "bonnie82",
"display_name": "Lorenzo Wiza",
"email": "[email protected]",
"client_id": 4268,
"locale": "uz_AF"
},
"client": {
"id": 4269,
"name": "Dr. Yvette Olson",
"has_own_payment_system": false,
"revenue_share": 1
}
}
],
"links": {
"first": "/?page=1",
"last": "/?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"page": null,
"active": false
},
{
"url": "/?page=1",
"label": "1",
"page": 1,
"active": true
},
{
"url": null,
"label": "Next »",
"page": null,
"active": false
}
],
"path": "/",
"per_page": 10,
"to": 2,
"total": 2
}
}
Adds the given entries to the blocklist, ignoring them if they previously existed.
The ID of the advertiser.
curl --request POST \
"https://api.metapic.dev/v2/advertisers/6/blocklist" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"users\": [
{
\"id\": 123,
\"validate_clicks\": true
},
{
\"id\": 456,
\"validate_clicks\": false
}
],
\"user_tag_ids\": [
10
],
\"client_ids\": [
20
]
}"
The ID of the advertiser.
The ID of the target.
curl --request DELETE \
"https://api.metapic.dev/v2/advertisers/10/blocklist/20" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" Returns the settings to be added to the sales pixel script.
The advertiser.
curl --request GET \
--get "https://api.metapic.dev/v2/advertisers/aut/order-collectors/sales-pixel" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 300
x-ratelimit-remaining: 300
access-control-allow-origin: *
access-control-expose-headers: Content-Disposition
{
"message": "Unauthenticated."
}
Returns the tracking configuration for the advertiser.
The advertiser.
The identifier of the collector
woocommercecurl --request GET \
--get "https://api.metapic.dev/v2/advertisers/tempora/order-collectors/woocommerce" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 300
x-ratelimit-remaining: 300
access-control-allow-origin: *
access-control-expose-headers: Content-Disposition
{
"message": "Unauthenticated."
}
Activates the tracking plugin with the given activation key.
Returns the parameters to insert into the Javascript tracking snippet.
curl --request POST \
"https://api.metapic.dev/v2/activate-tracking-plugin" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"metapic_activation_key\": \"aut\"
}"
Returns remaining email quota for the advertiser.
The ID of the advertiser.
curl --request GET \
--get "https://api.metapic.dev/v2/advertisers/16/email-quota" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 300
x-ratelimit-remaining: 300
access-control-allow-origin: *
access-control-expose-headers: Content-Disposition
{
"message": "Unauthenticated."
}
The ID of the advertiser.
curl --request GET \
--get "https://api.metapic.dev/v2/advertisers/9/payment-setup" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 300
x-ratelimit-remaining: 300
access-control-allow-origin: *
access-control-expose-headers: Content-Disposition
{
"message": "Unauthenticated."
}
The ID of the advertiser.
curl --request POST \
"https://api.metapic.dev/v2/advertisers/18/payment-setup" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"payment_setup_id\": \"pariatur\"
}"
Creates a new Metapic user and self-service advertiser for the current session. Requires an Ory-issued JWT for a session not yet linked to a Metapic user (no metapic_user_id).
curl --request POST \
"https://api.metapic.dev/v2/advertiser-representatives" \
--header "Authorization: Bearer {JWT}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"My Store\",
\"domains\": [
[
\"dev.test-test.com\"
]
],
\"categories\": [
5
],
\"logo_url\": \"https:\\/\\/www.langosh.com\\/cum-velit-quo-in-ad-itaque\",
\"country\": \" Example: SE\",
\"currency\": \"Example: EUR\",
\"language\": \"sv\",
\"billing\": {
\"company_name\": \"maiores\",
\"street\": \"fugiat\",
\"postal_code\": \"ut\",
\"city\": \"doloribus\",
\"vat_number\": \"voluptatibus\"
}
}"
Endpoint for querying & sorting all stores.
Query by either of the following: ID, store name.
Returns all stores with id equal to query OR name contains query. Must not be greater than 255 characters.
Query by store's store group. Returns all stores which belong to the given store_group_id.
Page size. Defaults to 20. Must not be greater than 100.
Must follow the correct format: column_name:direction,
where column_name must be available property for sorting and direction can be one of asc|desc,
both of which are required if sort_by is present.
curl --request GET \
--get "https://api.metapic.dev/v2/stores?query=nike&store_group_id=15&size=20&sort_by=libero" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" {
"data": [
{
"id": null,
"name": "Cassin Group"
},
{
"id": null,
"name": "Parisian-Torphy"
}
],
"links": {
"first": "/?page=1",
"last": "/?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"page": null,
"active": false
},
{
"url": "/?page=1",
"label": "1",
"page": 1,
"active": true
},
{
"url": null,
"label": "Next »",
"page": null,
"active": false
}
],
"path": "/",
"per_page": 20,
"to": 2,
"total": 2
}
}
The ID of the user.
curl --request GET \
--get "https://api.metapic.dev/v2/users/443/stores-by-categories" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 300
x-ratelimit-remaining: 300
access-control-allow-origin: *
access-control-expose-headers: Content-Disposition
{
"message": "Unauthenticated."
}
The ID of the user.
curl --request GET \
--get "https://api.metapic.dev/v2/users/443/stores-by-toplist" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 300
x-ratelimit-remaining: 300
access-control-allow-origin: *
access-control-expose-headers: Content-Disposition
{
"message": "Unauthenticated."
}
Returns list of advertisers with commission rates, campaigns, and other relevant information for the creator.
The ID of the user.
Filter by advertiser category. The ID of an existing record in the store_categories table. If not provided, returns recommended (toplist) advertisers. Must match an existing stored value.
Include optional relationships in the response. Options: mainUrlMatchingRule, StoreCategories.
main_urlPage number for pagination.
Number of items per page. Defaults to 200. Must not be greater than 200.
Case insensitive search query to filter the advertisers by name.
curl --request GET \
--get "https://api.metapic.dev/v2/users/443/advertisers?category_id=5&include[]=main_url&page=1&size=200&q=foo+shop" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" {
"data": [
{
"advertiser": {
"id": 2332,
"name": "Gislason-Wintheiser",
"currency": "USD"
},
"traffic_sources_costs": [
{
"source": 0,
"cpc": 100,
"cpc_v2": {
"amount": "1",
"currency": "USD"
},
"cpa": 0.1,
"currency": "USD"
}
]
}
],
"links": {
"first": "/?page=1",
"last": "/?page=2",
"prev": null,
"next": "/?page=2"
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 2,
"links": [
{
"url": null,
"label": "« Previous",
"page": null,
"active": false
},
{
"url": "/?page=1",
"label": "1",
"page": 1,
"active": true
},
{
"url": "/?page=2",
"label": "2",
"page": 2,
"active": false
},
{
"url": "/?page=2",
"label": "Next »",
"page": 2,
"active": false
}
],
"path": "/",
"per_page": 1,
"to": 1,
"total": 2
}
}
Creates Metapic user and accepts all pending invites for advertiser
curl --request PATCH \
"https://api.metapic.dev/v2/me/advertiser-invites" \
--header "Authorization: Bearer {JWT}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" [Empty response]
Manages url matching rules for an advertiser. Url Matching rule can either be to allow or to block matching of a URL based on added rules.
Returns all url matching rules defined for the advertiser.
The ID of the advertiser.
curl --request GET \
--get "https://api.metapic.dev/v2/advertisers/14/url-matching-rules" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" [
{
"id": null,
"type": null,
"is_main": null,
"url": "testcompany.com",
"updated_at": null
},
{
"id": null,
"type": null,
"is_main": null,
"url": "testcompany.com",
"updated_at": null
}
]
Adds a new rule to the url matching for the advertiser.
The ID of the advertiser.
curl --request POST \
"https://api.metapic.dev/v2/advertisers/9/url-matching-rules" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"type\": \"allow\",
\"url\": \"http:\\/\\/schmeler.info\\/molestias-esse-adipisci-quasi-harum.html\",
\"keyword\": \"rpmkcwm\",
\"is_main\": true
}"
Updates existing url matching rule for the advertiser.
The ID of the advertiser.
The ID of the urlMatchingRule.
curl --request PUT \
"https://api.metapic.dev/v2/advertisers/7/url-matching-rules/15" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"type\": \"allow\",
\"url\": \"http:\\/\\/www.feil.org\\/quaerat-sequi-porro-eos-aperiam-tempora\",
\"keyword\": \"ontwuxjmlexmelyqebgbyebrw\",
\"is_main\": true
}"
Removes existing url matching rule for the advertiser.
The ID of the advertiser.
The ID of the urlMatchingRule.
curl --request DELETE \
"https://api.metapic.dev/v2/advertisers/14/url-matching-rules/11" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" curl --request POST \
"https://api.metapic.dev/v2/stores" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"My Store\",
\"domains\": [
[
\"dev.test-test.com\"
]
],
\"categories\": [
13
],
\"logo_url\": \"http:\\/\\/padberg.com\\/exercitationem-quidem-beatae-enim-aut-esse-deserunt.html\",
\"country\": \" Example: SE\",
\"currency\": \"Example: EUR\",
\"language\": \"sv\",
\"billing\": {
\"company_name\": \"tempora\",
\"street\": \"asperiores\",
\"postal_code\": \"ut\",
\"city\": \"ad\",
\"vat_number\": \"eos\"
}
}"
{
"id": null,
"name": "Schimmel and Sons"
}
Deactivates the advertiser.
The ID of the advertiser.
curl --request POST \
"https://api.metapic.dev/v2/advertisers/17/deactivate" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" App\Http\Resources\Store\StoreResource
curl --request GET \
--get "https://api.metapic.dev/v2/store-categories" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" [
{
"id": null,
"name": "quisquam fugit",
"key": "quisquam-fugit"
},
{
"id": null,
"name": "enim et",
"key": "enim-et"
}
]
Returns a paginated list of advertiser categories.
Page number for pagination. Must be at least 1.
Number of items per page. Defaults to 20. Must be at least 1. Must not be greater than 100.
curl --request GET \
--get "https://api.metapic.dev/v2/advertiser-categories?page=1&size=15" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" {
"data": [
{
"key": "accusamus-velit",
"name": "accusamus velit"
},
{
"key": "natus-modi",
"name": "natus modi"
}
],
"links": {
"first": "/?page=1",
"last": "/?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"page": null,
"active": false
},
{
"url": "/?page=1",
"label": "1",
"page": 1,
"active": true
},
{
"url": null,
"label": "Next »",
"page": null,
"active": false
}
],
"path": "/",
"per_page": 20,
"to": 2,
"total": 2
}
}
Endpoint for querying & sorting all advertiser groups.
Only return advertiser groups which have return ads enabled.
Page size. Defaults to 20. Must not be greater than 100.
Must follow the correct format: column_name:direction,
where column_name must be available property for sorting and direction can be one of asc|desc,
both of which are required if sort_by is present.
curl --request GET \
--get "https://api.metapic.dev/v2/advertiser-groups?return_ad_enabled=1&size=20&sort_by=non" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" {
"data": [
{
"id": 518,
"name": "Glover, Miller and Mohr",
"key": "mn_CN",
"currency": "EUR"
},
{
"id": 518,
"name": "Glover, Miller and Mohr",
"key": "mn_CN",
"currency": "EUR"
}
],
"links": {
"first": "/?page=1",
"last": "/?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"page": null,
"active": false
},
{
"url": "/?page=1",
"label": "1",
"page": 1,
"active": true
},
{
"url": null,
"label": "Next »",
"page": null,
"active": false
}
],
"path": "/",
"per_page": 20,
"to": 2,
"total": 2
}
}
The ID of the affiliate link.
curl --request GET \
--get "https://api.metapic.dev/v2/affiliate-links/et" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" {
"url": "https://dubuque.com/ut-consequatur-praesentium-sit-iusto-aut-consequatur.html",
"original_url": "http://www.rogahn.com/possimus-sit-soluta-quos-recusandae-sed-impedit-enim-facere.html",
"user_id": 4045,
"country": "ZW",
"provider": "maroon",
"advertiser": {
"id": 2342,
"name": "VonRueden Ltd"
},
"title": "Hazel Wehner DDS"
}
Returns advertisers if there are multiple advertisers to match the url with. Otherwise, returns the affiliate link.
curl --request POST \
"https://api.metapic.dev/v2/affiliate-links" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"url\": \"https:\\/\\/advertiser.com\",
\"advertiser_id\": 19,
\"advertiser_preview\": true,
\"advertiser_group_id\": 1,
\"dry\": true
}"
{
"status": "success",
"affiliate_link": {
"status": "success",
"url": "https://dibbert.com/nam-sapiente-perspiciatis-et-voluptatem-officiis.html",
"original_url": "http://www.mante.net/qui-necessitatibus-quis-doloremque-animi-sint-minima",
"user_id": 4046,
"country": "PS",
"provider": "maroon",
"advertiser": {
"id": 2343,
"name": "Hettinger-Fahey"
},
"title": "Dr. Kenya Davis I"
}
}
Returns advertisers if there are multiple advertisers to match the url with. Otherwise, returns the affiliate link.
The ID of the user.
curl --request POST \
"https://api.metapic.dev/v2/users/443/affiliate-links" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"url\": \"https:\\/\\/advertiser.com\",
\"advertiser_id\": 7,
\"advertiser_preview\": true,
\"advertiser_group_id\": 1,
\"dry\": false
}"
{
"status": "success",
"affiliate_link": {
"status": "success",
"url": "http://crooks.com/similique-quibusdam-consequatur-ut-deleniti-modi",
"original_url": "https://www.bergstrom.com/sed-voluptatem-nihil-et-fugit-nihil",
"user_id": 4047,
"country": "AM",
"provider": "teal",
"advertiser": {
"id": 2344,
"name": "Roberts, Feil and Brakus"
},
"title": "Jimmie Wiza"
}
}
Returns a paginated list of affiliate links associated with the creator.
Filter affiliate links by creator (user) id. Must match an existing stored value.
Filter affiliate links by advertiser (store) id. Must match an existing stored value.
Filter links created on or after this date (Y-m-d). Must be a valid date. Must be a date before or equal to date_to.
Filter links created on or before this date (Y-m-d). Must be a valid date. Must be a date after or equal to date_from.
Include related data. When "stats" is included, the response will contain clicks, earnings, and potential earnings, and allow sorting by clicks and earnings.
statsadvertiserAvailable column names: number_of_clicks, cost_creator_approved, created_at. Must follow the correct format: column_name:direction,
where column_name must be available property for sorting and direction can be one of asc|desc,
both of which are required if sort_by is present.
Page number for pagination. Must be at least 1.
Number of items per page. Defaults to 20. Must be at least 1. Must not be greater than 100.
curl --request GET \
--get "https://api.metapic.dev/v2/affiliate-links?user_id=456&advertiser_id=123&date_from=2024-01-01&date_to=2024-01-31&include[]=advertiser&sort_by=created_at%3Adesc&page=1&size=15" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" {
"data": [
{
"id": null,
"title": "Beverly Berge",
"mtpc_url": null,
"user_id": 4048,
"created_at": null
},
{
"id": null,
"title": "Thea Langosh",
"mtpc_url": null,
"user_id": 4049,
"created_at": null
}
],
"links": {
"first": "/?page=1",
"last": "/?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"page": null,
"active": false
},
{
"url": "/?page=1",
"label": "1",
"page": 1,
"active": true
},
{
"url": null,
"label": "Next »",
"page": null,
"active": false
}
],
"path": "/",
"per_page": 20,
"to": 2,
"total": 2
}
}
Determines convertibility of a URL, detects existing affiliate links, and returns matching advertisers when applicable.
The ID of the user.
curl --request POST \
"https://api.metapic.dev/v2/users/443/inspections/affiliate-link" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"url\": \"https:\\/\\/advertiser.com\",
\"ignore_advertiser_visibility\": true
}"
{
"inspection_result": "single_advertiser",
"matching_advertisers": [
{
"id": 123,
"name": "Advertiser Name",
"traffic_sources_costs": [
{
"id": 15,
"source": 0,
"cpc": 100,
"cpc_v2": {
"amount": "10",
"currency": "EUR"
},
"currency": "EUR"
}
],
"... other StoreResource fields ... "
}
]}
It converts url to an affiliate link.
The ID of the user.
curl --request POST \
"https://api.metapic.dev/v3/users/443/affiliate-links" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"url\": \"https:\\/\\/advertiser.com\",
\"advertiser_id\": 14
}"
{
"url": "https://www.white.org/voluptas-cum-et-nam",
"original_url": "http://www.mcclure.com/molestiae-vel-veritatis-illum-eum.html",
"user_id": 4051,
"country": "SE",
"provider": "gray",
"advertiser": {
"id": 2348,
"name": "Rice PLC"
},
"title": "Javier Langworth"
}
Creates Metapic user and accepts all pending invites for agency
curl --request PATCH \
"https://api.metapic.dev/v2/me/agency-invites" \
--header "Authorization: Bearer {JWT}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" [Empty response]
Endpoint for querying & sorting all clients.
Query by id or name. Returns all clients where id is equal to query OR name contains query OR any revenue tier name contains query. Must not be greater than 128 characters.
Query by advertiser group. Returns all clients which belong to the given advertiser_group_ids.
Page size. Defaults to 20. Must not be greater than 500.
Must follow the correct format: column_name:direction,
where column_name must be available property for sorting and direction can be one of asc|desc,
both of which are required if sort_by is present.
curl --request GET \
--get "https://api.metapic.dev/v2/clients?query=internal+name&advertiser_group_ids[]=1&size=20&sort_by=fuga" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" {
"data": [
{
"id": 476,
"name": "Christy Schneider",
"has_own_payment_system": false,
"revenue_share": 1
},
{
"id": 476,
"name": "Christy Schneider",
"has_own_payment_system": false,
"revenue_share": 1
}
],
"links": {
"first": "/?page=1",
"last": "/?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"page": null,
"active": false
},
{
"url": "/?page=1",
"label": "1",
"page": 1,
"active": true
},
{
"url": null,
"label": "Next »",
"page": null,
"active": false
}
],
"path": "/",
"per_page": 20,
"to": 2,
"total": 2
}
}
curl --request GET \
--get "https://api.metapic.dev/v2/health" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 300
x-ratelimit-remaining: 300
access-control-allow-origin: *
access-control-expose-headers: Content-Disposition
{
"status": "up"
}
curl --request GET \
--get "https://api.metapic.dev/v2/payments/getPaymentInvoices" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"payment_period\": \"2026-06\"
}"
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 300
x-ratelimit-remaining: 300
access-control-allow-origin: *
access-control-expose-headers: Content-Disposition
{
"message": "Unauthenticated."
}
curl --request POST \
"https://api.metapic.dev/v2/payments/upload-ax-id-matching" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"file\": \"xtyyrktnqxrwlrt\"
}"
curl --request POST \
"https://api.metapic.dev/v2/payments/mark-invoices-as-paid" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"file\": \"txxwugoopwpgk\"
}"
Endpoint for generating a creator invoice from external component
curl --request POST \
"https://api.metapic.dev/v2/payments/generate-creator-invoice/reprehenderit" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" Endpoint for querying the current payment systems configuration
The payment date. Example: 2021-01-11. Must be a valid date.
Filter by client ID. Must match an existing stored value.
Filter by user ID. Must match an existing stored value.
curl --request GET \
--get "https://api.metapic.dev/v2/payments/systems-config?date=2021-01-11&client_id=2&user_id=15" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 300
x-ratelimit-remaining: 300
access-control-allow-origin: *
access-control-expose-headers: Content-Disposition
{
"message": "Unauthenticated."
}
Endpoint for updating the current payment systems configuration
curl --request POST \
"https://api.metapic.dev/v2/payments/systems-config" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"date\": \"2026-06-18T17:18:56\",
\"client_id\": 7,
\"user_id\": 18,
\"system\": 2,
\"ignore_lock\": true
}"
curl --request POST \
"https://api.metapic.dev/v2/claude/image-analysis" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"users\": [
16
],
\"number_of_images\": 14
}"
curl --request POST \
"https://api.metapic.dev/v2/claude/creator-report" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"user_id\": 8,
\"query\": \"rem\",
\"number_of_images\": 21
}"
The ID of the user.
curl --request GET \
--get "https://api.metapic.dev/v2/claude/users/443/creator-reports" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"page\": 19,
\"size\": 24
}"
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 300
x-ratelimit-remaining: 300
access-control-allow-origin: *
access-control-expose-headers: Content-Disposition
{
"message": "Unauthenticated."
}
curl --request GET \
--get "https://api.metapic.dev/v2/claude/creator-reports/15111037-88b1-345a-a6dc-9218743410bd" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 300
x-ratelimit-remaining: 300
access-control-allow-origin: *
access-control-expose-headers: Content-Disposition
{
"message": "No query results for model [App\\Claude\\CreatorReport] 15111037-88b1-345a-a6dc-9218743410bd"
}
curl --request GET \
--get "https://api.metapic.dev/v2/entrypoint" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"app\": \"admin\",
\"store_id\": 1
}"
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 300
x-ratelimit-remaining: 300
access-control-allow-origin: *
access-control-expose-headers: Content-Disposition
{
"message": "Unauthenticated."
}
Creates new campaign for a store.
The store ID.
curl --request POST \
"https://api.metapic.dev/v2/stores/15/offers" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"store_group_id\": 12,
\"type\": \"standard\",
\"name\": \"Summer campaign for VIP creators\",
\"campaign_title\": \"Summer campaign\",
\"campaign_text\": \"This is a summer campaign!\",
\"has_product_seeding\": true,
\"has_onetime_payment\": true,
\"per_user_limit\": true,
\"one_time_payment\": 18381.78504517,
\"budget_limit\": 20,
\"max_clicks\": 10,
\"valid_from\": \"2026-06-18T17:18:51\",
\"valid_until\": \"1971-10-28\",
\"todo\": [
\"cjzxdqqvsekllbhfufx\"
],
\"show_for_advertiser\": true,
\"priority_after\": 14,
\"shared_budget_id\": 1,
\"shared_budget\": {
\"title\": \"Summer budget\",
\"amount\": 10000
},
\"targets\": {
\"user_ids\": [
10
],
\"user_tag_ids\": [
14
],
\"store_group_ids\": [
11
],
\"emails\": [
\"[email protected]\"
],
\"social_media_identifiers\": [
\"jco\"
],
\"client_ids\": [
18
],
\"revenue_tier_ids\": [
16
]
},
\"traffic_sources_costs\": [
{
\"source\": 1,
\"cpc\": 230,
\"cpa\": 0.2,
\"invoice_cpc\": 250,
\"invoice_cpa\": 0.25,
\"user_revenue\": 0
}
]
}"
{
"data": {
"id": null,
"campaign_title": "Hulda Gutkowski MD",
"campaign_text": "Labore eos molestiae et veritatis alias ea. Asperiores qui est sit cum omnis. Aperiam quia voluptatibus vero eos deleniti at animi aliquid.",
"has_product_seeding": false,
"has_onetime_payment": false,
"status": "active",
"image_url": "https://media.metapic.com/insecure/rs:fill:800:500/g:sm/dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDBlZTQ0P3RleHQ9cXVv",
"image": null,
"store_id": 2298,
"token": "y9pn4qbv4bsz6lbn",
"type": "standard",
"warnings": {
"skipped_targets": {
"user_ids": [
12,
15
]
}
}
},
"warnings": {
"skipped_targets": {
"user_ids": [
12,
15
]
}
}
}
Returns information about a specific campaign.
The offer ID
curl --request GET \
--get "https://api.metapic.dev/v2/offers/15556" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" {
"id": null,
"campaign_title": "Ms. Marion Macejkovic IV",
"campaign_text": "Qui provident necessitatibus qui rerum. Aut incidunt deserunt in mollitia praesentium natus. Quam quia omnis optio et. Error fugit culpa amet consequatur. Tenetur enim quisquam ut voluptatem aut.",
"has_product_seeding": false,
"has_onetime_payment": false,
"status": "active",
"image_url": "https://media.metapic.com/insecure/rs:fill:800:500/g:sm/dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDA3N2ZmP3RleHQ9YWQ=",
"image": null,
"store_id": 2299,
"token": "ovhlk4y8mc4qayio",
"type": "standard"
}
Updates existing campaign.
The ID of the offer.
The offer ID
curl --request PUT \
"https://api.metapic.dev/v2/offers/20" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"store_group_id\": 8,
\"type\": \"store_accept\",
\"name\": \"Summer campaign for VIP creators\",
\"campaign_title\": \"Summer campaign\",
\"campaign_text\": \"This is a summer campaign!\",
\"has_product_seeding\": true,
\"has_onetime_payment\": true,
\"per_user_limit\": true,
\"one_time_payment\": 432.77890107,
\"budget_limit\": 6,
\"max_clicks\": 18,
\"valid_from\": \"2026-06-18T17:18:51\",
\"valid_until\": \"1985-06-05\",
\"todo\": [
\"jeyeyzmuryipclaf\"
],
\"show_for_advertiser\": false,
\"priority_after\": 4,
\"traffic_sources_costs\": [
{
\"source\": 1,
\"cpc\": 230,
\"cpa\": 0.2,
\"invoice_cpc\": 250,
\"invoice_cpa\": 0.25,
\"user_revenue\": 1
}
],
\"targets\": {
\"0\": [],
\"user_ids\": [
7
],
\"user_tag_ids\": [
7
],
\"store_group_ids\": [
20
],
\"emails\": [
\"[email protected]\"
],
\"social_media_identifiers\": [
\"n\"
],
\"client_ids\": [
6
],
\"revenue_tier_ids\": [
15
]
},
\"shared_budget_id\": 1,
\"shared_budget\": {
\"title\": \"Summer budget\",
\"amount\": 10000
}
}"
{
"data": {
"id": null,
"campaign_title": "Blanche Bartoletti",
"campaign_text": "Modi temporibus ex beatae sequi eos tempore dolores. Ad optio qui explicabo culpa facilis. Ut earum accusantium voluptas fugit. Doloremque dolorem eaque similique voluptas alias consequatur.",
"has_product_seeding": false,
"has_onetime_payment": false,
"status": "active",
"image_url": "https://media.metapic.com/insecure/rs:fill:800:500/g:sm/dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDBlZTY2P3RleHQ9ZGljdGE=",
"image": null,
"store_id": 2300,
"token": "zj8ry93d355cic0c",
"type": "standard",
"warnings": {
"skipped_targets": {
"user_ids": [
12,
15
]
}
}
},
"warnings": {
"skipped_targets": {
"user_ids": [
12,
15
]
}
}
}
Soft deletes a campaign.
The ID of the offer.
The offer ID
curl --request DELETE \
"https://api.metapic.dev/v2/offers/10" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" Endpoint for querying & sorting all campaigns.
Query by either of the following: ID, internal name, title.
Returns all offers with id equal to query OR name contains query OR campaign_title contains query. Must not be greater than 64 characters.
deletedendedscheduledpausedactiveQuery by offer's store. Returns all offers which belong to the given store_ids.
Query by offer's store group. Returns all offers which belong to the given store_group_ids.
Query by offer's author ID. Returns all offers created by the user making the request
Query by offer's ID. Performs an 'OR' search, compared to 'AND' search for other filters, so an offer with given ID is always included in the results, if matched.
Page size. Defaults to 20. Must not be greater than 100.
Must follow the correct format: column_name:direction,
where column_name must be available property for sorting and direction can be one of asc|desc,
both of which are required if sort_by is present.
ends_soonactive_firstcsvxlsxFilter offers created on or before this timestamp (ISO 8601 UTC format).
Admin-only filter offers by visibility on the advertiser.
Filter offers by advertiser. Required when filtering as non-admin.
curl --request GET \
--get "https://api.metapic.dev/v2/offers?query=black+friday&statuses[]=scheduled&store_ids[]=1&store_group_ids[]=1&created_by=7&or_id=1234&target_user_id=5&size=20&sort_by=ut&custom_sort_by=active_first&format=csv&created_before=2024-04-22T10%3A30%3A00Z&show_for_advertiser=1&advertiser_id=123" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" {
"data": [
{
"id": null,
"campaign_title": "Javonte Collier DDS",
"campaign_text": "Possimus quis ad sunt tempore quasi. Dolorum id assumenda doloremque porro voluptatibus architecto velit. Omnis reiciendis consectetur soluta omnis.",
"has_product_seeding": false,
"has_onetime_payment": false,
"status": "active",
"image_url": "https://media.metapic.com/insecure/rs:fill:800:500/g:sm/dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDBhYWRkP3RleHQ9aXRhcXVl",
"image": null,
"store_id": 2301,
"token": "m9qxp3suczyz207w",
"type": "standard"
},
{
"id": null,
"campaign_title": "Prof. Jalen Romaguera",
"campaign_text": "Est maiores ut omnis. Ex possimus velit in inventore. Suscipit culpa similique perspiciatis in qui eum voluptatibus.",
"has_product_seeding": false,
"has_onetime_payment": false,
"status": "active",
"image_url": "https://media.metapic.com/insecure/rs:fill:800:500/g:sm/dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDBlZTc3P3RleHQ9aWQ=",
"image": null,
"store_id": 2302,
"token": "35a0875cj3zbep06",
"type": "standard"
}
],
"links": {
"first": "/?page=1",
"last": "/?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"page": null,
"active": false
},
{
"url": "/?page=1",
"label": "1",
"page": 1,
"active": true
},
{
"url": null,
"label": "Next »",
"page": null,
"active": false
}
],
"path": "/",
"per_page": 20,
"to": 2,
"total": 2
}
}
Uploads an image to a campaign.
The offer ID
curl --request POST \
"https://api.metapic.dev/v2/offers/15556/uploads" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"default\": \"molestiae\"
}"
{
"id": null,
"campaign_title": "Carlos Johnston",
"campaign_text": "Est est sunt omnis debitis porro magni. Expedita minima aperiam quis et.",
"has_product_seeding": false,
"has_onetime_payment": false,
"status": "active",
"image_url": "https://media.metapic.com/insecure/rs:fill:800:500/g:sm/dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDBjYzAwP3RleHQ9ZG9sb3JpYnVz",
"image": null,
"store_id": 2303,
"token": "wdzpqiiayd590p3h",
"type": "standard"
}
The offer ID
curl --request POST \
"https://api.metapic.dev/v2/offers/15556/pause" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" {
"id": null,
"campaign_title": "Lucinda Welch",
"campaign_text": "Necessitatibus id cum magni et laboriosam. Dolor voluptates ipsum nobis sit praesentium. Rerum rerum aut quo commodi in harum. Qui occaecati voluptates porro error vel fugiat laboriosam.",
"has_product_seeding": false,
"has_onetime_payment": false,
"status": "active",
"image_url": "https://media.metapic.com/insecure/rs:fill:800:500/g:sm/dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDBhYTY2P3RleHQ9cXVhcw==",
"image": null,
"store_id": 2304,
"token": "0ae3obwp8i4s6txu",
"type": "standard"
}
The offer ID
curl --request POST \
"https://api.metapic.dev/v2/offers/15556/unpause" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" {
"id": null,
"campaign_title": "Barrett Gutmann",
"campaign_text": "Ab neque est quia facilis quo fugit aperiam. Dolor optio quisquam sed modi debitis qui. Commodi voluptate sequi animi libero placeat.",
"has_product_seeding": false,
"has_onetime_payment": false,
"status": "active",
"image_url": "https://media.metapic.com/insecure/rs:fill:800:500/g:sm/dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDA2NjQ0P3RleHQ9ZXQ=",
"image": null,
"store_id": 2305,
"token": "4eamgsxpu88v2x9p",
"type": "standard"
}
Returns statistics about a specific campaign.
The offer ID
The start date for the stats period (YYYY-MM-DD)
The end date for the stats period (YYYY-MM-DD)
curl --request GET \
--get "https://api.metapic.dev/v2/offers/15556/stats?start_date=2023-01-01&end_date=2023-01-31" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"start_date\": \"2023-09-21\",
\"end_date\": \"2050-04-19\"
}"
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 300
x-ratelimit-remaining: 300
access-control-allow-origin: *
access-control-expose-headers: Content-Disposition
{
"message": "Unauthenticated."
}
The ID of the offer.
The ID of the tag.
The campaign (offer) ID.
The affiliate link (tag) ID.
curl --request PUT \
"https://api.metapic.dev/v2/offers/20/affiliate-links/13" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" [Empty response]
The ID of the offer.
The ID of the tag.
The campaign (offer) ID.
The affiliate link (tag) ID.
curl --request DELETE \
"https://api.metapic.dev/v2/offers/1/affiliate-links/10" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" [Empty response]
Returns user campaigns
The ID of the user.
DEPRECATED. Use statuses instead. Cannot be used together with statuses.
openapplieddeniedacceptedstore_denieddonesuggestionsecond_priohave_postedhave_receivedproduct_sentFilter campaigns by name. Must not be greater than 128 characters.
Filter by multiple participant statuses.
openapplieddeniedacceptedstore_denieddonesuggestionsecond_priohave_postedhave_receivedproduct_sentFilter by multiple campaign statuses.
activescheduledPage number for pagination.
Number of items per page. Defaults to 30. Must not be greater than 100.
curl --request GET \
--get "https://api.metapic.dev/v2/users/443/offers?status=accepted&name=Nike&participant_statuses[]=product_sent&campaign_statuses[]=active&page=1&size=30" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" {
"data": [
{
"id": null,
"campaign_title": "Howard Buckridge",
"campaign_text": "Sit excepturi qui et quia ab. Ut necessitatibus deserunt reprehenderit perferendis ipsum neque at. Nam velit placeat perferendis accusantium et.",
"has_product_seeding": false,
"has_onetime_payment": false,
"status": "active",
"image_url": "https://media.metapic.com/insecure/rs:fill:800:500/g:sm/dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDBiYjc3P3RleHQ9YW5pbWk=",
"image": null,
"store_id": 2334,
"token": "3pl8t6f0s3gj6tnz",
"type": "standard"
}
],
"links": {
"first": "/?page=1",
"last": "/?page=2",
"prev": null,
"next": "/?page=2"
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 2,
"links": [
{
"url": null,
"label": "« Previous",
"page": null,
"active": false
},
{
"url": "/?page=1",
"label": "1",
"page": 1,
"active": true
},
{
"url": "/?page=2",
"label": "2",
"page": 2,
"active": false
},
{
"url": "/?page=2",
"label": "Next »",
"page": 2,
"active": false
}
],
"path": "/",
"per_page": 1,
"to": 1,
"total": 2
}
}
Returns campaigns that are not of type "standard" with additional information about user participation. It also allows filtering by title, multiple campaign and participant statuses.
The ID of the user.
Filter campaigns by name. Must not be greater than 128 characters.
Filter by multiple participant statuses.
openapplieddeniedacceptedstore_denieddonesuggestionsecond_priohave_postedhave_receivedproduct_sentFilter by multiple campaign statuses.
activescheduledPage number for pagination.
Number of items per page. Defaults to 30. Must not be greater than 100.
curl --request GET \
--get "https://api.metapic.dev/v2/users/443/campaigns?name=Nike&participant_statuses[]=product_sent&campaign_statuses[]=scheduled&page=1&size=30" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" {
"data": [
{
"key": "818-4037",
"todo": [
{
"key": "create_post",
"value": false
}
],
"status": "open",
"can_create_link": false,
"campaign": {
"id": 819,
"type": "standard",
"status": "active",
"title": "Lou Grant",
"description": "In ut delectus repellendus quia explicabo veniam. Iure magni voluptatum quis quia illo sunt. Eum praesentium quis vero eveniet fuga quo. Quos ex et officiis beatae sed dolorem natus.",
"image": {
"key": "dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDA1NWJiP3RleHQ9bWF4aW1l",
"url": "https://media.metapic.com/insecure/rs:fill:800:500/g:sm/dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDA1NWJiP3RleHQ9bWF4aW1l",
"base_url": "https://media.metapic.com",
"base64": "dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDA1NWJiP3RleHQ9bWF4aW1l"
},
"constraints": {
"per_user_limit": false,
"valid_from": "2026-05-18 17:18:55",
"valid_until": "2026-07-18 17:18:55",
"has_product_seeding": false
}
},
"transitions": []
}
],
"links": {
"first": "/?page=1",
"last": "/?page=2",
"prev": null,
"next": "/?page=2"
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 2,
"links": [
{
"url": null,
"label": "« Previous",
"page": null,
"active": false
},
{
"url": "/?page=1",
"label": "1",
"page": 1,
"active": true
},
{
"url": "/?page=2",
"label": "2",
"page": 2,
"active": false
},
{
"url": "/?page=2",
"label": "Next »",
"page": 2,
"active": false
}
],
"path": "/",
"per_page": 1,
"to": 1,
"total": 2
}
}
Returns specific campaign details along with available state transitions for the user.
The ID of the user.
The ID of the offer.
curl --request GET \
--get "https://api.metapic.dev/v2/users/443/campaigns/16" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" {
"key": "822-4043",
"todo": [
{
"key": "create_post",
"value": false
}
],
"status": "open",
"can_create_link": false,
"campaign": {
"id": 823,
"type": "standard",
"status": "active",
"title": "Bethel Jast MD",
"description": "Delectus a autem hic magnam. Placeat non cupiditate rem molestiae sunt. Voluptatem tenetur autem eaque.",
"image": {
"key": "dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDA2NjY2P3RleHQ9b21uaXM=",
"url": "https://media.metapic.com/insecure/rs:fill:800:500/g:sm/dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDA2NjY2P3RleHQ9b21uaXM=",
"base_url": "https://media.metapic.com",
"base64": "dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDA2NjY2P3RleHQ9b21uaXM="
},
"constraints": {
"per_user_limit": false,
"valid_from": "2026-05-18 17:18:55",
"valid_until": "2026-07-18 17:18:55",
"has_product_seeding": false
}
},
"transitions": []
}
Returns information about a specific campaign.
The offer ID
curl --request GET \
--get "https://api.metapic.dev/v2/offer-by-token/ad" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" {
"id": null,
"campaign_title": "Dr. Muriel O'Reilly",
"campaign_text": "Repudiandae autem repellendus est consequatur et illo qui. Quos repellat blanditiis porro architecto.",
"has_product_seeding": false,
"has_onetime_payment": false,
"status": "active",
"image_url": "https://media.metapic.com/insecure/rs:fill:800:500/g:sm/dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDA4ODExP3RleHQ9b3B0aW8=",
"image": null,
"store_id": 2347,
"token": "14ab3uykog5t2buk",
"type": "standard"
}
The offer ID
curl --request GET \
--get "https://api.metapic.dev/v2/offers/15556/targets" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 300
x-ratelimit-remaining: 300
access-control-allow-origin: *
access-control-expose-headers: Content-Disposition
{
"message": "Unauthenticated."
}
The offer ID
curl --request POST \
"https://api.metapic.dev/v2/offers/15556/targets" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"user_ids\": [
6
],
\"user_tag_ids\": [
17
],
\"store_group_ids\": [
20
],
\"emails\": [
\"[email protected]\"
],
\"social_media_identifiers\": [
\"cjsqmgd\"
],
\"client_ids\": [
11
],
\"revenue_tier_ids\": [
17
]
}"
The ID of the offer.
The ID of the user.
curl --request GET \
--get "https://api.metapic.dev/v2/offers/5/users/443" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 300
x-ratelimit-remaining: 300
access-control-allow-origin: *
access-control-expose-headers: Content-Disposition
{
"message": "Unauthenticated."
}
The ID of the offer.
curl --request GET \
--get "https://api.metapic.dev/v2/offers/20/participants" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"query\": \"lgbsfn\",
\"status\": \"product_sent\",
\"include\": [
\"offer_comments_count\"
]
}"
{
"data": [
{
"id": null,
"offer_id": 809,
"user_id": null,
"display_name": "[email protected]",
"clicks": 123,
"status": "suggestion",
"pre_registered_email": "[email protected]",
"todo": null,
"payment_amount": null
},
{
"id": null,
"offer_id": 810,
"user_id": null,
"display_name": "kohler.gilda",
"clicks": 14988942,
"status": "second_prio",
"pre_registered_identifier": "kohler.gilda",
"todo": null,
"payment_amount": null
}
],
"links": {
"first": "/?page=1",
"last": "/?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"page": null,
"active": false
},
{
"url": "/?page=1",
"label": "1",
"page": 1,
"active": true
},
{
"url": null,
"label": "Next »",
"page": null,
"active": false
}
],
"path": "/",
"per_page": 10,
"to": 2,
"total": 2
}
}
The ID of the offer.
The ID of the participant.
curl --request GET \
--get "https://api.metapic.dev/v2/offers/2/participants/20" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" {
"id": null,
"offer_id": null,
"user_id": null,
"display_name": null,
"clicks": null,
"status": null,
"todo": null,
"payment_amount": null
}
The ID of the offer.
curl --request GET \
--get "https://api.metapic.dev/v2/offers/13/participants-stats" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"query\": \"gtpfskstdevyczkz\",
\"active\": false,
\"start_date\": \"2018-11-10\",
\"end_date\": \"2042-11-30\",
\"sort_by\": \"estimated_gp:desc\"
}"
{
"data": [
{
"id": "811-4003",
"user_id": 4003,
"display_name": "testuser",
"clicks": 0,
"status": "open",
"links_created": null,
"estimated_gp": null,
"estimated_earning_to_cost_ratio": null
},
{
"id": "812-4005",
"user_id": 4005,
"display_name": "testuser",
"clicks": 0,
"status": "open",
"links_created": null,
"estimated_gp": null,
"estimated_earning_to_cost_ratio": null
}
],
"links": {
"first": "/?page=1",
"last": "/?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"page": null,
"active": false
},
{
"url": "/?page=1",
"label": "1",
"page": 1,
"active": true
},
{
"url": null,
"label": "Next »",
"page": null,
"active": false
}
],
"path": "/",
"per_page": 10,
"to": 2,
"total": 2
}
}
The ID of the offer.
curl --request GET \
--get "https://api.metapic.dev/v2/offers/11/participants-count-by-click-activity" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"start_date\": \"2010-10-28\",
\"end_date\": \"2077-10-21\"
}"
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 300
x-ratelimit-remaining: 300
access-control-allow-origin: *
access-control-expose-headers: Content-Disposition
{
"message": "Unauthenticated."
}
The ID of the offer.
The ID of the participant.
curl --request PATCH \
"https://api.metapic.dev/v2/offers/6/participants/9/update-status" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"status\": \"store_denied\"
}"
{
"id": null,
"offer_id": 813,
"user_id": null,
"display_name": "freida.bayer",
"clicks": 86,
"status": "have_received",
"pre_registered_identifier": "freida.bayer",
"todo": null,
"payment_amount": null
}
The ID of the offer.
The ID of the participant.
curl --request PATCH \
"https://api.metapic.dev/v2/offers/12/participants/18/todo" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"todo\": [
{
\"key\": \"nmjdyutstojctcstd\",
\"value\": true
}
]
}"
{
"id": null,
"offer_id": 814,
"user_id": null,
"display_name": "[email protected]",
"clicks": 816238294,
"status": "open",
"pre_registered_email": "[email protected]",
"todo": null,
"payment_amount": null
}
The ID of the offer.
The ID of the participant.
curl --request PUT \
"https://api.metapic.dev/v2/offers/18/participants/3/payment-amount" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"payment_amount\": {
\"amount\": \"1.2\",
\"currency\": \"EUR\"
}
}"
{
"id": null,
"offer_id": 815,
"user_id": null,
"display_name": "[email protected]",
"clicks": 36128620,
"status": "suggestion",
"pre_registered_email": "[email protected]",
"todo": null,
"payment_amount": null
}
The ID of the offer.
The ID of the participant.
curl --request PATCH \
"https://api.metapic.dev/v2/offers/14/participants/11/overrides/clicks" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"click_limit\": 8
}"
{
"id": null,
"offer_id": 816,
"user_id": null,
"display_name": "sarai31",
"clicks": 1,
"status": "applied",
"pre_registered_identifier": "sarai31",
"todo": null,
"payment_amount": null
}
The ID of the offer.
The ID of the participant.
curl --request PATCH \
"https://api.metapic.dev/v2/offers/3/participants/11/overrides/costs" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"traffic_sources_costs\": [
{
\"source\": 1,
\"cpc\": {
\"amount\": \"1.2\",
\"currency\": \"EUR\"
},
\"cpa\": 0.2
}
]
}"
{
"id": null,
"offer_id": 817,
"user_id": 4010,
"display_name": null,
"clicks": 74,
"status": "second_prio",
"todo": null,
"payment_amount": null
}
The ID of the user.
curl --request GET \
--get "https://api.metapic.dev/v2/offer-by-token/non/users/443" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
access-control-expose-headers: Content-Disposition
set-cookie: metapic_session=eyJpdiI6IjI2RWI4a04wTFA5UnBPVlNEeGFqY3c9PSIsInZhbHVlIjoieWZXeXBWZUg1QTNLZVZ0S2tGN2xMdzY1cSt0QjYvVnhHZFprR3dUZjdpL1JxTGlqcC9pdWVTR3VTK2ZkR0ZQTFNUTnJBSUJMdXhDTnNHbHIyK1JJM3Q2RVZoNmZENVcreDZTeTRSR0l0VWFGUDhaUkNsemd6RHVkU2E3bjNlQy8iLCJtYWMiOiI3M2UzN2M2YzQ0Y2Q3ODQ3MzA1MmYzNTlhNDgzNzMwNGE4OTI0NWUzMmQ2MWQxODM3Zjk5MDgxNDJiNDk5ZmRlIiwidGFnIjoiIn0%3D; expires=Thu, 18 Jun 2026 17:18:56 GMT; Max-Age=7200; path=/; secure; httponly
{
"message": "Unauthenticated."
}
This can only be performed by the user themselves.
The ID of the user.
curl --request POST \
"https://api.metapic.dev/v2/offer-by-token/et/users/443/join" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" The ID of the offerUser.
curl --request POST \
"https://api.metapic.dev/v2/offer-users/1/comments" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"comment\": \"vwajituyohtrp\"
}"
The ID of the offerUser.
The ID of the comment.
The ID of the comment.
curl --request PUT \
"https://api.metapic.dev/v2/offer-users/1/comments/3" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"comment\": \"auucanykilwzrowlmmqikacp\"
}"
The ID of the offerUser.
The ID of the comment.
The ID of the comment.
curl --request DELETE \
"https://api.metapic.dev/v2/offer-users/1/comments/13" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" curl --request GET \
--get "https://api.metapic.dev/v2/offer-users/similique/activities" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"include\": [
\"has_unread_notification\"
]
}"
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 300
x-ratelimit-remaining: 300
access-control-allow-origin: *
access-control-expose-headers: Content-Disposition
{
"message": "Unauthenticated."
}
Creates a Hubspot deal for advertiser representative when triggered by an Ory registration.after webhook.
curl --request POST \
"https://api.metapic.dev/v2/webhooks/ory/identities/created" \
--header "mtpc-api-key: {mtpc-api-key}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"identity\": {
\"id\": \"ory_identity_id_123\",
\"traits\": {
\"email\": \"[email protected]\"
}
},
\"app_url\": \"https:\\/\\/advertiser.metapic.com\"
}"
[Empty response]
Updates a user when triggered by an Ory settings.after webhook.
curl --request POST \
"https://api.metapic.dev/v2/webhooks/ory/identities/updated" \
--header "mtpc-api-key: {mtpc-api-key}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"identity\": {
\"id\": \"ory_identity_id_123\",
\"traits\": {
\"email\": \"[email protected]\"
}
}
}"
[Empty response]
Paginated list of Return Ads
Page size. Defaults to 20. Must not be greater than 100.
Query by either of the following: ID or name.
Returns all return ads with id equal to query OR name contains query. Must not be greater than 64 characters.
Query by return ad's advertiser group. Returns all return ads which belong to the given advertiser_group_ids.
Query by return ad's advertiser. Returns all return ads which belong to the given advertiser_ids.
deletedendedscheduledpausedactiveQuery by return ad's ID. Performs an 'OR' search, compared to 'AND' search for other filters, so an return ad with given ID is always included in the results, if matched.
Query sorted by (name, created_at, starts_at, ends_at, current_clicks, current_views, order_count, order_value, earnings or click_through_rate). Must follow the correct format: column_name:direction,
where column_name must be available property for sorting and direction can be one of asc|desc,
both of which are required if sort_by is present.
name:ascname:desccreated_at:asccreated_at:descstarts_at:ascstarts_at:descends_at:ascends_at:desccurrent_clicks:asccurrent_clicks:desccurrent_views:asccurrent_views:descorder_count:ascorder_count:descorder_value:ascorder_value:descearnings:ascearnings:descclick_through_rate:ascclick_through_rate:descconversion_rate:ascconversion_rate:desccurl --request GET \
--get "https://api.metapic.dev/v2/return-ads?size=20&query=internal+name&advertiser_group_ids[]=1&advertiser_ids[]=1&statuses[]=deleted&created_by=&or_id=1234&sort_by=current_clicks%3Aasc" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" {
"data": [
{
"id": null,
"name": "Dorris Mante",
"advertiser_group_id": 5001,
"affiliate_link": {
"id": 877,
"url": "http://www.bernhard.com/voluptas-aspernatur-voluptatem-minus-omnis-alias-esse-quidem-vel.html",
"original_url": "http://herzog.com/atque-sit-et-dolorum-totam",
"mtpc_url": "https://c.mtpc.se/877",
"user_id": 4012,
"country": "CZ",
"provider": "white",
"advertiser": {
"id": 2319,
"name": "Hirthe Ltd"
},
"title": "Reina Grimes",
"created_at": "2026-06-18T17:18:54+02:00"
},
"author_id": 4013,
"display_for_all_advertisers": false,
"status": "active",
"styles": null,
"image": null,
"starts_at": "2026-05-18T15:18:54.333623Z",
"ends_at": "2026-07-18T15:18:54.333707Z",
"stats": []
},
{
"id": null,
"name": "Ms. Albina Beier PhD",
"advertiser_group_id": 5004,
"affiliate_link": {
"id": 878,
"url": "http://huel.com/reiciendis-accusamus-similique-culpa-velit-rerum-sed-voluptas-ducimus.html",
"original_url": "https://macejkovic.org/ad-non-qui-voluptas.html",
"mtpc_url": "https://c.mtpc.se/878",
"user_id": 4014,
"country": "NL",
"provider": "purple",
"advertiser": {
"id": 2320,
"name": "Weissnat LLC"
},
"title": "Arne Gutmann",
"created_at": "2026-06-18T17:18:54+02:00"
},
"author_id": 4015,
"display_for_all_advertisers": false,
"status": "active",
"styles": null,
"image": null,
"starts_at": "2026-05-18T15:18:54.362580Z",
"ends_at": "2026-07-18T15:18:54.362681Z",
"stats": []
}
],
"links": {
"first": "/?page=1",
"last": "/?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"page": null,
"active": false
},
{
"url": "/?page=1",
"label": "1",
"page": 1,
"active": true
},
{
"url": null,
"label": "Next »",
"page": null,
"active": false
}
],
"path": "/",
"per_page": 20,
"to": 2,
"total": 2
}
}
curl --request POST \
"https://api.metapic.dev/v2/return-ads" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"zpmooxzejjdkzc\",
\"advertiser_group_id\": 6,
\"advertiser_id\": 16,
\"return_link\": \"https:\\/\\/advertiser.com\",
\"display_for_all_advertisers\": true,
\"advertiser_ids\": [
4
],
\"advertiser_category_ids\": [
11
],
\"styles\": {
\"color\": \"#ffffff\"
},
\"image_key\": \"dG1wL2ltYWdlLmpwZw==\",
\"starts_at\": \"2026-06-18T17:18:54\",
\"ends_at\": \"2119-01-19\",
\"click_limit\": 2,
\"view_limit\": 13
}"
{
"id": null,
"name": "Dr. Hannah Sauer DVM",
"advertiser_group_id": 5007,
"affiliate_link": {
"id": 879,
"url": "http://www.zemlak.com/eum-eum-at-accusamus-aperiam-aut-ipsum-accusantium",
"original_url": "http://kuvalis.biz/unde-quaerat-non-rerum-corrupti-aut-dolorem-perferendis",
"mtpc_url": "https://c.mtpc.se/879",
"user_id": 4016,
"country": "YE",
"provider": "lime",
"advertiser": {
"id": 2321,
"name": "Leannon-Kuhn"
},
"title": "Modesta Connelly",
"created_at": "2026-06-18T17:18:54+02:00"
},
"author_id": 4017,
"display_for_all_advertisers": false,
"status": "active",
"styles": null,
"image": null,
"starts_at": "2026-05-18T15:18:54.407374Z",
"ends_at": "2026-07-18T15:18:54.407482Z",
"stats": []
}
The ID of the return ad.
curl --request GET \
--get "https://api.metapic.dev/v2/return-ads/17" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" {
"id": null,
"name": "Brock Kuvalis",
"advertiser_group_id": 5010,
"affiliate_link": {
"id": 880,
"url": "https://treutel.com/labore-eaque-dicta-voluptates-impedit-beatae-aut-ullam.html",
"original_url": "http://www.mohr.net/",
"mtpc_url": "https://c.mtpc.se/880",
"user_id": 4018,
"country": "NL",
"provider": "maroon",
"advertiser": {
"id": 2322,
"name": "Hagenes PLC"
},
"title": "Prof. Katrina Block",
"created_at": "2026-06-18T17:18:54+02:00"
},
"author_id": 4019,
"display_for_all_advertisers": false,
"status": "active",
"styles": null,
"image": null,
"starts_at": "2026-05-18T15:18:54.442123Z",
"ends_at": "2026-07-18T15:18:54.442228Z",
"stats": []
}
The ID of the return ad.
curl --request PUT \
"https://api.metapic.dev/v2/return-ads/8" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"bulofhotzfkqev\",
\"return_link\": \"https:\\/\\/advertiser.com\",
\"display_for_all_advertisers\": false,
\"advertiser_ids\": [
13
],
\"advertiser_category_ids\": [
12
],
\"styles\": {
\"color\": \"#ffffff\"
},
\"image_key\": \"dG1wL2ltYWdlLmpwZw==\",
\"starts_at\": \"2026-06-18T17:18:54\",
\"ends_at\": \"2104-07-22\",
\"click_limit\": 5,
\"view_limit\": 6
}"
{
"id": null,
"name": "Toy Zemlak IV",
"advertiser_group_id": 5013,
"affiliate_link": {
"id": 881,
"url": "http://jacobs.com/similique-dicta-itaque-rem-provident-officia-aperiam-voluptatem",
"original_url": "http://www.schuppe.com/",
"mtpc_url": "https://c.mtpc.se/881",
"user_id": 4020,
"country": "GH",
"provider": "teal",
"advertiser": {
"id": 2323,
"name": "Bednar Inc"
},
"title": "Maryse Stiedemann",
"created_at": "2026-06-18T17:18:54+02:00"
},
"author_id": 4021,
"display_for_all_advertisers": false,
"status": "active",
"styles": null,
"image": null,
"starts_at": "2026-05-18T15:18:54.485214Z",
"ends_at": "2026-07-18T15:18:54.485288Z",
"stats": []
}
The ID of the return ad.
curl --request DELETE \
"https://api.metapic.dev/v2/return-ads/10" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" Deactivates Return Ad
The ID of the returnAd.
curl --request POST \
"https://api.metapic.dev/v2/return-ads/20/pause" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" {
"id": null,
"name": "Dr. Wilfred Brekke I",
"advertiser_group_id": 5016,
"affiliate_link": {
"id": 882,
"url": "http://marquardt.com/sint-quia-incidunt-possimus-ut-ea",
"original_url": "http://www.blick.com/autem-quia-ut-adipisci-qui-sed",
"mtpc_url": "https://c.mtpc.se/882",
"user_id": 4022,
"country": "TO",
"provider": "navy",
"advertiser": {
"id": 2324,
"name": "Douglas, Ritchie and Murray"
},
"title": "Prof. Clotilde Emard",
"created_at": "2026-06-18T17:18:54+02:00"
},
"author_id": 4023,
"display_for_all_advertisers": false,
"status": "active",
"styles": null,
"image": null,
"starts_at": "2026-05-18T15:18:54.524969Z",
"ends_at": "2026-07-18T15:18:54.525048Z",
"stats": []
}
The ID of the returnAd.
curl --request POST \
"https://api.metapic.dev/v2/return-ads/12/unpause" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" {
"id": null,
"name": "Mr. Giovanni Kling",
"advertiser_group_id": 5019,
"affiliate_link": {
"id": 883,
"url": "http://www.rosenbaum.com/",
"original_url": "http://www.reilly.com/repudiandae-ut-nemo-illo-voluptatem-quo",
"mtpc_url": "https://c.mtpc.se/883",
"user_id": 4024,
"country": "WS",
"provider": "aqua",
"advertiser": {
"id": 2325,
"name": "Rowe, Moen and Torphy"
},
"title": "Dina Wiegand",
"created_at": "2026-06-18T17:18:54+02:00"
},
"author_id": 4025,
"display_for_all_advertisers": false,
"status": "active",
"styles": null,
"image": null,
"starts_at": "2026-05-18T15:18:54.561481Z",
"ends_at": "2026-07-18T15:18:54.561614Z",
"stats": []
}
List of Return Ads displayed for Advertiser by ID
The ID of the store.
curl --request GET \
--get "https://api.metapic.dev/v2/advertisers/7/return-ads" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" [
{
"id": null,
"name": "Jillian Franecki",
"advertiser_group_id": 5022,
"affiliate_link": {
"id": 884,
"url": "http://www.homenick.net/et-aut-maiores-consequatur-a-qui-non-et-tempore",
"original_url": "http://www.torp.info/",
"mtpc_url": "https://c.mtpc.se/884",
"user_id": 4026,
"country": "LB",
"provider": "teal",
"advertiser": {
"id": 2326,
"name": "Mosciski-Champlin"
},
"title": "Wilson Willms",
"created_at": "2026-06-18T17:18:54+02:00"
},
"author_id": 4027,
"display_for_all_advertisers": false,
"status": "active",
"styles": null,
"image": null,
"starts_at": "2026-05-18T15:18:54.607014Z",
"ends_at": "2026-07-18T15:18:54.607080Z",
"stats": []
},
{
"id": null,
"name": "Dr. Lisa Zulauf",
"advertiser_group_id": 5025,
"affiliate_link": {
"id": 885,
"url": "http://pouros.biz/quia-facilis-velit-ut-autem",
"original_url": "http://douglas.com/eligendi-commodi-debitis-occaecati-sapiente",
"mtpc_url": "https://c.mtpc.se/885",
"user_id": 4028,
"country": "VE",
"provider": "aqua",
"advertiser": {
"id": 2327,
"name": "Ryan, Hamill and Graham"
},
"title": "Stephania Price",
"created_at": "2026-06-18T17:18:54+02:00"
},
"author_id": 4029,
"display_for_all_advertisers": false,
"status": "active",
"styles": null,
"image": null,
"starts_at": "2026-05-18T15:18:54.629561Z",
"ends_at": "2026-07-18T15:18:54.629628Z",
"stats": []
}
]
List Shared Budgets for Store
The ID of the store.
curl --request GET \
--get "https://api.metapic.dev/v2/stores/8/shared-budgets" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" [
{
"id": null,
"title": "Edwina Funk",
"amount": 3,
"amount_v2": {
"amount": "0.03",
"currency": "USD"
},
"consumed_budget": 0,
"consumed_budget_v2": {
"amount": "0",
"currency": "USD"
},
"currency": "USD"
},
{
"id": null,
"title": "Stephon Botsford",
"amount": 3,
"amount_v2": {
"amount": "0.03",
"currency": "GBP"
},
"consumed_budget": 0,
"consumed_budget_v2": {
"amount": "0",
"currency": "GBP"
},
"currency": "GBP"
}
]
Returns information about a specific budget.
The ID of the store.
The ID of the shared budget.
curl --request GET \
--get "https://api.metapic.dev/v2/stores/13/shared-budgets/8" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" {
"id": null,
"title": "Trudie Reynolds",
"amount": 2,
"amount_v2": {
"amount": "0.02",
"currency": "SEK"
},
"consumed_budget": 0,
"consumed_budget_v2": {
"amount": "0",
"currency": "SEK"
},
"currency": "SEK"
}
Updates existing budget.
The ID of the store.
The ID of the shared budget.
curl --request PUT \
"https://api.metapic.dev/v2/stores/4/shared-budgets/5" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"title\": \"Summer budget\",
\"amount\": 10000
}"
{
"id": null,
"title": "Macy Buckridge Jr.",
"amount": 6,
"amount_v2": {
"amount": "0.06",
"currency": "EUR"
},
"consumed_budget": 0,
"consumed_budget_v2": {
"amount": "0",
"currency": "EUR"
},
"currency": "EUR"
}
The ID of the store.
The ID of the shared budget.
curl --request DELETE \
"https://api.metapic.dev/v2/stores/15/shared-budgets/17" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" curl --request PUT \
"https://api.metapic.dev/v2/stores/13/payment" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"payment_setup_id\": \"minima\"
}"
Uploads an image to tmp folder.
curl --request POST \
"https://api.metapic.dev/v2/image-uploads" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"image\": \"quos\"
}"
Endpoint for querying & sorting all users.
Query by either of the following: ID, username, email.
Returns all users with id equal to query OR username contains query OR email contains query. Must not be greater than 64 characters.
Query by user's client. Returns all users which belong to the given client_id.
Query by user's store group. Returns all users which belong to the given store_group_id.
Filter users by advertiser/store id. Required for non-admin advertiser users. Admins can pass it optionally. Must match an existing stored value.
emailPage size. Defaults to 20. Must not be greater than 100.
Must follow the correct format: column_name:direction,
where column_name must be available property for sorting and direction can be one of asc|desc,
both of which are required if sort_by is present.
User status (accepted, suspended, undecided). When omitted, suspended users are excluded.
acceptedsuspendedundecidedcurl --request GET \
--get "https://api.metapic.dev/v2/users?query=testcreator123&client_id=2&store_group_id=15&advertiser_id=123&include[]=email&size=20&sort_by=velit&status=accepted" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" {
"data": [
{
"id": 443,
"username": "kenna94",
"display_name": "Jaden Powlowski",
"email": "[email protected]",
"client_id": 476,
"locale": "lo_LA",
"image": {
"key": "Y29udGVudC1saWJyYXJ5L2F2YXRhcnMvdXNlci0xMjMuanBn",
"url": "https://media.metapic.com/insecure/rs:fill:800:500/g:sm/Y29udGVudC1saWJyYXJ5L2F2YXRhcnMvdXNlci0xMjMuanBn",
"base_url": "https://media.metapic.com",
"base64": "Y29udGVudC1saWJyYXJ5L2F2YXRhcnMvdXNlci0xMjMuanBn"
}
},
{
"id": 443,
"username": "kenna94",
"display_name": "Jaden Powlowski",
"email": "[email protected]",
"client_id": 476,
"locale": "lo_LA",
"image": {
"key": "Y29udGVudC1saWJyYXJ5L2F2YXRhcnMvdXNlci0xMjMuanBn",
"url": "https://media.metapic.com/insecure/rs:fill:800:500/g:sm/Y29udGVudC1saWJyYXJ5L2F2YXRhcnMvdXNlci0xMjMuanBn",
"base_url": "https://media.metapic.com",
"base64": "Y29udGVudC1saWJyYXJ5L2F2YXRhcnMvdXNlci0xMjMuanBn"
}
}
],
"links": {
"first": "/?page=1",
"last": "/?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"page": null,
"active": false
},
{
"url": "/?page=1",
"label": "1",
"page": 1,
"active": true
},
{
"url": null,
"label": "Next »",
"page": null,
"active": false
}
],
"path": "/",
"per_page": 20,
"to": 2,
"total": 2
}
}
The ID of the user.
curl --request GET \
--get "https://api.metapic.dev/v2/users/443" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"include\": [
\"advertiser_group\"
]
}"
{
"id": 443,
"username": "kenna94",
"display_name": "Jaden Powlowski",
"email": "[email protected]",
"client_id": 476,
"locale": "lo_LA",
"image": {
"key": "Y29udGVudC1saWJyYXJ5L2F2YXRhcnMvdXNlci0xMjMuanBn",
"url": "https://media.metapic.com/insecure/rs:fill:800:500/g:sm/Y29udGVudC1saWJyYXJ5L2F2YXRhcnMvdXNlci0xMjMuanBn",
"base_url": "https://media.metapic.com",
"base64": "Y29udGVudC1saWJyYXJ5L2F2YXRhcnMvdXNlci0xMjMuanBn"
}
}
Returns aggregated performance metrics for the given filters.
Filter by advertiser ID
Filter by traffic source (e.g. all)
Start date in Y-m-d format
End date in Y-m-d format
Start date of the previous period in Y-m-d format, used for change_percent. Defaults to the period of the same length ending just before date_from. Must be provided together with previous_date_to.
End date of the previous period in Y-m-d format, used for change_percent. Defaults to the period of the same length ending just before date_from. Must be provided together with previous_date_from.
Comma-separated list of metric keys to return
curl --request GET \
--get "https://api.metapic.dev/v2/users/performance/metrics?advertiser_id=12345&traffic_source=all&date_from=2026-05-01&date_to=2026-05-31&previous_date_from=2026-04-01&previous_date_to=2026-04-30&metrics=creators%2Cnew_creators_activated" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"advertiser_id\": 11,
\"traffic_source\": \"TIKTOK\",
\"date_from\": \"2026-06-18\",
\"date_to\": \"2119-12-11\",
\"previous_date_from\": \"2026-06-18\",
\"previous_date_to\": \"2046-09-15\",
\"metrics\": [
\"creators\"
]
}"
{
"metrics": [
{
"key": "creators",
"value": 13370,
"change_percent": 10.1
},
{
"key": "new_creators_activated",
"value": 13370,
"change_percent": 10.1
}
]
}
Requires an Ory-issued JWT for a session not yet linked to a Metapic user (no user_id).
curl --request POST \
"https://api.metapic.dev/v2/users" \
--header "Authorization: Bearer {JWT}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"social_media\": [
{
\"type\": \"instagram\",
\"identifier\": \"https:\\/\\/instagram.com\\/example\"
},
{
\"type\": \"tiktok\",
\"identifier\": \"https:\\/\\/tiktok.com\\/@example\"
}
],
\"utm\": {
\"source\": \"instagram\",
\"medium\": \"social\",
\"campaign\": \"launch2025\",
\"term\": \"influencer\",
\"content\": \"story_ad\"
},
\"client_id\": \"client_12345\",
\"preferred_locale\": \"en-GB\"
}"
{
"id": 443,
"username": "kenna94",
"display_name": "Jaden Powlowski",
"email": "[email protected]",
"client_id": 476,
"locale": "lo_LA",
"image": {
"key": "Y29udGVudC1saWJyYXJ5L2F2YXRhcnMvdXNlci0xMjMuanBn",
"url": "https://media.metapic.com/insecure/rs:fill:800:500/g:sm/Y29udGVudC1saWJyYXJ5L2F2YXRhcnMvdXNlci0xMjMuanBn",
"base_url": "https://media.metapic.com",
"base64": "Y29udGVudC1saWJyYXJ5L2F2YXRhcnMvdXNlci0xMjMuanBn"
}
}
It updates user's email and phone and syncs it with Ory identity.
The ID of the user.
curl --request PUT \
"https://api.metapic.dev/v2/users/443/identity" \
--header "Authorization: Bearer {JWT}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"email\": \"[email protected]\",
\"phone\": \"+1234567890\"
}"
The ID of the user.
curl --request PUT \
"https://api.metapic.dev/v2/users/443/locale" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"locale\": \"fr_FR\"
}"
{
"id": 443,
"username": "kenna94",
"display_name": "Jaden Powlowski",
"email": "[email protected]",
"client_id": 476,
"locale": "lo_LA",
"image": {
"key": "Y29udGVudC1saWJyYXJ5L2F2YXRhcnMvdXNlci0xMjMuanBn",
"url": "https://media.metapic.com/insecure/rs:fill:800:500/g:sm/Y29udGVudC1saWJyYXJ5L2F2YXRhcnMvdXNlci0xMjMuanBn",
"base_url": "https://media.metapic.com",
"base64": "Y29udGVudC1saWJyYXJ5L2F2YXRhcnMvdXNlci0xMjMuanBn"
}
}
Query by user's advertiser group. Returns all users which belong to the given advertiser_group_id.
a mix array of user emails and ids. Must not have more than 1000 items.
curl --request POST \
"https://api.metapic.dev/v2/match-users?advertiser_group_id=15&user_emails_or_ids[]=12345&user_emails_or_ids[]=email%40metapic.com" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" Approves multiple users at once. When approving a banned user, it cleans up the banned_at (suspended_at) property and sets the approved_at (verified_at). Events are triggered only for users whose status actually changes.
curl --request POST \
"https://api.metapic.dev/v2/approve-users" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"user_ids\": [
20
]
}"
Bans multiple users at once. The ban action also deletes all user offers. Events are triggered only for users whose status actually changes.
curl --request POST \
"https://api.metapic.dev/v2/ban-users" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"user_ids\": [
6
]
}"
Returns a paginated list of user preferred advertiser categories.
The ID of the user.
Page number for pagination. Must be at least 1.
Number of items per page. Defaults to 20. Must be at least 1. Must not be greater than 100.
curl --request GET \
--get "https://api.metapic.dev/v2/users/443/advertiser-categories?page=1&size=15" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" {
"data": [
{
"key": "dicta-quasi",
"name": "dicta quasi"
},
{
"key": "accusamus-libero",
"name": "accusamus libero"
}
],
"links": {
"first": "/?page=1",
"last": "/?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"page": null,
"active": false
},
{
"url": "/?page=1",
"label": "1",
"page": 1,
"active": true
},
{
"url": null,
"label": "Next »",
"page": null,
"active": false
}
],
"path": "/",
"per_page": 20,
"to": 2,
"total": 2
}
}
Replaces the user’s preferred categories and returns a paginated list of the updated categories.
The ID of the user.
curl --request PUT \
"https://api.metapic.dev/v2/users/443/advertiser-categories" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
{
"data": [
{
"key": "aliquam-consequatur",
"name": "aliquam consequatur"
},
{
"key": "non-distinctio",
"name": "non distinctio"
}
],
"links": {
"first": "/?page=1",
"last": "/?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"page": null,
"active": false
},
{
"url": "/?page=1",
"label": "1",
"page": 1,
"active": true
},
{
"url": null,
"label": "Next »",
"page": null,
"active": false
}
],
"path": "/",
"per_page": 20,
"to": 2,
"total": 2
}
}
Endpoint for querying & sorting all user tags.
Query by user tag's name. Returns all user tags whose name contains the given name. Must not be greater than 255 characters.
Query by user tag's store. Returns all user tags which belong to the given store_id.
Query by user tag's access levels. Returns all user tags which have the given access_levels:
012Page size. Defaults to 20. Must not be greater than 100.
Must follow the correct format: column_name:direction,
where column_name must be available property for sorting and direction can be one of asc|desc,
both of which are required if sort_by is present.
curl --request GET \
--get "https://api.metapic.dev/v2/user-tags?name=favourites&store_id=15&access_levels[]=0&access_levels[]=1&size=20&sort_by=aliquam" \
--header "Authorization: {accessToken}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"