Introduction

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 👮

Authenticating requests

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.

Advertiser

Creator Blocklist

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.


Gets the entries in the blocklist

GET
https://api.metapic.dev
/v2/advertisers/{advertiser_id}/blocklist
requires authentication

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

advertiser_id
integer
required

The ID of the advertiser.

Example:
13

Query Parameters

query
string

Filters results to match user ID or username. Must not be greater than 128 characters.

Example:
dcy

Response Fields

Example request:
curl --request GET \
    --get "https://api.metapic.dev/v2/advertisers/13/blocklist?query=dcy" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
    "data": [
        {
            "id": 80,
            "created_at": "2026-03-18 11:42:10",
            "created_by": {
                "id": 3950,
                "username": "wilfredo.fay",
                "display_name": "Cory Ryan",
                "email": "[email protected]",
                "client_id": 4180,
                "preferred_locale": ""
            },
            "client": {
                "id": 4181,
                "name": "Alanis Franecki",
                "client_id": "8bp5oRBt68",
                "has_own_payment_system": false,
                "revenue_share": 1
            }
        },
        {
            "id": 81,
            "created_at": "2026-03-18 11:42:11",
            "created_by": {
                "id": 3951,
                "username": "kshlerin.tyshawn",
                "display_name": "Tre Stiedemann",
                "email": "[email protected]",
                "client_id": 4182,
                "preferred_locale": ""
            },
            "client": {
                "id": 4183,
                "name": "Yolanda Collier",
                "client_id": "Aut2hoetuP",
                "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
    }
}

Add entries to the blocklist

POST
https://api.metapic.dev
/v2/advertisers/{advertiser_id}/blocklist
requires authentication

Adds the given entries to the blocklist, ignoring them if they previously existed.

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

advertiser_id
integer
required

The ID of the advertiser.

Example:
10

Body Parameters

Example request:
curl --request POST \
    "https://api.metapic.dev/v2/advertisers/10/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
    ]
}"

Remove the target in the advertiser blocklist

DELETE
https://api.metapic.dev
/v2/advertisers/{advertiser_id}/blocklist/{target_id}
requires authentication

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

advertiser_id
integer
required

The ID of the advertiser.

Example:
11
target_id
integer
required

The ID of the target.

Example:
12
Example request:
curl --request DELETE \
    "https://api.metapic.dev/v2/advertisers/11/blocklist/12" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"

Order Collectors


Get settings for sales pixel implementation

GET
https://api.metapic.dev
/v2/advertisers/{advertiser}/order-collectors/sales-pixel
requires authentication

Returns the settings to be added to the sales pixel script.

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

advertiser
string
required

The advertiser.

Example:
saepe

Response Fields

Example request:
curl --request GET \
    --get "https://api.metapic.dev/v2/advertisers/saepe/order-collectors/sales-pixel" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
Headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 300
x-ratelimit-remaining: 300
access-control-allow-origin: *
{
    "message": "Unauthenticated."
}

Get order collector tracking settings

GET
https://api.metapic.dev
/v2/advertisers/{advertiser}/order-collectors/{collector}
requires authentication

Returns the tracking configuration for the advertiser.

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

advertiser
string
required

The advertiser.

Example:
reiciendis
collector
string
required

The identifier of the collector

Must be one of:
  • woocommerce
Example:
woocommerce

Response Fields

Example request:
curl --request GET \
    --get "https://api.metapic.dev/v2/advertisers/reiciendis/order-collectors/woocommerce" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
Headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 300
x-ratelimit-remaining: 300
access-control-allow-origin: *
{
    "message": "Unauthenticated."
}

Activate tracking plugin

POST
https://api.metapic.dev
/v2/activate-tracking-plugin

Activates the tracking plugin with the given activation key.

Returns the parameters to insert into the Javascript tracking snippet.

Headers

Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
curl --request POST \
    "https://api.metapic.dev/v2/activate-tracking-plugin" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"metapic_activation_key\": \"animi\"
}"

Email quota

GET
https://api.metapic.dev
/v2/advertisers/{advertiser_id}/email-quota
requires authentication

Returns remaining email quota for the advertiser.

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

advertiser_id
integer
required

The ID of the advertiser.

Example:
18

Response Fields

Example request:
curl --request GET \
    --get "https://api.metapic.dev/v2/advertisers/18/email-quota" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:

GET v2/advertisers/{advertiser_id}/payment-setup

GET
https://api.metapic.dev
/v2/advertisers/{advertiser_id}/payment-setup
requires authentication

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

advertiser_id
integer
required

The ID of the advertiser.

Example:
12
Example request:
curl --request GET \
    --get "https://api.metapic.dev/v2/advertisers/12/payment-setup" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
Headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 300
x-ratelimit-remaining: 300
access-control-allow-origin: *
{
    "message": "Unauthenticated."
}

POST v2/advertisers/{advertiser_id}/payment-setup

POST
https://api.metapic.dev
/v2/advertisers/{advertiser_id}/payment-setup
requires authentication

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

advertiser_id
integer
required

The ID of the advertiser.

Example:
4

Body Parameters

Example request:
curl --request POST \
    "https://api.metapic.dev/v2/advertisers/4/payment-setup" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"payment_setup_id\": \"ducimus\"
}"

Create Advertiser Representative

POST
https://api.metapic.dev
/v2/advertiser-representatives
requires authentication

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).

Headers

Authorization
Example:
Bearer {JWT}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Example request:
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\": [
        16
    ],
    \"logo_url\": \"http:\\/\\/labadie.info\\/quia-hic-quasi-at-fugiat-officiis-in\",
    \"country\": \" Example: SE\",
    \"currency\": \"Example: EUR\",
    \"language\": \"sv\",
    \"billing\": {
        \"company_name\": \"ipsam\",
        \"street\": \"animi\",
        \"postal_code\": \"dolore\",
        \"city\": \"asperiores\",
        \"vat_number\": \"odio\"
    }
}"
Example response:

List stores

GET
https://api.metapic.dev
/v2/stores
requires authentication

Endpoint for querying & sorting all stores.

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

Query Parameters

query
string

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.

Example:
nike
store_group_id
integer

Query by store's store group. Returns all stores which belong to the given store_group_id.

Example:
15
size
integer

Page size. Defaults to 20. Must not be greater than 100.

Example:
20
sort_by
string

Must follow the correct format: column_name:direction, where column_name must be a valid property for given resource and direction can be one of asc|desc, both of which are required if sort_by is present.

Example:
nulla
Example request:
curl --request GET \
    --get "https://api.metapic.dev/v2/stores?query=nike&store_group_id=15&size=20&sort_by=nulla" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
    "data": [
        {
            "id": 2257,
            "name": "Connelly-Powlowski"
        },
        {
            "id": 2258,
            "name": "Hammes PLC"
        }
    ],
    "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
    }
}

Accept invites for advertiser

PATCH
https://api.metapic.dev
/v2/me/advertiser-invites
requires authentication

Creates Metapic user and accepts all pending invites for advertiser

Headers

Authorization
Example:
Bearer {JWT}
Content-Type
Example:
application/json
Accept
Example:
application/json
Example request:
curl --request PATCH \
    "https://api.metapic.dev/v2/me/advertiser-invites" \
    --header "Authorization: Bearer {JWT}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
[Empty response]

Url Matching Rules

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.


List all url matching rules

GET
https://api.metapic.dev
/v2/advertisers/{advertiser_id}/url-matching-rules
requires authentication

Returns all url matching rules defined for the advertiser.

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

advertiser_id
integer
required

The ID of the advertiser.

Example:
8

Response Fields

Example request:
curl --request GET \
    --get "https://api.metapic.dev/v2/advertisers/8/url-matching-rules" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
[
    {
        "id": 299,
        "type": "allow",
        "is_main": false,
        "url": "testcompany.com",
        "updated_at": "2026-03-18T11:42:11.000000Z"
    },
    {
        "id": 300,
        "type": "allow",
        "is_main": false,
        "url": "testcompany.com",
        "updated_at": "2026-03-18T11:42:11.000000Z"
    }
]

Add new url matching rule

POST
https://api.metapic.dev
/v2/advertisers/{advertiser_id}/url-matching-rules
requires authentication

Adds a new rule to the url matching for the advertiser.

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

advertiser_id
integer
required

The ID of the advertiser.

Example:
10

Body Parameters

Example request:
curl --request POST \
    "https://api.metapic.dev/v2/advertisers/10/url-matching-rules" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"type\": \"block\",
    \"url\": \"http:\\/\\/www.crooks.com\\/quis-cupiditate-aliquid-ab-facilis-laborum.html\",
    \"keyword\": \"ypqrnscoyrzak\",
    \"is_main\": true
}"

Update url matching rule

PUT
PATCH
https://api.metapic.dev
/v2/advertisers/{advertiser_id}/url-matching-rules/{urlMatchingRule_id}
requires authentication

Updates existing url matching rule for the advertiser.

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

advertiser_id
integer
required

The ID of the advertiser.

Example:
15
urlMatchingRule_id
integer
required

The ID of the urlMatchingRule.

Example:
15

Body Parameters

Example request:
curl --request PUT \
    "https://api.metapic.dev/v2/advertisers/15/url-matching-rules/15" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"type\": \"allow\",
    \"url\": \"https:\\/\\/www.ankunding.info\\/quis-est-totam-aliquid-minus-aut-neque\",
    \"keyword\": \"fcjebmpygxdrysgjjr\",
    \"is_main\": true
}"

Remove url matching rule

DELETE
https://api.metapic.dev
/v2/advertisers/{advertiser_id}/url-matching-rules/{urlMatchingRule_id}
requires authentication

Removes existing url matching rule for the advertiser.

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

advertiser_id
integer
required

The ID of the advertiser.

Example:
6
urlMatchingRule_id
integer
required

The ID of the urlMatchingRule.

Example:
15
Example request:
curl --request DELETE \
    "https://api.metapic.dev/v2/advertisers/6/url-matching-rules/15" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"

Self-Service


Create new self-service store

POST
https://api.metapic.dev
/v2/stores
requires authentication

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Example request:
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\": [
        4
    ],
    \"logo_url\": \"http:\\/\\/schamberger.com\\/non-sunt-sequi-ad-animi-suscipit-repellendus\",
    \"country\": \" Example: SE\",
    \"currency\": \"Example: EUR\",
    \"language\": \"sv\",
    \"billing\": {
        \"company_name\": \"optio\",
        \"street\": \"magni\",
        \"postal_code\": \"laudantium\",
        \"city\": \"ut\",
        \"vat_number\": \"fugiat\"
    }
}"
Example response:
{
    "id": 2259,
    "name": "Ortiz, Morissette and Nolan"
}

Deactivate advertiser

POST
https://api.metapic.dev
/v2/advertisers/{advertiser_id}/deactivate
requires authentication

Deactivates the advertiser.

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

advertiser_id
integer
required

The ID of the advertiser.

Example:
2
Example request:
curl --request POST \
    "https://api.metapic.dev/v2/advertisers/2/deactivate" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
App\Http\Resources\Store\StoreResource

Advertiser Groups

List advertiser groups

GET
https://api.metapic.dev
/v2/advertiser-groups
requires authentication

Endpoint for querying & sorting all advertiser groups.

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

Query Parameters

return_ad_enabled
boolean

Only return advertiser groups which have return ads enabled.

Example:
true
size
integer

Page size. Defaults to 20. Must not be greater than 100.

Example:
20
sort_by
string

Must follow the correct format: column_name:direction, where column_name must be a valid property for given resource and direction can be one of asc|desc, both of which are required if sort_by is present.

Example:
esse
Example request:
curl --request GET \
    --get "https://api.metapic.dev/v2/advertiser-groups?return_ad_enabled=1&size=20&sort_by=esse" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
    "data": [
        {
            "id": 4940,
            "name": "Wolf, Friesen and McKenzie",
            "key": "ar_TN",
            "currency": "EUR"
        },
        {
            "id": 4941,
            "name": "Considine-Bayer",
            "key": "uz_AF",
            "currency": "PLN"
        }
    ],
    "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
    }
}

Affiliate Link

GET
https://api.metapic.dev
/v2/affiliate-links/{id}
requires authentication

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

id
string
required

The ID of the affiliate link.

Example:
magnam

Response Fields

Example request:
curl --request GET \
    --get "https://api.metapic.dev/v2/affiliate-links/magnam" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
POST
https://api.metapic.dev
/v2/affiliate-links
requires authentication
deprecated:The endpoint for direct affiliate link creation is deprecated. Please use the inspect endpoint to check the convertibility of the URL and get matching advertisers, and then use the convert endpoint to create the affiliate link.

Returns advertisers if there are multiple advertisers to match the url with. Otherwise, returns the affiliate link.

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
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\": 10,
    \"advertiser_preview\": true,
    \"advertiser_group_id\": 1,
    \"dry\": true
}"
Example response:
POST
https://api.metapic.dev
/v2/users/{user_id}/affiliate-links
requires authentication
deprecated:The endpoint for direct affiliate link creation is deprecated. Please use the inspect endpoint to check the convertibility of the URL and get matching advertisers, and then use the convert endpoint to create the affiliate link.

Returns advertisers if there are multiple advertisers to match the url with. Otherwise, returns the affiliate link.

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

user_id
integer
required

The ID of the user.

Example:
15

Body Parameters

Response Fields

Example request:
curl --request POST \
    "https://api.metapic.dev/v2/users/15/affiliate-links" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"url\": \"https:\\/\\/advertiser.com\",
    \"advertiser_id\": 8,
    \"advertiser_preview\": true,
    \"advertiser_group_id\": 1,
    \"dry\": false
}"
Example response:
POST
https://api.metapic.dev
/v2/users/{user_id}/inspections/affiliate-link
requires authentication

Determines convertibility of a URL, detects existing affiliate links, and returns matching advertisers when applicable.

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

user_id
integer
required

The ID of the user.

Example:
15

Body Parameters

Response Fields

Example request:
curl --request POST \
    "https://api.metapic.dev/v2/users/15/inspections/affiliate-link" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"url\": \"https:\\/\\/advertiser.com\",
    \"ignore_advertiser_visibility\": true
}"
Example response:
POST
https://api.metapic.dev
/v3/users/{user_id}/affiliate-links
requires authentication

It converts url to an affiliate link.

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

user_id
integer
required

The ID of the user.

Example:
15

Body Parameters

Response Fields

Example request:
curl --request POST \
    "https://api.metapic.dev/v3/users/15/affiliate-links" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"url\": \"https:\\/\\/advertiser.com\",
    \"advertiser_id\": 16
}"
Example response:

Agency

Accept invites for agency

PATCH
https://api.metapic.dev
/v2/me/agency-invites
requires authentication

Creates Metapic user and accepts all pending invites for agency

Headers

Authorization
Example:
Bearer {JWT}
Content-Type
Example:
application/json
Accept
Example:
application/json
Example request:
curl --request PATCH \
    "https://api.metapic.dev/v2/me/agency-invites" \
    --header "Authorization: Bearer {JWT}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
[Empty response]

Client

List clients

GET
https://api.metapic.dev
/v2/clients
requires authentication

Endpoint for querying & sorting all clients.

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

Query Parameters

query
string

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.

Example:
internal name
advertiser_group_ids
integer[]

Query by advertiser group. Returns all clients which belong to the given advertiser_group_ids.

Example:
[1]
size
integer

Page size. Defaults to 20. Must not be greater than 500.

Example:
20
sort_by
string

Must follow the correct format: column_name:direction, where column_name must be a valid property for given resource and direction can be one of asc|desc, both of which are required if sort_by is present.

Example:
nesciunt
Example request:
curl --request GET \
    --get "https://api.metapic.dev/v2/clients?query=internal+name&advertiser_group_ids[]=1&size=20&sort_by=nesciunt" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
    "data": [
        {
            "id": 4184,
            "name": "Cyril Windler III",
            "client_id": "DYL85cjHut",
            "has_own_payment_system": false,
            "revenue_share": 1
        },
        {
            "id": 4185,
            "name": "Prof. Thelma Quitzon V",
            "client_id": "C1RHWSe9Vh",
            "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
    }
}

Creator Media

Operations on Media posted by Creators

Lists Creator generated media captured by Metapic.

GET
https://api.metapic.dev
/v2/user-media
requires authentication

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

Query Parameters

query
string

Filters media by username.

Example:
ex
status
string

Filter user media by show store value.

Must be one of:
  • all
  • 0
  • 1
  • 2
Example:
all
type
string

Filters media by type.

Must be one of:
  • all
  • instagram
  • tiktok
  • youtube
Example:
all
favorite
string

Filter user media by favorite value.

Must be one of:
  • all
  • 1
  • 0
Example:
0
group
integer

:shrug:.

Example:
5
format
string

Format to export.

Must be one of:
  • csv
  • xlsx
  • json
Example:
csv

Response Fields

Example request:
curl --request GET \
    --get "https://api.metapic.dev/v2/user-media?query=ex&status=all&type=all&favorite=0&group=5&format=csv" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
    "current_page": 1,
    "data": [
        {
            "id": 1,
            "media_type": "youtube",
            "media_id": "FLR0BB4qDt8",
            "username": "hamida_most",
            "tag_id": null,
            "user_id": null,
            "favorite": 1,
            "show_store": 1,
            "published_at": "2023-05-13",
            "created_at": "2023-07-18T12:02:53.000000Z",
            "updated_at": "2023-07-18T12:09:13.000000Z"
        },
        {
            "id": 2,
            "media_type": "tiktok",
            "username": "juliaringblomm",
            "tag_id": null,
            "user_id": null,
            "favorite": 1,
            "show_store": 0,
            "published_at": "2023-06-17",
            "created_at": "2023-07-18T12:10:49.000000Z",
            "updated_at": "2023-07-18T13:39:28.000000Z",
            "media": {
                "content_type": "video/mp4",
                "href": "https://metapic-tiktok-media.example/juliaringblomm/7245692137566653722"
            }
        },
        {
            "id": 3,
            "media_type": "instagram",
            "username": "juliaringblomm",
            "tag_id": null,
            "user_id": null,
            "favorite": 1,
            "show_store": 0,
            "published_at": "2023-06-17",
            "created_at": "2023-07-18T12:10:49.000000Z",
            "updated_at": "2023-07-18T13:39:28.000000Z",
            "media": {
                "content_type": "video/mp4",
                "href": "https://metapic-instragram-media.example/juliaringblomm/7245692137566653722"
            }
        },
        {
            "id": 4,
            "media_type": "instagram",
            "username": "juliaringblomm",
            "tag_id": null,
            "user_id": null,
            "favorite": 1,
            "show_store": 0,
            "published_at": "2023-06-17",
            "created_at": "2023-07-18T12:10:49.000000Z",
            "updated_at": "2023-07-18T13:39:28.000000Z",
            "media": {
                "content_type": "image/jpeg",
                "href": "https://metapic-instragram-media.example/juliaringblomm/7245692137566653722"
            }
        }
    ],
    "first_page_url": "http://metapic-api.my/user-media?page=1",
    "from": 1,
    "last_page": 3,
    "last_page_url": "http://metapic-api.my/user-media?page=3",
    "links": [
        {
            "url": null,
            "label": "« Previous",
            "active": false
        },
        {
            "url": "http://metapic-api.my/user-media?page=1",
            "label": "1",
            "active": true
        },
        {
            "url": "http://metapic-api.my/user-media?page=2",
            "label": "2",
            "active": false
        },
        {
            "url": "http://metapic-api.my/user-media?page=3",
            "label": "3",
            "active": false
        },
        {
            "url": "http://metapic-api.my/user-media?page=2",
            "label": "Next »",
            "active": false
        }
    ],
    "next_page_url": "http://metapic-api.my/user-media?page=2",
    "path": "http://metapic-api.my/user-media",
    "per_page": 5,
    "prev_page_url": null,
    "to": 5,
    "total": 12
}

Endpoints

GET v2/health

GET
https://api.metapic.dev
/v2/health
requires authentication

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json
Example request:
curl --request GET \
    --get "https://api.metapic.dev/v2/health" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
Headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 300
x-ratelimit-remaining: 300
access-control-allow-origin: *
{
    "status": "up"
}

Get Store Categories

GET
https://api.metapic.dev
/v2/store-categories
requires authentication

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json
Example request:
curl --request GET \
    --get "https://api.metapic.dev/v2/store-categories" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
[
    {
        "id": 55,
        "name": "Food"
    },
    {
        "id": 56,
        "name": "Beauty"
    }
]

Get all invoices for a payment period as a zip.

GET
POST
https://api.metapic.dev
/v2/payments/getPaymentInvoices
requires authentication

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Example request:
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-03\"
}"
Example response:
Headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 300
x-ratelimit-remaining: 300
access-control-allow-origin: *
{
    "message": "Unauthenticated."
}

List advertisers grouped by categories

GET
https://api.metapic.dev
/v2/users/{user_id}/stores-by-categories
requires authentication

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

user_id
integer
required

The ID of the user.

Example:
15
Example request:
curl --request GET \
    --get "https://api.metapic.dev/v2/users/15/stores-by-categories" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
Headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 300
x-ratelimit-remaining: 300
access-control-allow-origin: *
{
    "message": "Unauthenticated."
}

List advertiser by toplist

GET
https://api.metapic.dev
/v2/users/{user_id}/stores-by-toplist
requires authentication

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

user_id
integer
required

The ID of the user.

Example:
15
Example request:
curl --request GET \
    --get "https://api.metapic.dev/v2/users/15/stores-by-toplist" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
Headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 300
x-ratelimit-remaining: 300
access-control-allow-origin: *
{
    "message": "Unauthenticated."
}

Get Payments parts by user, grouped by months and stores

POST
https://api.metapic.dev
/v2/payments/upload-ax-id-matching
requires authentication

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Example request:
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\": \"wekb\"
}"

Mark Payments as paid

POST
https://api.metapic.dev
/v2/payments/mark-invoices-as-paid
requires authentication

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Example request:
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\": \"tkygkfzkjk\"
}"

Creator Invoice Generation

POST
https://api.metapic.dev
/v2/payments/generate-creator-invoice/{paymentId}
requires authentication

Endpoint for generating a creator invoice from external component

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

paymentId
string
required
Example:
iusto
Example request:
curl --request POST \
    "https://api.metapic.dev/v2/payments/generate-creator-invoice/iusto" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"

List PaymentSystemConfig

GET
https://api.metapic.dev
/v2/payments/systems-config
requires authentication

Endpoint for querying the current payment systems configuration

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

Query Parameters

date
string

The payment date. Example: 2021-01-11. Must be a valid date.

Example:
2021-01-11
client_id
integer

Filter by client ID. The id of an existing record in the clients table.

Example:
2
user_id
integer

Filter by user ID. The id of an existing record in the users table.

Example:
15
Example request:
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"
Example response:
Headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 300
x-ratelimit-remaining: 300
access-control-allow-origin: *
{
    "message": "Unauthenticated."
}

Update PaymentSystemConfig

POST
https://api.metapic.dev
/v2/payments/systems-config
requires authentication

Endpoint for updating the current payment systems configuration

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Example request:
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-03-18T12:42:12\",
    \"client_id\": 15,
    \"user_id\": 10,
    \"system\": 2,
    \"ignore_lock\": false
}"

Entrypoint

App's entrypoint

GET
https://api.metapic.dev
/v2/entrypoint
requires authentication

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
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\": 12
}"
Example response:
Headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 300
x-ratelimit-remaining: 300
access-control-allow-origin: *
{
    "message": "Unauthenticated."
}

Notification

Proxy any request to notification service

GET
POST
PUT
PATCH
DELETE
OPTIONS
https://api.metapic.dev
/v2/notifications-proxy/{path?}
requires authentication

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

path
string
Example:
Co9}'
Example request:
curl --request GET \
    --get "https://api.metapic.dev/v2/notifications-proxy/Co9}'" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
Headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 300
x-ratelimit-remaining: 300
access-control-allow-origin: *
{
    "message": "Unauthenticated."
}

Offer

Create campaign

POST
https://api.metapic.dev
/v2/stores/{store_id}/offers
requires authentication

Creates new campaign for a store.

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

store_id
integer
required

The store ID.

Example:
15

Body Parameters

Response Fields

Example request:
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\": 13,
    \"type\": \"standard\",
    \"name\": \"Summer campaign for VIP creators\",
    \"campaign_title\": \"Summer campaign\",
    \"campaign_text\": \"This is a summer campaign!\",
    \"has_product_seeding\": false,
    \"has_onetime_payment\": false,
    \"per_user_limit\": false,
    \"one_time_payment\": 0,
    \"budget_limit\": 13,
    \"max_clicks\": 18,
    \"valid_from\": \"2026-03-18T12:42:06\",
    \"valid_until\": \"2094-08-13\",
    \"todo\": [
        \"kvoaakkxzzsmfzhkfroc\"
    ],
    \"show_for_advertiser\": false,
    \"priority_after\": 1,
    \"shared_budget_id\": 1,
    \"shared_budget\": {
        \"title\": \"Summer budget\",
        \"amount\": 10000
    },
    \"targets\": {
        \"user_ids\": [
            18
        ],
        \"user_tag_ids\": [
            8
        ],
        \"store_group_ids\": [
            18
        ],
        \"emails\": [
            \"[email protected]\"
        ],
        \"social_media_identifiers\": [
            \"ldkgrnnxvpwhdvqgch\"
        ],
        \"client_ids\": [
            7
        ],
        \"revenue_tier_ids\": [
            12
        ]
    },
    \"traffic_sources_costs\": [
        {
            \"source\": 1,
            \"cpc\": 230,
            \"cpa\": 0.2,
            \"invoice_cpc\": 250,
            \"invoice_cpa\": 0.25,
            \"user_revenue\": 1
        }
    ]
}"
Example response:
{
    "data": {
        "id": 791,
        "campaign_title": "D'angelo Schulist",
        "campaign_text": "Voluptatem maiores quos qui et consectetur. Corporis nulla ab et eligendi. Et molestias maiores et id sint sint.",
        "has_product_seeding": false,
        "has_onetime_payment": false,
        "status": "active",
        "image_url": "https://media.metapic.com/insecure/rs:fill:800:500/g:sm/dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDBiYmZmP3RleHQ9ZHVjaW11cw==",
        "image": {
            "key": "dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDBiYmZmP3RleHQ9ZHVjaW11cw==",
            "url": "https://media.metapic.com/insecure/rs:fill:800:500/g:sm/dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDBiYmZmP3RleHQ9ZHVjaW11cw==",
            "base_url": "https://media.metapic.com",
            "base64": "dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDBiYmZmP3RleHQ9ZHVjaW11cw=="
        },
        "store_id": 2221,
        "store_name": "Von Inc",
        "store_logo_url": null,
        "store_logo": null,
        "currency": "SEK",
        "token": "hpgvbfw4a34heytv",
        "type": "standard",
        "warnings": {
            "skipped_targets": {
                "user_ids": [
                    12,
                    15
                ]
            }
        }
    },
    "warnings": {
        "skipped_targets": {
            "user_ids": [
                12,
                15
            ]
        }
    }
}

Display campaign

GET
https://api.metapic.dev
/v2/offers/{offer_id}
requires authentication

Returns information about a specific campaign.

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

offer_id
integer
required

The offer ID

Example:
15556

Response Fields

Example request:
curl --request GET \
    --get "https://api.metapic.dev/v2/offers/15556" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
    "id": 792,
    "campaign_title": "Marco Satterfield",
    "campaign_text": "Dolor ipsum suscipit qui. Qui sed non doloribus dolores. Provident voluptas ex porro vitae.",
    "has_product_seeding": false,
    "has_onetime_payment": false,
    "status": "active",
    "image_url": "https://media.metapic.com/insecure/rs:fill:800:500/g:sm/dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDA1NWFhP3RleHQ9aWxsdW0=",
    "image": {
        "key": "dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDA1NWFhP3RleHQ9aWxsdW0=",
        "url": "https://media.metapic.com/insecure/rs:fill:800:500/g:sm/dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDA1NWFhP3RleHQ9aWxsdW0=",
        "base_url": "https://media.metapic.com",
        "base64": "dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDA1NWFhP3RleHQ9aWxsdW0="
    },
    "store_id": 2222,
    "store_name": "Bauch and Sons",
    "store_logo_url": null,
    "store_logo": null,
    "currency": "GBP",
    "token": "0zkumjhin2kkrcgb",
    "traffic_sources_costs": [
        {
            "id": 215,
            "source": 0,
            "cpc": null,
            "cpa": null,
            "currency": "GBP"
        }
    ],
    "type": "standard"
}

Update campaign

PUT
PATCH
https://api.metapic.dev
/v2/offers/{id}
requires authentication

Updates existing campaign.

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

id
integer
required

The ID of the offer.

Example:
17
offer_id
integer
required

The offer ID

Example:
15556

Body Parameters

Response Fields

Example request:
curl --request PUT \
    "https://api.metapic.dev/v2/offers/17" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"store_group_id\": 19,
    \"type\": \"store_accept\",
    \"name\": \"Summer campaign for VIP creators\",
    \"campaign_title\": \"Summer campaign\",
    \"campaign_text\": \"This is a summer campaign!\",
    \"has_product_seeding\": false,
    \"has_onetime_payment\": true,
    \"per_user_limit\": false,
    \"one_time_payment\": 0,
    \"budget_limit\": 13,
    \"max_clicks\": 1,
    \"valid_from\": \"2026-03-18T12:42:06\",
    \"valid_until\": \"2000-10-10\",
    \"todo\": [
        \"ui\"
    ],
    \"show_for_advertiser\": false,
    \"priority_after\": 20,
    \"traffic_sources_costs\": [
        {
            \"source\": 1,
            \"cpc\": 230,
            \"cpa\": 0.2,
            \"invoice_cpc\": 250,
            \"invoice_cpa\": 0.25,
            \"user_revenue\": 0
        }
    ],
    \"targets\": {
        \"0\": [],
        \"user_ids\": [
            3
        ],
        \"user_tag_ids\": [
            15
        ],
        \"store_group_ids\": [
            20
        ],
        \"emails\": [
            \"[email protected]\"
        ],
        \"social_media_identifiers\": [
            \"tvb\"
        ],
        \"client_ids\": [
            17
        ],
        \"revenue_tier_ids\": [
            11
        ]
    },
    \"shared_budget_id\": 1,
    \"shared_budget\": {
        \"title\": \"Summer budget\",
        \"amount\": 10000
    }
}"
Example response:
{
    "data": {
        "id": 793,
        "campaign_title": "Mafalda Swift",
        "campaign_text": "Qui libero cupiditate odio provident architecto et. Quaerat ad vero nihil repellendus est. Architecto qui laborum amet qui quaerat. Aut autem natus maxime qui numquam.",
        "has_product_seeding": false,
        "has_onetime_payment": false,
        "status": "active",
        "image_url": "https://media.metapic.com/insecure/rs:fill:800:500/g:sm/dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDBiYjY2P3RleHQ9ZG9sb3JlbXF1ZQ==",
        "image": {
            "key": "dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDBiYjY2P3RleHQ9ZG9sb3JlbXF1ZQ==",
            "url": "https://media.metapic.com/insecure/rs:fill:800:500/g:sm/dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDBiYjY2P3RleHQ9ZG9sb3JlbXF1ZQ==",
            "base_url": "https://media.metapic.com",
            "base64": "dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDBiYjY2P3RleHQ9ZG9sb3JlbXF1ZQ=="
        },
        "store_id": 2223,
        "store_name": "Gibson PLC",
        "store_logo_url": null,
        "store_logo": null,
        "currency": "EUR",
        "token": "0ay3ew4zh91vrbqf",
        "type": "standard",
        "warnings": {
            "skipped_targets": {
                "user_ids": [
                    12,
                    15
                ]
            }
        }
    },
    "warnings": {
        "skipped_targets": {
            "user_ids": [
                12,
                15
            ]
        }
    }
}

Delete campaign

DELETE
https://api.metapic.dev
/v2/offers/{id}
requires authentication

Soft deletes a campaign.

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

id
integer
required

The ID of the offer.

Example:
9
offer_id
integer
required

The offer ID

Example:
15556
Example request:
curl --request DELETE \
    "https://api.metapic.dev/v2/offers/9" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"

List campaigns

GET
https://api.metapic.dev
/v2/offers
requires authentication

Endpoint for querying & sorting all campaigns.

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

Query Parameters

query
string

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.

Example:
black friday
statuses
string[]
Must be one of:
  • deleted
  • ended
  • scheduled
  • paused
  • active
Example:
["paused"]
store_ids
integer[]

Query by offer's store. Returns all offers which belong to the given store_ids.

Example:
[1]
store_group_ids
integer[]

Query by offer's store group. Returns all offers which belong to the given store_group_ids.

Example:
[1]
created_by
integer
required

Query by offer's author ID. Returns all offers created by the user making the request

Example:
13
or_id
integer

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.

Example:
1234
target_user_id
integer
Example:
4
size
integer

Page size. Defaults to 20. Must not be greater than 100.

Example:
20
sort_by
string

Must follow the correct format: column_name:direction, where column_name must be a valid property for given resource and direction can be one of asc|desc, both of which are required if sort_by is present.

Example:
debitis
custom_sort_by
string
Must be one of:
  • ends_soon
  • active_first
Example:
ends_soon
include
object
format
string
Must be one of:
  • csv
  • xlsx
Example:
xlsx
show_for_advertiser
boolean

Admin-only filter offers by visibility on the advertiser.

Example:
true
advertiser_id
string

Filter offers by advertiser. Required when filtering as non-admin.

Example:
123

Response Fields

Example request:
curl --request GET \
    --get "https://api.metapic.dev/v2/offers?query=black+friday&statuses[]=paused&store_ids[]=1&store_group_ids[]=1&created_by=13&or_id=1234&target_user_id=4&size=20&sort_by=debitis&custom_sort_by=ends_soon&format=xlsx&show_for_advertiser=1&advertiser_id=123" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
    "data": [
        {
            "id": 794,
            "campaign_title": "Aric Runte",
            "campaign_text": "Occaecati eaque perferendis sint consequatur. Amet voluptatum aut sed soluta. Aut qui ipsam architecto perspiciatis.",
            "has_product_seeding": false,
            "has_onetime_payment": false,
            "status": "active",
            "image_url": "https://media.metapic.com/insecure/rs:fill:800:500/g:sm/dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDBhYTc3P3RleHQ9YXV0",
            "image": {
                "key": "dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDBhYTc3P3RleHQ9YXV0",
                "url": "https://media.metapic.com/insecure/rs:fill:800:500/g:sm/dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDBhYTc3P3RleHQ9YXV0",
                "base_url": "https://media.metapic.com",
                "base64": "dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDBhYTc3P3RleHQ9YXV0"
            },
            "store_id": 2224,
            "store_name": "Herzog Ltd",
            "store_logo_url": null,
            "store_logo": null,
            "currency": "SEK",
            "token": "jn765pegg82lwqri",
            "type": "standard"
        },
        {
            "id": 795,
            "campaign_title": "German Franecki",
            "campaign_text": "Voluptate ipsam itaque et tenetur voluptas. Laborum voluptatem officia suscipit natus similique eum. Quis animi inventore eius reiciendis unde accusamus facere.",
            "has_product_seeding": false,
            "has_onetime_payment": false,
            "status": "active",
            "image_url": "https://media.metapic.com/insecure/rs:fill:800:500/g:sm/dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDBmZjc3P3RleHQ9bW9sbGl0aWE=",
            "image": {
                "key": "dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDBmZjc3P3RleHQ9bW9sbGl0aWE=",
                "url": "https://media.metapic.com/insecure/rs:fill:800:500/g:sm/dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDBmZjc3P3RleHQ9bW9sbGl0aWE=",
                "base_url": "https://media.metapic.com",
                "base64": "dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDBmZjc3P3RleHQ9bW9sbGl0aWE="
            },
            "store_id": 2225,
            "store_name": "Mayer, Keebler and Kihn",
            "store_logo_url": null,
            "store_logo": null,
            "currency": "PLN",
            "token": "nkntssckjlznhans",
            "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
    }
}

Upload campaign image

POST
https://api.metapic.dev
/v2/offers/{offer_id}/uploads
requires authentication

Uploads an image to a campaign.

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

offer_id
integer
required

The offer ID

Example:
15556

Body Parameters

Response Fields

Example request:
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\": \"commodi\"
}"
Example response:
{
    "id": 796,
    "campaign_title": "Dr. Nathanael Pfeffer",
    "campaign_text": "Commodi modi amet doloribus velit vel facere. Asperiores quia esse quia molestiae dolorem. Qui occaecati deserunt atque quia officiis ut fuga laudantium.",
    "has_product_seeding": false,
    "has_onetime_payment": false,
    "status": "active",
    "image_url": "https://media.metapic.com/insecure/rs:fill:800:500/g:sm/dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDBhYWRkP3RleHQ9ZXVt",
    "image": {
        "key": "dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDBhYWRkP3RleHQ9ZXVt",
        "url": "https://media.metapic.com/insecure/rs:fill:800:500/g:sm/dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDBhYWRkP3RleHQ9ZXVt",
        "base_url": "https://media.metapic.com",
        "base64": "dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDBhYWRkP3RleHQ9ZXVt"
    },
    "store_id": 2226,
    "store_name": "Ondricka LLC",
    "store_logo_url": null,
    "store_logo": null,
    "currency": "EUR",
    "token": "46l3b2muaodc8zdd",
    "type": "standard"
}

Pause campaign

POST
https://api.metapic.dev
/v2/offers/{offer_id}/pause
requires authentication

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

offer_id
integer
required

The offer ID

Example:
15556

Response Fields

Example request:
curl --request POST \
    "https://api.metapic.dev/v2/offers/15556/pause" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
    "id": 797,
    "campaign_title": "Dayna Gutkowski",
    "campaign_text": "Minus culpa laboriosam omnis dolorum. Harum voluptates non omnis. Consequatur molestias tempora qui harum rerum dignissimos.",
    "has_product_seeding": false,
    "has_onetime_payment": false,
    "status": "active",
    "image_url": "https://media.metapic.com/insecure/rs:fill:800:500/g:sm/dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDA5OTQ0P3RleHQ9cHJvdmlkZW50",
    "image": {
        "key": "dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDA5OTQ0P3RleHQ9cHJvdmlkZW50",
        "url": "https://media.metapic.com/insecure/rs:fill:800:500/g:sm/dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDA5OTQ0P3RleHQ9cHJvdmlkZW50",
        "base_url": "https://media.metapic.com",
        "base64": "dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDA5OTQ0P3RleHQ9cHJvdmlkZW50"
    },
    "store_id": 2227,
    "store_name": "Ernser Ltd",
    "store_logo_url": null,
    "store_logo": null,
    "currency": "GBP",
    "token": "dosx7a4dnfl0x6pg",
    "type": "standard"
}

Unpause campaign

POST
https://api.metapic.dev
/v2/offers/{offer_id}/unpause
requires authentication

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

offer_id
integer
required

The offer ID

Example:
15556

Response Fields

Example request:
curl --request POST \
    "https://api.metapic.dev/v2/offers/15556/unpause" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
    "id": 798,
    "campaign_title": "Demarco Ondricka",
    "campaign_text": "Quo eaque omnis nihil temporibus accusantium architecto et accusamus. Unde voluptatem doloribus eaque cupiditate qui voluptatem. Facilis repudiandae optio doloremque iste et alias eos.",
    "has_product_seeding": false,
    "has_onetime_payment": false,
    "status": "active",
    "image_url": "https://media.metapic.com/insecure/rs:fill:800:500/g:sm/dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDBmZjExP3RleHQ9dGVtcG9yaWJ1cw==",
    "image": {
        "key": "dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDBmZjExP3RleHQ9dGVtcG9yaWJ1cw==",
        "url": "https://media.metapic.com/insecure/rs:fill:800:500/g:sm/dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDBmZjExP3RleHQ9dGVtcG9yaWJ1cw==",
        "base_url": "https://media.metapic.com",
        "base64": "dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDBmZjExP3RleHQ9dGVtcG9yaWJ1cw=="
    },
    "store_id": 2228,
    "store_name": "Predovic, Erdman and Pagac",
    "store_logo_url": null,
    "store_logo": null,
    "currency": "EUR",
    "token": "lsygtkqey4qrofnl",
    "type": "standard"
}

Display campaign stats

GET
https://api.metapic.dev
/v2/offers/{offer_id}/stats
requires authentication

Returns statistics about a specific campaign.

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

offer_id
integer
required

The offer ID

Example:
15556

Query Parameters

start_date
string
required

The start date for the stats period (YYYY-MM-DD)

Example:
2023-01-01
end_date
string
required

The end date for the stats period (YYYY-MM-DD)

Example:
2023-01-31

Body Parameters

Example request:
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\": \"2018-03-28\",
    \"end_date\": \"2040-10-18\"
}"
Example response:
Headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 300
x-ratelimit-remaining: 300
access-control-allow-origin: *
{
    "message": "Unauthenticated."
}

Get User Campaigns

GET
https://api.metapic.dev
/v2/users/{user_id}/offers
requires authentication

Returns campaigns that are not of type "standard" with additional information about user participation. It also allows filtering by title and participant statuses.

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

user_id
integer
required

The ID of the user.

Example:
15

Query Parameters

status
string

DEPRECATED. Use statuses instead. Cannot be used together with statuses.

Must be one of:
  • open
  • applied
  • denied
  • accepted
  • store_denied
  • done
  • suggestion
  • second_prio
  • have_posted
  • have_received
  • product_sent
Example:
accepted
name
string

Filter campaigns by name. Must not be greater than 128 characters.

Example:
Nike
statuses
string[]
Must be one of:
  • open
  • applied
  • denied
  • accepted
  • store_denied
  • done
  • suggestion
  • second_prio
  • have_posted
  • have_received
  • product_sent
Example:
["store_denied"]

Response Fields

Example request:
curl --request GET \
    --get "https://api.metapic.dev/v2/users/15/offers?status=accepted&name=Nike&statuses[]=store_denied" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
[
    {
        "id": 811,
        "campaign_title": "Dr. Bernadette Maggio III",
        "campaign_text": "Deserunt aut qui est repudiandae autem. Perspiciatis molestiae ab quis odit temporibus aut. Est quasi accusantium eum nihil ea. Vitae odio ipsam saepe voluptatum quia.",
        "has_product_seeding": false,
        "has_onetime_payment": false,
        "status": "active",
        "image_url": "https://media.metapic.com/insecure/rs:fill:800:500/g:sm/dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDBmZjY2P3RleHQ9YmVhdGFl",
        "image": {
            "key": "dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDBmZjY2P3RleHQ9YmVhdGFl",
            "url": "https://media.metapic.com/insecure/rs:fill:800:500/g:sm/dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDBmZjY2P3RleHQ9YmVhdGFl",
            "base_url": "https://media.metapic.com",
            "base64": "dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDBmZjY2P3RleHQ9YmVhdGFl"
        },
        "store_id": 2262,
        "store_name": "Jacobs, Cummerata and Beahan",
        "store_logo_url": null,
        "store_logo": null,
        "currency": "USD",
        "token": "fzls37wvi95e798a",
        "type": "standard"
    },
    {
        "id": 812,
        "campaign_title": "Claud Sauer",
        "campaign_text": "Sapiente deserunt et neque dolorem. Suscipit et quod assumenda. Autem ad quia voluptas est aut sunt ut corporis.",
        "has_product_seeding": false,
        "has_onetime_payment": false,
        "status": "active",
        "image_url": "https://media.metapic.com/insecure/rs:fill:800:500/g:sm/dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDA2NjU1P3RleHQ9ZHVjaW11cw==",
        "image": {
            "key": "dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDA2NjU1P3RleHQ9ZHVjaW11cw==",
            "url": "https://media.metapic.com/insecure/rs:fill:800:500/g:sm/dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDA2NjU1P3RleHQ9ZHVjaW11cw==",
            "base_url": "https://media.metapic.com",
            "base64": "dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDA2NjU1P3RleHQ9ZHVjaW11cw=="
        },
        "store_id": 2263,
        "store_name": "Kub LLC",
        "store_logo_url": null,
        "store_logo": null,
        "currency": "GBP",
        "token": "6srf4zlb0tfm8nhs",
        "type": "standard"
    }
]

Get User Campaigns

GET
https://api.metapic.dev
/v2/users/{user_id}/campaigns
requires authentication

Returns campaigns that are not of type "standard" with additional information about user participation. It also allows filtering by title and participant statuses.

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

user_id
integer
required

The ID of the user.

Example:
15

Query Parameters

status
string

DEPRECATED. Use statuses instead. Cannot be used together with statuses.

Must be one of:
  • open
  • applied
  • denied
  • accepted
  • store_denied
  • done
  • suggestion
  • second_prio
  • have_posted
  • have_received
  • product_sent
Example:
accepted
name
string

Filter campaigns by name. Must not be greater than 128 characters.

Example:
Nike
statuses
string[]
Must be one of:
  • open
  • applied
  • denied
  • accepted
  • store_denied
  • done
  • suggestion
  • second_prio
  • have_posted
  • have_received
  • product_sent
Example:
["done"]

Response Fields

Example request:
curl --request GET \
    --get "https://api.metapic.dev/v2/users/15/campaigns?status=accepted&name=Nike&statuses[]=done" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
[
    {
        "id": 813,
        "campaign_title": "Mr. Brook Fay",
        "campaign_text": "Id aut qui doloremque eos. Molestiae ipsa qui est omnis cum laboriosam aliquam. Quia minus tenetur vitae eligendi ut repudiandae. A ut enim quos laudantium quae sit est facilis.",
        "has_product_seeding": false,
        "has_onetime_payment": false,
        "status": "active",
        "image_url": "https://media.metapic.com/insecure/rs:fill:800:500/g:sm/dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDAyMmJiP3RleHQ9b2Rpbw==",
        "image": {
            "key": "dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDAyMmJiP3RleHQ9b2Rpbw==",
            "url": "https://media.metapic.com/insecure/rs:fill:800:500/g:sm/dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDAyMmJiP3RleHQ9b2Rpbw==",
            "base_url": "https://media.metapic.com",
            "base64": "dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDAyMmJiP3RleHQ9b2Rpbw=="
        },
        "store_id": 2264,
        "store_name": "Hahn, Moen and Bradtke",
        "store_logo_url": null,
        "store_logo": null,
        "currency": "USD",
        "token": "bylqv27asjcom1jv",
        "type": "standard"
    },
    {
        "id": 814,
        "campaign_title": "Ms. Destany Schmitt II",
        "campaign_text": "Excepturi incidunt veritatis et sed voluptatibus maiores est tempore. Pariatur qui cum non cumque earum. Molestiae quo eos laborum. Velit in cumque et repellendus delectus.",
        "has_product_seeding": false,
        "has_onetime_payment": false,
        "status": "active",
        "image_url": "https://media.metapic.com/insecure/rs:fill:800:500/g:sm/dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDA5OWJiP3RleHQ9ZXN0",
        "image": {
            "key": "dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDA5OWJiP3RleHQ9ZXN0",
            "url": "https://media.metapic.com/insecure/rs:fill:800:500/g:sm/dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDA5OWJiP3RleHQ9ZXN0",
            "base_url": "https://media.metapic.com",
            "base64": "dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDA5OWJiP3RleHQ9ZXN0"
        },
        "store_id": 2265,
        "store_name": "Legros, Mosciski and Keebler",
        "store_logo_url": null,
        "store_logo": null,
        "currency": "EUR",
        "token": "qr8hl958wctolegb",
        "type": "standard"
    }
]

Display campaign

GET
https://api.metapic.dev
/v2/offer-by-token/{offer_token}
requires authentication

Returns information about a specific campaign.

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

offer_token
string
required
Example:
aut
offer_id
integer
required

The offer ID

Example:
15556

Response Fields

Example request:
curl --request GET \
    --get "https://api.metapic.dev/v2/offer-by-token/aut" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
    "id": 815,
    "campaign_title": "Reina Hermann",
    "campaign_text": "Libero nobis quibusdam sunt repellat ut nemo. Dicta minus est corporis. Unde distinctio ea repellat beatae ut autem aliquam. Nobis quia dignissimos deserunt iusto rem fugit. Sint nihil ut est aut.",
    "has_product_seeding": false,
    "has_onetime_payment": false,
    "status": "active",
    "image_url": "https://media.metapic.com/insecure/rs:fill:800:500/g:sm/dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDA5OTU1P3RleHQ9dGVtcG9yaWJ1cw==",
    "image": {
        "key": "dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDA5OTU1P3RleHQ9dGVtcG9yaWJ1cw==",
        "url": "https://media.metapic.com/insecure/rs:fill:800:500/g:sm/dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDA5OTU1P3RleHQ9dGVtcG9yaWJ1cw==",
        "base_url": "https://media.metapic.com",
        "base64": "dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDA5OTU1P3RleHQ9dGVtcG9yaWJ1cw=="
    },
    "store_id": 2269,
    "store_name": "O'Connell Inc",
    "store_logo_url": null,
    "store_logo": null,
    "currency": "USD",
    "token": "96hff8k2gp4ek9kl",
    "traffic_sources_costs": [
        {
            "id": 216,
            "source": 2,
            "cpc": null,
            "cpa": null,
            "currency": "USD"
        }
    ],
    "type": "standard"
}

Offer Target


Get targets for offer

GET
https://api.metapic.dev
/v2/offers/{offer_id}/targets
requires authentication

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

offer_id
integer
required

The offer ID

Example:
15556

Response Fields

Example request:
curl --request GET \
    --get "https://api.metapic.dev/v2/offers/15556/targets" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
Headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 300
x-ratelimit-remaining: 300
access-control-allow-origin: *
{
    "message": "Unauthenticated."
}

Add new targets to offer

POST
https://api.metapic.dev
/v2/offers/{offer_id}/targets
requires authentication

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

offer_id
integer
required

The offer ID

Example:
15556

Body Parameters

Response Fields

Example request:
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\": [
        2
    ],
    \"user_tag_ids\": [
        5
    ],
    \"store_group_ids\": [
        12
    ],
    \"emails\": [
        \"[email protected]\"
    ],
    \"social_media_identifiers\": [
        \"hdlbdgbmjnuruhtlvbhnihzdx\"
    ],
    \"client_ids\": [
        12
    ],
    \"revenue_tier_ids\": [
        14
    ]
}"

Offer Participant

Checks if user has been added to the offer.

GET
https://api.metapic.dev
/v2/offers/{offer_id}/users/{id}
requires authentication

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

offer_id
integer
required

The ID of the offer.

Example:
6
id
integer
required

The ID of the user.

Example:
15
Example request:
curl --request GET \
    --get "https://api.metapic.dev/v2/offers/6/users/15" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
Headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 300
x-ratelimit-remaining: 300
access-control-allow-origin: *
{
    "message": "Unauthenticated."
}

List participants in a campaign

GET
https://api.metapic.dev
/v2/offers/{offer_id}/participants
requires authentication

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

offer_id
integer
required

The ID of the offer.

Example:
9

Body Parameters

Response Fields

Example request:
curl --request GET \
    --get "https://api.metapic.dev/v2/offers/9/participants" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"query\": \"wbuzoxjxbdmnrpjubbomr\",
    \"status\": \"have_received\",
    \"include\": [
        \"has_unread_notifications\"
    ]
}"
Example response:
{
    "data": [
        {
            "id": null,
            "offer_id": 800,
            "user_id": null,
            "display_name": "[email protected]",
            "clicks": 468,
            "status": "have_received",
            "pre_registered_email": "[email protected]",
            "todo": null,
            "payment_amount": null
        },
        {
            "id": null,
            "offer_id": 802,
            "user_id": 3920,
            "display_name": null,
            "clicks": 13502,
            "status": "accepted",
            "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
    }
}

Get participant details

GET
https://api.metapic.dev
/v2/offers/{offer_id}/participants/{id}
requires authentication

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

offer_id
integer
required

The ID of the offer.

Example:
16
id
integer
required

The ID of the participant.

Example:
9

Response Fields

Example request:
curl --request GET \
    --get "https://api.metapic.dev/v2/offers/16/participants/9" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
    "id": null,
    "offer_id": 803,
    "user_id": 3923,
    "display_name": "ugottlieb",
    "clicks": 1835,
    "status": "applied",
    "todo": null,
    "payment_amount": null,
    "social_media": [],
    "tags": [
        {
            "id": 2198,
            "name": "Prof. Pierre Shanahan",
            "slug": "omnis-ad-iure",
            "access_level": 1,
            "store_id": 2234
        }
    ]
}

Retrieve participants statistics for an offer

GET
https://api.metapic.dev
/v2/offers/{offer_id}/participants-stats
requires authentication

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

offer_id
integer
required

The ID of the offer.

Example:
12

Body Parameters

Response Fields

Example request:
curl --request GET \
    --get "https://api.metapic.dev/v2/offers/12/participants-stats" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"query\": \"yzkiao\",
    \"active\": false,
    \"start_date\": \"2010-03-16\",
    \"end_date\": \"2083-12-25\",
    \"sort_by\": \"estimated_earning_to_cost_ratio:desc\"
}"
Example response:
{
    "data": [
        {
            "id": null,
            "user_id": null,
            "display_name": "[email protected]",
            "clicks": 0,
            "status": "denied",
            "links_created": null,
            "estimated_gp": null,
            "estimated_earning_to_cost_ratio": null
        },
        {
            "id": null,
            "user_id": null,
            "display_name": "thiel.hope",
            "clicks": 0,
            "status": "have_posted",
            "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
    }
}

Retrieve participants count by active/inactive

GET
https://api.metapic.dev
/v2/offers/{offer_id}/participants-count-by-click-activity
requires authentication

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

offer_id
integer
required

The ID of the offer.

Example:
16

Body Parameters

Example request:
curl --request GET \
    --get "https://api.metapic.dev/v2/offers/16/participants-count-by-click-activity" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"start_date\": \"2005-02-22\",
    \"end_date\": \"2097-09-06\"
}"
Example response:
Headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 300
x-ratelimit-remaining: 300
access-control-allow-origin: *
{
    "message": "Unauthenticated."
}

Update participant status

PATCH
https://api.metapic.dev
/v2/offers/{offer_id}/participants/{participant_id}/update-status
requires authentication

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

offer_id
integer
required

The ID of the offer.

Example:
7
participant_id
integer
required

The ID of the participant.

Example:
9

Body Parameters

Response Fields

Example request:
curl --request PATCH \
    "https://api.metapic.dev/v2/offers/7/participants/9/update-status" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"status\": \"second_prio\"
}"
Example response:
{
    "id": null,
    "offer_id": 806,
    "user_id": null,
    "display_name": "[email protected]",
    "clicks": 125,
    "status": "second_prio",
    "pre_registered_email": "[email protected]",
    "todo": null,
    "payment_amount": null
}

Update participant todo

PATCH
https://api.metapic.dev
/v2/offers/{offer_id}/participants/{participant_id}/todo
requires authentication

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

offer_id
integer
required

The ID of the offer.

Example:
10
participant_id
integer
required

The ID of the participant.

Example:
20

Body Parameters

Response Fields

Example request:
curl --request PATCH \
    "https://api.metapic.dev/v2/offers/10/participants/20/todo" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"todo\": [
        {
            \"key\": \"glc\",
            \"value\": false
        }
    ]
}"
Example response:
{
    "id": null,
    "offer_id": 807,
    "user_id": null,
    "display_name": "kihn.sophia",
    "clicks": 372851,
    "status": "accepted",
    "pre_registered_identifier": "kihn.sophia",
    "todo": null,
    "payment_amount": null
}

Update participant payment amount

PUT
https://api.metapic.dev
/v2/offers/{offer_id}/participants/{participant_id}/payment-amount
requires authentication

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

offer_id
integer
required

The ID of the offer.

Example:
8
participant_id
integer
required

The ID of the participant.

Example:
18

Body Parameters

Response Fields

Example request:
curl --request PUT \
    "https://api.metapic.dev/v2/offers/8/participants/18/payment-amount" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"payment_amount\": {
        \"amount\": \"1.2\",
        \"currency\": \"EUR\"
    }
}"
Example response:
{
    "id": null,
    "offer_id": 808,
    "user_id": 3928,
    "display_name": null,
    "clicks": 167,
    "status": "product_sent",
    "todo": null,
    "payment_amount": null
}

Set/override click limit

PATCH
https://api.metapic.dev
/v2/offers/{offer_id}/participants/{participant_id}/overrides/clicks
requires authentication

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

offer_id
integer
required

The ID of the offer.

Example:
1
participant_id
integer
required

The ID of the participant.

Example:
7

Body Parameters

Response Fields

Example request:
curl --request PATCH \
    "https://api.metapic.dev/v2/offers/1/participants/7/overrides/clicks" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"click_limit\": 10
}"
Example response:
{
    "id": null,
    "offer_id": 809,
    "user_id": null,
    "display_name": "jklein",
    "clicks": 438,
    "status": "store_denied",
    "pre_registered_identifier": "jklein",
    "todo": null,
    "payment_amount": null
}

Override campaign's costs

PATCH
https://api.metapic.dev
/v2/offers/{offer_id}/participants/{participant_id}/overrides/costs
requires authentication

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

offer_id
integer
required

The ID of the offer.

Example:
7
participant_id
integer
required

The ID of the participant.

Example:
5

Body Parameters

Response Fields

Example request:
curl --request PATCH \
    "https://api.metapic.dev/v2/offers/7/participants/5/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
        }
    ]
}"
Example response:
{
    "id": null,
    "offer_id": 810,
    "user_id": null,
    "display_name": "[email protected]",
    "clicks": 5506008,
    "status": "have_received",
    "pre_registered_email": "[email protected]",
    "todo": null,
    "payment_amount": null
}

Checks if user has been added to the offer.

GET
https://api.metapic.dev
/v2/offer-by-token/{offer_token}/users/{user_id}
requires authentication

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

offer_token
string
required
Example:
veritatis
user_id
integer
required

The ID of the user.

Example:
15
Example request:
curl --request GET \
    --get "https://api.metapic.dev/v2/offer-by-token/veritatis/users/15" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
Headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
set-cookie: metapic_session=eyJpdiI6ImRDUzN3VUIwUml1eWd1bUdVWklNRXc9PSIsInZhbHVlIjoiS3ZxY0JKcnVWOTVqa29yUWFPQVFXcEI3WUVERTFRY2F1dnhRRDIyaWsxd2tIWjZPYm9wSGQrSDg2NmJickFkNkJIdU5TVWk3ZlFxNU5YdmZFWGRMV0RnajhRZkl1TUdUVTI5eTIyaDF5K0ZONkRIYk9uOFczd3FLSENwSFkwV24iLCJtYWMiOiJmYWM3OGQxNGJlZjQzYWE4NmM3NGVmMWRhN2RiZDYwNjIwZTIzMTA1NTI5NDllNTNjMzI1MjkwMjllMjczOWQxIiwidGFnIjoiIn0%3D; expires=Wed, 18 Mar 2026 13:42:12 GMT; Max-Age=7200; path=/; secure; httponly
{
    "message": "Unauthenticated."
}

Mark user as having joined the campaign

POST
https://api.metapic.dev
/v2/offer-by-token/{offer_token}/users/{user_id}/join
requires authentication

This can only be performed by the user themselves.

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

offer_token
string
required
Example:
est
user_id
integer
required

The ID of the user.

Example:
15
Example request:
curl --request POST \
    "https://api.metapic.dev/v2/offer-by-token/est/users/15/join" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"

Comment


Add OfferUser comment

POST
https://api.metapic.dev
/v2/offer-users/{offer_user_id}/comments
requires authentication

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

offer_user_id
string
required

The ID of the offerUser.

Example:
1

Body Parameters

Example request:
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\": \"trtkg\"
}"

Update OfferUser comment

PUT
PATCH
https://api.metapic.dev
/v2/offer-users/{offer_user_id}/comments/{id}
requires authentication

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

offer_user_id
string
required

The ID of the offerUser.

Example:
1
id
integer
required

The ID of the comment.

Example:
14
offer_comment_id
string
required

The ID of the comment.

Example:
1

Body Parameters

Example request:
curl --request PUT \
    "https://api.metapic.dev/v2/offer-users/1/comments/14" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"comment\": \"zndhjpahimnas\"
}"

Delete OfferUser comment

DELETE
https://api.metapic.dev
/v2/offer-users/{offer_user_id}/comments/{id}
requires authentication

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

offer_user_id
string
required

The ID of the offerUser.

Example:
1
id
integer
required

The ID of the comment.

Example:
16
offerCommentId
string
required

The ID of the comment.

Example:
1
Example request:
curl --request DELETE \
    "https://api.metapic.dev/v2/offer-users/1/comments/16" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"

Activity


Get the list of activities on OfferUser card

GET
https://api.metapic.dev
/v2/offer-users/{offer_user}/activities
requires authentication

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

offer_user
string
required
Example:
necessitatibus

Body Parameters

Response Fields

Example request:
curl --request GET \
    --get "https://api.metapic.dev/v2/offer-users/necessitatibus/activities" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"include\": [
        \"has_unread_notification\"
    ]
}"
Example response:
Headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 300
x-ratelimit-remaining: 300
access-control-allow-origin: *
{
    "message": "Unauthenticated."
}

Ory

Identity Created

POST
https://api.metapic.dev
/v2/webhooks/ory/identities/created

Creates a Hubspot deal for advertiser representative when triggered by an Ory registration.after webhook.

Headers

mtpc-api-key
Example:
{mtpc-api-key}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Example request:
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\"
}"
Example response:
[Empty response]

Identity updated

POST
https://api.metapic.dev
/v2/webhooks/ory/identities/updated

Updates a user when triggered by an Ory settings.after webhook.

Headers

mtpc-api-key
Example:
{mtpc-api-key}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Example request:
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]\"
        }
    }
}"
Example response:
[Empty response]

Return Ads

List Return Ads

GET
https://api.metapic.dev
/v2/return-ads
requires authentication

Paginated list of Return Ads

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

Query Parameters

size
integer

Page size. Defaults to 20. Must not be greater than 100.

Example:
20
query
string

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.

Example:
internal name
advertiser_group_ids
integer[]

Query by return ad's advertiser group. Returns all return ads which belong to the given advertiser_group_ids.

Example:
[1]
advertiser_ids
integer[]

Query by return ad's advertiser. Returns all return ads which belong to the given advertiser_ids.

Example:
[1]
statuses
string[]
Must be one of:
  • deleted
  • ended
  • scheduled
  • paused
  • active
Example:
["scheduled"]
created_by
integer
Must be one of:
or_id
integer

Query 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.

Example:
1234
sort_by
string

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 a valid property for given resource and direction can be one of asc|desc, both of which are required if sort_by is present.

Must be one of:
  • name:asc
  • name:desc
  • created_at:asc
  • created_at:desc
  • starts_at:asc
  • starts_at:desc
  • ends_at:asc
  • ends_at:desc
  • current_clicks:asc
  • current_clicks:desc
  • current_views:asc
  • current_views:desc
  • order_count:asc
  • order_count:desc
  • order_value:asc
  • order_value:desc
  • earnings:asc
  • earnings:desc
  • click_through_rate:asc
  • click_through_rate:desc
  • conversion_rate:asc
  • conversion_rate:desc
Example:
current_clicks:asc

Response Fields

Example request:
curl --request GET \
    --get "https://api.metapic.dev/v2/return-ads?size=20&query=internal+name&advertiser_group_ids[]=1&advertiser_ids[]=1&statuses[]=scheduled&created_by=&or_id=1234&sort_by=current_clicks%3Aasc" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
    "data": [
        {
            "id": 277,
            "name": "Kelvin Farrell",
            "advertiser_group_id": 4903,
            "affiliate_link": {
                "id": 863,
                "url": "http://www.bauch.net/",
                "original_url": "http://smitham.com/molestiae-et-recusandae-eos-adipisci-sed-commodi-quia",
                "mtpc_url": "https://c.mtpc.se/863",
                "user_id": 3932,
                "country": "SZ",
                "provider": "maroon",
                "advertiser": {
                    "id": 2246,
                    "name": "Hickle PLC"
                }
            },
            "author_id": 3933,
            "display_for_all_advertisers": false,
            "status": "active",
            "styles": null,
            "image": {
                "key": "dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDA1NTQ0P3RleHQ9c2Vk",
                "url": "https://media.metapic.com/insecure/rs:fit:2000:2000/g:sm/dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDA1NTQ0P3RleHQ9c2Vk",
                "base_url": "https://media.metapic.com",
                "base64": "dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDA1NTQ0P3RleHQ9c2Vk"
            },
            "starts_at": "2026-02-18 12:42:10",
            "ends_at": "2026-04-18 12:42:10",
            "stats": []
        },
        {
            "id": 278,
            "name": "Annetta Leuschke",
            "advertiser_group_id": 4906,
            "affiliate_link": {
                "id": 864,
                "url": "https://shields.org/ipsa-nostrum-cum-aliquam-explicabo-ipsam-ut-nisi.html",
                "original_url": "http://botsford.com/consequatur-aliquid-in-accusamus",
                "mtpc_url": "https://c.mtpc.se/864",
                "user_id": 3934,
                "country": "ER",
                "provider": "purple",
                "advertiser": {
                    "id": 2247,
                    "name": "Weissnat, Klocko and Mann"
                }
            },
            "author_id": 3935,
            "display_for_all_advertisers": false,
            "status": "active",
            "styles": null,
            "image": {
                "key": "dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDBmZjg4P3RleHQ9ZGljdGE=",
                "url": "https://media.metapic.com/insecure/rs:fit:2000:2000/g:sm/dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDBmZjg4P3RleHQ9ZGljdGE=",
                "base_url": "https://media.metapic.com",
                "base64": "dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDBmZjg4P3RleHQ9ZGljdGE="
            },
            "starts_at": "2026-02-18 12:42:10",
            "ends_at": "2026-04-18 12:42:10",
            "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
    }
}

Create Return Ad

POST
https://api.metapic.dev
/v2/return-ads
requires authentication

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
curl --request POST \
    "https://api.metapic.dev/v2/return-ads" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"zjwl\",
    \"advertiser_group_id\": 3,
    \"advertiser_id\": 19,
    \"return_link\": \"https:\\/\\/advertiser.com\",
    \"display_for_all_advertisers\": true,
    \"advertiser_ids\": [
        4
    ],
    \"advertiser_category_ids\": [
        5
    ],
    \"styles\": {
        \"color\": \"#ffffff\"
    },
    \"image_key\": \"dG1wL2ltYWdlLmpwZw==\",
    \"starts_at\": \"2026-03-18T12:42:10\",
    \"ends_at\": \"2027-06-04\",
    \"click_limit\": 13,
    \"view_limit\": 11
}"
Example response:
{
    "id": 279,
    "name": "Nia Oberbrunner Jr.",
    "advertiser_group_id": 4909,
    "affiliate_link": {
        "id": 865,
        "url": "http://heathcote.com/deserunt-quae-dignissimos-consequuntur-id-tenetur-maiores",
        "original_url": "https://www.muller.com/quis-occaecati-et-voluptas-qui-aliquid-ut-illo",
        "mtpc_url": "https://c.mtpc.se/865",
        "user_id": 3936,
        "country": "RU",
        "provider": "yellow",
        "advertiser": {
            "id": 2248,
            "name": "Schuppe LLC"
        }
    },
    "author_id": 3937,
    "display_for_all_advertisers": false,
    "status": "active",
    "styles": null,
    "image": {
        "key": "dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDA0NDU1P3RleHQ9ZXQ=",
        "url": "https://media.metapic.com/insecure/rs:fit:2000:2000/g:sm/dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDA0NDU1P3RleHQ9ZXQ=",
        "base_url": "https://media.metapic.com",
        "base64": "dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDA0NDU1P3RleHQ9ZXQ="
    },
    "starts_at": "2026-02-18 12:42:10",
    "ends_at": "2026-04-18 12:42:10",
    "stats": []
}

Get Return Ad

GET
https://api.metapic.dev
/v2/return-ads/{id}
requires authentication

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

id
integer
required

The ID of the return ad.

Example:
15

Response Fields

Example request:
curl --request GET \
    --get "https://api.metapic.dev/v2/return-ads/15" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
    "id": 280,
    "name": "Joany Kassulke",
    "advertiser_group_id": 4912,
    "affiliate_link": {
        "id": 866,
        "url": "http://daugherty.info/sint-praesentium-facilis-neque-sed",
        "original_url": "http://www.rutherford.com/sunt-et-sequi-dolore-et-soluta-amet-omnis",
        "mtpc_url": "https://c.mtpc.se/866",
        "user_id": 3938,
        "country": "SG",
        "provider": "purple",
        "advertiser": {
            "id": 2249,
            "name": "Hansen PLC"
        }
    },
    "author_id": 3939,
    "display_for_all_advertisers": false,
    "status": "active",
    "styles": null,
    "image": {
        "key": "dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDA3NzExP3RleHQ9bGF1ZGFudGl1bQ==",
        "url": "https://media.metapic.com/insecure/rs:fit:2000:2000/g:sm/dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDA3NzExP3RleHQ9bGF1ZGFudGl1bQ==",
        "base_url": "https://media.metapic.com",
        "base64": "dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDA3NzExP3RleHQ9bGF1ZGFudGl1bQ=="
    },
    "starts_at": "2026-02-18 12:42:10",
    "ends_at": "2026-04-18 12:42:10",
    "stats": []
}

Update Return Ad

PUT
PATCH
https://api.metapic.dev
/v2/return-ads/{id}
requires authentication

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

id
integer
required

The ID of the return ad.

Example:
4

Body Parameters

Response Fields

Example request:
curl --request PUT \
    "https://api.metapic.dev/v2/return-ads/4" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"phpfohsufdasziejl\",
    \"return_link\": \"https:\\/\\/advertiser.com\",
    \"display_for_all_advertisers\": false,
    \"advertiser_ids\": [
        4
    ],
    \"advertiser_category_ids\": [
        9
    ],
    \"styles\": {
        \"color\": \"#ffffff\"
    },
    \"image_key\": \"dG1wL2ltYWdlLmpwZw==\",
    \"starts_at\": \"2026-03-18T12:42:10\",
    \"ends_at\": \"2074-03-17\",
    \"click_limit\": 19,
    \"view_limit\": 5
}"
Example response:
{
    "id": 281,
    "name": "Casimer Willms",
    "advertiser_group_id": 4915,
    "affiliate_link": {
        "id": 867,
        "url": "http://www.nader.org/reiciendis-est-dolores-voluptates-sit-enim-quaerat",
        "original_url": "http://www.kilback.com/voluptates-veritatis-perferendis-quia-inventore-blanditiis-excepturi.html",
        "mtpc_url": "https://c.mtpc.se/867",
        "user_id": 3940,
        "country": "AS",
        "provider": "silver",
        "advertiser": {
            "id": 2250,
            "name": "Renner-Cormier"
        }
    },
    "author_id": 3941,
    "display_for_all_advertisers": false,
    "status": "active",
    "styles": null,
    "image": {
        "key": "dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDBiYjk5P3RleHQ9ZXg=",
        "url": "https://media.metapic.com/insecure/rs:fit:2000:2000/g:sm/dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDBiYjk5P3RleHQ9ZXg=",
        "base_url": "https://media.metapic.com",
        "base64": "dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDBiYjk5P3RleHQ9ZXg="
    },
    "starts_at": "2026-02-18 12:42:10",
    "ends_at": "2026-04-18 12:42:10",
    "stats": []
}

Delete Return Ad

DELETE
https://api.metapic.dev
/v2/return-ads/{id}
requires authentication

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

id
integer
required

The ID of the return ad.

Example:
4
Example request:
curl --request DELETE \
    "https://api.metapic.dev/v2/return-ads/4" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"

Pause Return Ad

POST
https://api.metapic.dev
/v2/return-ads/{returnAd_id}/pause
requires authentication

Deactivates Return Ad

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

returnAd_id
integer
required

The ID of the returnAd.

Example:
4

Response Fields

Example request:
curl --request POST \
    "https://api.metapic.dev/v2/return-ads/4/pause" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
    "id": 282,
    "name": "Dr. Niko Lemke I",
    "advertiser_group_id": 4918,
    "affiliate_link": {
        "id": 868,
        "url": "http://www.klein.com/",
        "original_url": "http://www.jerde.net/fugit-ea-aliquam-rerum-explicabo-aperiam",
        "mtpc_url": "https://c.mtpc.se/868",
        "user_id": 3942,
        "country": "TD",
        "provider": "black",
        "advertiser": {
            "id": 2251,
            "name": "Hessel-Anderson"
        }
    },
    "author_id": 3943,
    "display_for_all_advertisers": false,
    "status": "active",
    "styles": null,
    "image": {
        "key": "dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDBiYjMzP3RleHQ9dm9sdXB0YXR1bQ==",
        "url": "https://media.metapic.com/insecure/rs:fit:2000:2000/g:sm/dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDBiYjMzP3RleHQ9dm9sdXB0YXR1bQ==",
        "base_url": "https://media.metapic.com",
        "base64": "dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDBiYjMzP3RleHQ9dm9sdXB0YXR1bQ=="
    },
    "starts_at": "2026-02-18 12:42:10",
    "ends_at": "2026-04-18 12:42:10",
    "stats": []
}

Unpause Return Ad

POST
https://api.metapic.dev
/v2/return-ads/{returnAd_id}/unpause
requires authentication

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

returnAd_id
integer
required

The ID of the returnAd.

Example:
7

Response Fields

Example request:
curl --request POST \
    "https://api.metapic.dev/v2/return-ads/7/unpause" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
    "id": 283,
    "name": "Hanna Morar V",
    "advertiser_group_id": 4921,
    "affiliate_link": {
        "id": 869,
        "url": "http://halvorson.biz/voluptatibus-et-eligendi-modi-necessitatibus.html",
        "original_url": "https://batz.biz/in-facere-est-aliquam-nisi-accusantium-sint-eaque.html",
        "mtpc_url": "https://c.mtpc.se/869",
        "user_id": 3944,
        "country": "KP",
        "provider": "teal",
        "advertiser": {
            "id": 2252,
            "name": "Kris-Hill"
        }
    },
    "author_id": 3945,
    "display_for_all_advertisers": false,
    "status": "active",
    "styles": null,
    "image": {
        "key": "dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDBhYWJiP3RleHQ9ZGVsZW5pdGk=",
        "url": "https://media.metapic.com/insecure/rs:fit:2000:2000/g:sm/dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDBhYWJiP3RleHQ9ZGVsZW5pdGk=",
        "base_url": "https://media.metapic.com",
        "base64": "dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDBhYWJiP3RleHQ9ZGVsZW5pdGk="
    },
    "starts_at": "2026-02-18 12:42:10",
    "ends_at": "2026-04-18 12:42:10",
    "stats": []
}

Get Return Ads for Advertiser

GET
https://api.metapic.dev
/v2/advertisers/{store_id}/return-ads
requires authentication

List of Return Ads displayed for Advertiser by ID

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

store_id
integer
required

The ID of the store.

Example:
19

Response Fields

Example request:
curl --request GET \
    --get "https://api.metapic.dev/v2/advertisers/19/return-ads" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
[
    {
        "id": 284,
        "name": "Carlie Gleichner",
        "advertiser_group_id": 4924,
        "affiliate_link": {
            "id": 870,
            "url": "http://www.becker.org/aut-rem-nostrum-consequatur-et-dolores-amet-quas",
            "original_url": "http://www.hermann.org/quae-cum-earum-ad-iste-quia-reprehenderit-perferendis",
            "mtpc_url": "https://c.mtpc.se/870",
            "user_id": 3946,
            "country": "TG",
            "provider": "yellow",
            "advertiser": {
                "id": 2253,
                "name": "Klocko-Beer"
            }
        },
        "author_id": 3947,
        "display_for_all_advertisers": false,
        "status": "active",
        "styles": null,
        "image": {
            "key": "dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDA3NzY2P3RleHQ9ZmFjaWxpcw==",
            "url": "https://media.metapic.com/insecure/rs:fit:2000:2000/g:sm/dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDA3NzY2P3RleHQ9ZmFjaWxpcw==",
            "base_url": "https://media.metapic.com",
            "base64": "dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDA3NzY2P3RleHQ9ZmFjaWxpcw=="
        },
        "starts_at": "2026-02-18 12:42:10",
        "ends_at": "2026-04-18 12:42:10",
        "stats": []
    },
    {
        "id": 285,
        "name": "Chris Davis",
        "advertiser_group_id": 4927,
        "affiliate_link": {
            "id": 871,
            "url": "http://schmitt.info/ut-omnis-impedit-eius-qui-qui",
            "original_url": "http://okuneva.biz/possimus-repudiandae-id-sint-ipsam.html",
            "mtpc_url": "https://c.mtpc.se/871",
            "user_id": 3948,
            "country": "KP",
            "provider": "blue",
            "advertiser": {
                "id": 2254,
                "name": "Schmitt-Jacobi"
            }
        },
        "author_id": 3949,
        "display_for_all_advertisers": false,
        "status": "active",
        "styles": null,
        "image": {
            "key": "dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDA1NWRkP3RleHQ9cmVwZWxsZW5kdXM=",
            "url": "https://media.metapic.com/insecure/rs:fit:2000:2000/g:sm/dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDA1NWRkP3RleHQ9cmVwZWxsZW5kdXM=",
            "base_url": "https://media.metapic.com",
            "base64": "dXBsb2Fkcy9odHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjQweDQ4MC5wbmcvMDA1NWRkP3RleHQ9cmVwZWxsZW5kdXM="
        },
        "starts_at": "2026-02-18 12:42:10",
        "ends_at": "2026-04-18 12:42:10",
        "stats": []
    }
]

Shared Budget

List Shared Budgets

GET
https://api.metapic.dev
/v2/stores/{store_id}/shared-budgets
requires authentication

List Shared Budgets for Store

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

store_id
integer
required

The ID of the store.

Example:
11

Response Fields

Example request:
curl --request GET \
    --get "https://api.metapic.dev/v2/stores/11/shared-budgets" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
[
    {
        "id": 43,
        "title": "Eddie Zemlak",
        "amount": 5,
        "amount_v2": {
            "amount": "0.05",
            "currency": "EUR"
        },
        "consumed_budget": 0,
        "consumed_budget_v2": {
            "amount": "0",
            "currency": "EUR"
        },
        "currency": "EUR"
    },
    {
        "id": 44,
        "title": "Prof. Jonatan Simonis Jr.",
        "amount": 4,
        "amount_v2": {
            "amount": "0.04",
            "currency": "SEK"
        },
        "consumed_budget": 0,
        "consumed_budget_v2": {
            "amount": "0",
            "currency": "SEK"
        },
        "currency": "SEK"
    }
]

Display Budget

GET
https://api.metapic.dev
/v2/stores/{store_id}/shared-budgets/{id}
requires authentication

Returns information about a specific budget.

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

store_id
integer
required

The ID of the store.

Example:
11
id
integer
required

The ID of the shared budget.

Example:
8

Response Fields

Example request:
curl --request GET \
    --get "https://api.metapic.dev/v2/stores/11/shared-budgets/8" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
    "id": 45,
    "title": "Kiera Johns",
    "amount": 6,
    "amount_v2": {
        "amount": "0.06",
        "currency": "SEK"
    },
    "consumed_budget": 0,
    "consumed_budget_v2": {
        "amount": "0",
        "currency": "SEK"
    },
    "currency": "SEK"
}

Update Shared Budget

PUT
PATCH
https://api.metapic.dev
/v2/stores/{store_id}/shared-budgets/{id}
requires authentication

Updates existing budget.

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

store_id
integer
required

The ID of the store.

Example:
2
id
integer
required

The ID of the shared budget.

Example:
10

Body Parameters

Response Fields

Example request:
curl --request PUT \
    "https://api.metapic.dev/v2/stores/2/shared-budgets/10" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"title\": \"Summer budget\",
    \"amount\": 10000
}"
Example response:
{
    "id": 46,
    "title": "Lucie Huel",
    "amount": 7,
    "amount_v2": {
        "amount": "0.07",
        "currency": "SEK"
    },
    "consumed_budget": 0,
    "consumed_budget_v2": {
        "amount": "0",
        "currency": "SEK"
    },
    "currency": "SEK"
}

Delete Shared Budget

DELETE
https://api.metapic.dev
/v2/stores/{store_id}/shared-budgets/{id}
requires authentication

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

store_id
integer
required

The ID of the store.

Example:
1
id
integer
required

The ID of the shared budget.

Example:
16
Example request:
curl --request DELETE \
    "https://api.metapic.dev/v2/stores/1/shared-budgets/16" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"

Store

PUT v2/stores/{advertiser}/payment

PUT
POST
https://api.metapic.dev
/v2/stores/{advertiser}/payment
requires authentication

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

advertiser
integer
required
Example:
10

Body Parameters

Example request:
curl --request PUT \
    "https://api.metapic.dev/v2/stores/10/payment" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"payment_setup_id\": \"modi\"
}"

Uploads

Upload image

POST
https://api.metapic.dev
/v2/image-uploads
requires authentication

Uploads an image to tmp folder.

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
curl --request POST \
    "https://api.metapic.dev/v2/image-uploads" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"image\": \"similique\"
}"

User

List users

GET
https://api.metapic.dev
/v2/users
requires authentication

Endpoint for querying & sorting all users.

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

Query Parameters

query
string

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.

Example:
testcreator123
client_id
integer

Query by user's client. Returns all users which belong to the given client_id.

Example:
2
store_group_id
integer

Query by user's store group. Returns all users which belong to the given store_group_id.

Example:
15
advertiser_id
integer
required

Filter users by advertiser/store id. Required for non-admin advertiser users. Admins can pass it optionally. The id of an existing record in the stores table.

Example:
123
include
string[]
Must be one of:
  • email
Example:
["email"]
size
integer

Page size. Defaults to 20. Must not be greater than 100.

Example:
20
sort_by
string

Must follow the correct format: column_name:direction, where column_name must be a valid property for given resource and direction can be one of asc|desc, both of which are required if sort_by is present.

Example:
rerum

Response Fields

Example request:
curl --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=rerum" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
    "data": [
        {
            "id": 3952,
            "username": "mallie.lind",
            "display_name": "Amya Feest",
            "email": "[email protected]",
            "client_id": 4186,
            "preferred_locale": ""
        },
        {
            "id": 3953,
            "username": "brekke.colleen",
            "display_name": "Estevan Konopelski",
            "email": "[email protected]",
            "client_id": 4187,
            "preferred_locale": ""
        }
    ],
    "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
    }
}

Get User Details

GET
https://api.metapic.dev
/v2/users/{id}
requires authentication

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

id
integer
required

The ID of the user.

Example:
15

Response Fields

Example request:
curl --request GET \
    --get "https://api.metapic.dev/v2/users/15" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
    "id": 3954,
    "username": "olubowitz",
    "display_name": "Fritz Parker",
    "email": "[email protected]",
    "client_id": 4188,
    "preferred_locale": ""
}

Create Creator User

POST
https://api.metapic.dev
/v2/users
requires authentication

Requires an Ory-issued JWT for a session not yet linked to a Metapic user (no user_id).

Headers

Authorization
Example:
Bearer {JWT}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
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\"
}"
Example response:
{
    "id": 3955,
    "username": "snitzsche",
    "display_name": "Zachery Schmitt",
    "email": "[email protected]",
    "client_id": 4189,
    "preferred_locale": ""
}

Update User Identity

PUT
https://api.metapic.dev
/v2/users/{user_id}/identity
requires authentication

It updates user's email and phone and syncs it with Ory identity.

Headers

Authorization
Example:
Bearer {JWT}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

user_id
integer
required

The ID of the user.

Example:
15

Body Parameters

Example request:
curl --request PUT \
    "https://api.metapic.dev/v2/users/15/identity" \
    --header "Authorization: Bearer {JWT}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"email\": \"[email protected]\",
    \"phone\": \"+1234567890\"
}"

Match users by IDs and emails

POST
https://api.metapic.dev
/v2/match-users
requires authentication

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

Query Parameters

advertiser_group_id
integer

Query by user's advertiser group. Returns all users which belong to the given advertiser_group_id.

Example:
15
user_emails_or_ids
object
required

a mix array of user emails and ids. Must not have more than 1000 items.

Example:
[12345,"[email protected]"]

Response Fields

Example request:
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"

Approve users

POST
https://api.metapic.dev
/v2/approve-users
requires authentication

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.

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
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\": [
        11
    ]
}"

Ban users

POST
https://api.metapic.dev
/v2/ban-users
requires authentication

Bans multiple users at once. The ban action also deletes all user offers. Events are triggered only for users whose status actually changes.

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
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\": [
        13
    ]
}"

User Tag

List user tags

GET
https://api.metapic.dev
/v2/user-tags
requires authentication

Endpoint for querying & sorting all user tags.

Headers

Authorization
Example:
{accessToken}
Content-Type
Example:
application/json
Accept
Example:
application/json

Query Parameters

name
string

Query by user tag's name. Returns all user tags whose name contains the given name. Must not be greater than 255 characters.

Example:
favourites
store_id
integer

Query by user tag's store. Returns all user tags which belong to the given store_id.

Example:
15
access_levels
object

Query by user tag's access levels. Returns all user tags which have the given access_levels:

  • ACCESS_LEVEL_ADMIN = 0
  • ACCESS_LEVEL_ALL = 1
  • ACCESS_LEVEL_STORE = 2
.
Must be one of:
  • 0
  • 1
  • 2
Example:
[0,1]
size
integer

Page size. Defaults to 20. Must not be greater than 100.

Example:
20
sort_by
string

Must follow the correct format: column_name:direction, where column_name must be a valid property for given resource and direction can be one of asc|desc, both of which are required if sort_by is present.

Example:
fugiat
Example request:
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=fugiat" \
    --header "Authorization: {accessToken}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
    "data": [
        {
            "id": 2199,
            "name": "Kathlyn Runte DDS",
            "slug": "excepturi-dolor",
            "access_level": 1,
            "store_id": 2260
        },
        {
            "id": 2200,
            "name": "Elmer Cronin",
            "slug": "doloremque-placeat-sed",
            "access_level": 1,
            "store_id": 2261
        }
    ],
    "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
    }
}