MENU navbar-image

Introduction

This documentation aims to provide all the information you need to work with our API.

Authenticating requests

This API is not authenticated.

Chats

Get Chats

requires authentication

Get list of user chats with Admin Support

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/support-admin-chat';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
    --get "https://api.metapic.com/support-admin-chat" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}"
const url = new URL(
    "https://api.metapic.com/support-admin-chat"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


[
    {
        "user_id": "{userId}",
        "active": 1,
        "type": "support_admin",
        "updated_at": "2022-01-24 16:42:46",
        "created_at": "2022-01-24 16:42:46",
        "id": "{chatId}",
        "messages": []
    }
]
 

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 200
x-ratelimit-remaining: 192
access-control-allow-origin: *
set-cookie: laravel_session=eyJpdiI6IkZYaVl3NVN5d0JDSGVVdlIvS0liTUE9PSIsInZhbHVlIjoiMU9zZGR1eFpHczl3RmwzUDB6VmJGZ1F5b1MxNzg1cXIyN09IUTN6QWpkUVgvWnU1eUUvaTd0eW4yZ2l6dk9IUHdiMUhNQWpTZWVVdDJqa1JRV21nalZqUisrY01Oa25pMlMwdUxheGFMV3Fuc0hTVlhwcEwzaUZJZ2s3cFRZWlAiLCJtYWMiOiI2MDVlMGI4MGJlNzc1NWJkMTA5YjU4MjQ1MzU2ZmIwZWViMDI4MDZjNTM1MDljNzE5M2FjZGQ3N2E4ZGQwYzIwIiwidGFnIjoiIn0%3D; expires=Thu, 28 Mar 2024 14:16:37 GMT; Max-Age=7200; path=/; httponly
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

Request      

GET support-admin-chat

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

Create Chat

requires authentication

Create new chat with Admin Support

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/support-admin-chat';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request POST \
    "https://api.metapic.com/support-admin-chat" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}"
const url = new URL(
    "https://api.metapic.com/support-admin-chat"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Example response (200):


{
    "user_id": "{userId}",
    "active": 1,
    "type": "support_admin",
    "updated_at": "2022-01-24 16:42:46",
    "created_at": "2022-01-24 16:42:46",
    "id": "{chatId}",
    "messages": [
        {
            "id": 189,
            "chat_id": 2,
            "user_id": "{userId}",
            "from": null,
            "message": "test",
            "created_at": "2022-01-24 11:40:10",
            "updated_at": "2022-01-24 11:40:10",
            "user": {
                "id": "{userId}",
                "username": "{username}",
                "email": "{email}",
                "is_suspended": false,
                "is_verified": false
            }
        }
    ]
}
 

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 200
x-ratelimit-remaining: 191
access-control-allow-origin: *
set-cookie: laravel_session=eyJpdiI6Ilhkc1JSWEIyd0hqNmhDNnNzNEswdGc9PSIsInZhbHVlIjoiRlV4ZHhvR1c3UTI1QVV3NHQ5SGZKRzhybGdzZGR0WHRkMy96VmYxVC9YYjJSZ3FJR0tsN3JTVjR6ODBIbFU5YmFxVlZTeVlzRUNhNjlHem9ncmRjR2dYdUVCd3ErVSsxM3A4aGxVTTVyTzVNT2l5UDBnZk5jUFp5bHZ2NVIwWWIiLCJtYWMiOiJlNzBiMmY1NjIyOGRlN2ZjZmI0MmFiZGM4OGY1YTMwY2FkYjEwZjRiMGY1MDZkZGZhMTVhZDIxZTVkMzFkMWQyIiwidGFnIjoiIn0%3D; expires=Thu, 28 Mar 2024 14:16:38 GMT; Max-Age=7200; path=/; httponly
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

Request      

POST support-admin-chat

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

Get Chat

requires authentication

Get user chat with Admin Support

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/support-admin-chat/et';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
    --get "https://api.metapic.com/support-admin-chat/et" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}"
const url = new URL(
    "https://api.metapic.com/support-admin-chat/et"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "user_id": "{userId}",
    "active": 1,
    "type": "support_admin",
    "updated_at": "2022-01-24 16:42:46",
    "created_at": "2022-01-24 16:42:46",
    "id": "{chatId}",
    "messages": [
        {
            "id": 189,
            "chat_id": 2,
            "user_id": "{userId}",
            "from": null,
            "message": "test",
            "created_at": "2022-01-24 11:40:10",
            "updated_at": "2022-01-24 11:40:10",
            "user": {
                "id": "{userId}",
                "username": "{username}",
                "email": "{email}",
                "is_suspended": false,
                "is_verified": false
            }
        }
    ]
}
 

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 200
x-ratelimit-remaining: 190
access-control-allow-origin: *
set-cookie: laravel_session=eyJpdiI6IkcyQnJwSnFHVmhxaWs0QW9FcGV1bWc9PSIsInZhbHVlIjoiSE9jT3QvbFV6ODEybUg2aEQ5N05wa05uek9XNzNMNlF4NW9zb1JsRjFaaVdadlFVM1A1MW5TczRiVGdLQ1QvM1ZDazIzMVYxaWVFYXJOSGlSTDArZGpNTnJneGk5cmcvVldhMVJTU0lqZGIwazhtZWRPR3FSQUFLcGVNMjZwUkwiLCJtYWMiOiJmNGIwYjdhYWUzNzNjOWU2Zjc5ODAzYTUxODVjODYwNWU0MjE5ZmI5OGUyZWEyNDczOGRkODk5NGE4ODZhYzU1IiwidGFnIjoiIn0%3D; expires=Thu, 28 Mar 2024 14:16:39 GMT; Max-Age=7200; path=/; httponly
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

Request      

GET support-admin-chat/{id}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

URL Parameters

id   string   

The ID of the support admin chat. Example: et

chat   integer   

The ID of the chat. Example: 1

Create Message

requires authentication

Create message in Admin Support

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/support-admin-chat/1/messages';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
        'json' => [
            'message' => 'textMessage',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request POST \
    "https://api.metapic.com/support-admin-chat/1/messages" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}" \
    --data "{
    \"message\": \"textMessage\"
}"
const url = new URL(
    "https://api.metapic.com/support-admin-chat/1/messages"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

let body = {
    "message": "textMessage"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "chat_id": "2",
    "user_id": "{userId}",
    "message": "test message",
    "updated_at": "2022-01-24 17:43:37",
    "created_at": "2022-01-24 17:43:37",
    "id": 222
}
 

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 200
x-ratelimit-remaining: 189
access-control-allow-origin: *
set-cookie: laravel_session=eyJpdiI6Im9aY01oakc0UGJBMkhqbHI2VTl4NGc9PSIsInZhbHVlIjoibUMrdzlGTm1XYXZYcFprV0NBT0lhTFdkVmlZQS9sZGdiblhYS1pNNm1WUnhsdTI5MjY0QUxqaUljdm5vWTdwa1A4eWRCSGVDS0dxT0E3aGV0RUtFN2xkS25vbEo4TkZPMU9QMGZFREs4R3FMQjNZcm1UeEJXOURZK2N4L3RIZEYiLCJtYWMiOiJmNWNkOGMyZmQxYTBhNjBkNWYwOGY2OGUyMGI3ZTBhNTZlM2VhNTQ1NjVhNmVlMzk5ZWFhM2EzYTI3MDdjMzYzIiwidGFnIjoiIn0%3D; expires=Thu, 28 Mar 2024 14:16:40 GMT; Max-Age=7200; path=/; httponly
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

Request      

POST support-admin-chat/{chatId}/messages

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

URL Parameters

chatId   integer   

The ID of the chat. Example: 1

Body Parameters

message   string   

Chat message. Must not be greater than 1024 characters. Example: textMessage

Deep linking

requires authentication

Return list of deep-link urls for authorized user

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/users/1/deep-link-urls';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
    --get "https://api.metapic.com/users/1/deep-link-urls" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}"
const url = new URL(
    "https://api.metapic.com/users/1/deep-link-urls"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 200
x-ratelimit-remaining: 149
access-control-allow-origin: *
set-cookie: laravel_session=eyJpdiI6InNiemxSS3VDNGtuWGM5RVdPOHAzK1E9PSIsInZhbHVlIjoiZW9rbE0wWjdwWEYxYUt2YlFIKzhzQ3BmSTJGM1AzOTB5OVNiQ0kzdlpKL0doUWx5T0tFbkZKa3d4RnlMUmdpQmFyNFdaMCtwYTliazV0OEZ0NUVXMDhaekd1aWRwdElONUI5OTR1RmJtcDFaUEF4RE9XeWZQMW5Yb2l4VkxEYXkiLCJtYWMiOiI5ZGM0YjAxMDFlYmQzN2JkYzI1NmRiOTkzYWRhY2EwMDA5ZjgyNjAyZjg3MWM5MmI0NDQ0NDY0MDQ1NmRjMTMyIiwidGFnIjoiIn0%3D; expires=Thu, 28 Mar 2024 14:16:19 GMT; Max-Age=7200; path=/; httponly
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

DeepLink BlogPost

requires authentication

Transform a html blocks links to metapic links. Will only transform links that you can earn money on

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/deepLinkBlogPost/et';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
        'json' => [
            'blogPost' => '<div> <a href=\'https://na-kd.com\'> link</a></div>',
            'dry' => 1,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request POST \
    "https://api.metapic.com/deepLinkBlogPost/et" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}" \
    --data "{
    \"blogPost\": \"<div> <a href=\'https:\\/\\/na-kd.com\'> link<\\/a><\\/div>\",
    \"dry\": 1
}"
const url = new URL(
    "https://api.metapic.com/deepLinkBlogPost/et"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

let body = {
    "blogPost": "<div> <a href='https:\/\/na-kd.com'> link<\/a><\/div>",
    "dry": 1
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "newHtml": "<div> <a href=\"https://c.mtpc.se/tags/link/2082970\"> link</a></div>",
    "linkTranslation": [
        {
            "before": "https://na-kd.com",
            "status": "success",
            "store": "NA-KD",
            "storeId": "{storeId}",
            "type": "tradedoubler_SE",
            "after": "https://c.mtpc.se/tags/link/2082970",
            "currency": "SEK",
            "tag_id": "{tagId}",
            "user_revenue_cpc": 250,
            "user_instagram_cpc": 100,
            "user_revenue_cpa": 0,
            "user_instagram_cpa": 0,
            "user_revenue_cpc_formated": "2.50 kr",
            "user_instagram_cpc_formated": "1.00 kr",
            "traffic_sources_costs": [
                {
                    "id": 301,
                    "store_id": "{storeId}",
                    "source": 0,
                    "cpc": 250,
                    "invoice_cpc": 250,
                    "cpa": 0,
                    "invoice_cpa": null,
                    "created_at": "2023-05-03 12:01:08",
                    "updated_at": "2023-05-03 12:01:08",
                    "user_revenue": 1,
                    "client_revenue": null,
                    "cpc_formatted": "2.50 kr",
                    "title": "General"
                },
                {
                    "id": 302,
                    "store_id": "{storeId}",
                    "source": 1,
                    "cpc": 100,
                    "invoice_cpc": 100,
                    "cpa": null,
                    "invoice_cpa": null,
                    "created_at": "2023-05-03 12:01:09",
                    "updated_at": "2023-05-03 12:01:09",
                    "user_revenue": 1,
                    "client_revenue": null,
                    "cpc_formatted": "1.00 kr",
                    "title": "Instagram"
                }
            ]
        }
    ],
    "isUpdated": true
}
 

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
set-cookie: laravel_session=eyJpdiI6Im92ZlNrUXo4SkZtZE5LZXB3eE9Xa0E9PSIsInZhbHVlIjoiTFVEbmQ2eGEyZ2I3aWpsZlUvaUtLS24zQmw0cVFLcnZVSUpPQ0h5cnNsVkhEVk0weldxTzhIbFpCOUNGMzVobnZnZWVoRDEweSs4TlBoUncyWnVCd3A5d3Z3MURLY2d4V1kyZDdsZFRYNlVQbFZoZmNzVUNNVlZwOGZVMUZ1UlMiLCJtYWMiOiI2NzE5YTk4N2NkNzhhYWQyNjExMzRlNGQxYjM2MzczMDFlOTc5MDUwOGQxYjA2Zjg0OWJiNmE3ZGQ2YzM3ODIzIiwidGFnIjoiIn0%3D; expires=Thu, 28 Mar 2024 14:16:49 GMT; Max-Age=7200; path=/; httponly
 

{
    "status": 403,
    "error": "forbidden"
}
 

Request      

POST deepLinkBlogPost/{id}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

URL Parameters

id   string   

The ID of the deepLinkBlogPost. Example: et

user_id   integer  optional  

The id of the user. Example: 1

Body Parameters

blogPost   string   

Link. Example: <div> <a href='https://na-kd.com'> link</a></div>

dry   boolean  optional  

When dry is set - link will not be created. Example: 1

requires authentication

Create deeplinks from an array of links

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/deep-links';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
        'json' => [
            'links' => '["https://ellos.com"]',
            'userId' => 1,
            'dry' => 1,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request POST \
    "https://api.metapic.com/deep-links" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}" \
    --data "{
    \"links\": \"[\\\"https:\\/\\/ellos.com\\\"]\",
    \"userId\": 1,
    \"dry\": 1
}"
const url = new URL(
    "https://api.metapic.com/deep-links"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

let body = {
    "links": "[\"https:\/\/ellos.com\"]",
    "userId": 1,
    "dry": 1
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


[
    {
        "before": "https://na-kd.com",
        "status": "success",
        "store": "NA-KD",
        "storeId": "{storeId}",
        "type": "tradedoubler_SE",
        "after": "https://c.mtpc.se/tags/link/2082974",
        "currency": "SEK",
        "tag_id": "{tagId}",
        "user_revenue_cpc": 250,
        "user_instagram_cpc": 100,
        "user_revenue_cpa": 0,
        "user_instagram_cpa": 0,
        "user_revenue_cpc_formated": "2.50 kr",
        "user_instagram_cpc_formated": "1.00 kr",
        "traffic_sources_costs": [
            {
                "id": 301,
                "store_id": "{storeId}",
                "source": 0,
                "cpc": 250,
                "invoice_cpc": 250,
                "cpa": 0,
                "invoice_cpa": null,
                "created_at": "2023-05-03 12:01:08",
                "updated_at": "2023-05-03 12:01:08",
                "user_revenue": 1,
                "client_revenue": null,
                "cpc_formatted": "2.50 kr",
                "title": "General"
            },
            {
                "id": 302,
                "store_id": "{storeId}",
                "source": 1,
                "cpc": 100,
                "invoice_cpc": 100,
                "cpa": null,
                "invoice_cpa": null,
                "created_at": "2023-05-03 12:01:09",
                "updated_at": "2023-05-03 12:01:09",
                "user_revenue": 1,
                "client_revenue": null,
                "cpc_formatted": "1.00 kr",
                "title": "Instagram"
            }
        ]
    },
    "..."
]
 

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
set-cookie: laravel_session=eyJpdiI6IkJybWZ3ODhodE05eHBuL3JGcG9HWnc9PSIsInZhbHVlIjoiT3Q4aFZOWDJuVGdFQTh1Y2ZtR1RTQlRZNXB4enZEL1hkL0JVcitLcWFMV2h0N1hkY0hHTzZmRTZGUndmTlh3NTRsdExSb2JuWTBtMncvZnFHeDNld1lJL2o3TFRXbkgzRlVMVE15QlJWU0JqVTZIdENoQTJCMWU1bUNjZm0xQ2YiLCJtYWMiOiJkM2U1MjU5YzZlYmI2Yzg3OThkNzEyMmM4ODJiY2VlNjQ5Mzc0Y2NmMzUyOThkNjNkMTU4YjM4NjMwOWZhYzBlIiwidGFnIjoiIn0%3D; expires=Thu, 28 Mar 2024 14:16:50 GMT; Max-Age=7200; path=/; httponly
 

{
    "status": 403,
    "error": "forbidden"
}
 

Endpoints

Display a listing of the resource.

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/v2/stores/2/offers';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
    --get "https://api.metapic.com/v2/stores/2/offers" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}"
const url = new URL(
    "https://api.metapic.com/v2/stores/2/offers"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 56
access-control-allow-origin: *
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

Request      

GET v2/stores/{store_id}/offers

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

URL Parameters

store_id   integer   

The ID of the store. Example: 2

Get the validation rules that apply to the request.

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/v2/stores/2/offers';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
        'json' => [
            'active' => false,
            'campaign_title' => 'bjeertvjcuapf',
            'campaign_text' => 'imyzfktthlxv',
            'has_product_seeding' => false,
            'todo' => [
                'ipsam',
            ],
            'has_onetime_payment' => false,
            'one_time_payment' => 4,
            'valid_from' => '2024-03-28T13:15:32',
            'valid_until' => '1999-11-02',
            'max_clicks' => 19,
            'per_user_limit' => true,
            'max_money' => 15,
            'type' => 'suggestion',
            'traffic_sources_costs' => [
                'explicabo',
            ],
            'targets' => [
                'user_ids' => [
                    5,
                ],
                'user_tag_ids' => [
                    19,
                ],
                'store_group_ids' => [
                    4,
                ],
                'emails' => [
                    '[email protected]',
                ],
                'social_media_identifiers' => [
                    'j',
                ],
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request POST \
    "https://api.metapic.com/v2/stores/2/offers" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}" \
    --data "{
    \"active\": false,
    \"campaign_title\": \"bjeertvjcuapf\",
    \"campaign_text\": \"imyzfktthlxv\",
    \"has_product_seeding\": false,
    \"todo\": [
        \"ipsam\"
    ],
    \"has_onetime_payment\": false,
    \"one_time_payment\": 4,
    \"valid_from\": \"2024-03-28T13:15:32\",
    \"valid_until\": \"1999-11-02\",
    \"max_clicks\": 19,
    \"per_user_limit\": true,
    \"max_money\": 15,
    \"type\": \"suggestion\",
    \"traffic_sources_costs\": [
        \"explicabo\"
    ],
    \"targets\": {
        \"user_ids\": [
            5
        ],
        \"user_tag_ids\": [
            19
        ],
        \"store_group_ids\": [
            4
        ],
        \"emails\": [
            \"[email protected]\"
        ],
        \"social_media_identifiers\": [
            \"j\"
        ]
    }
}"
const url = new URL(
    "https://api.metapic.com/v2/stores/2/offers"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

let body = {
    "active": false,
    "campaign_title": "bjeertvjcuapf",
    "campaign_text": "imyzfktthlxv",
    "has_product_seeding": false,
    "todo": [
        "ipsam"
    ],
    "has_onetime_payment": false,
    "one_time_payment": 4,
    "valid_from": "2024-03-28T13:15:32",
    "valid_until": "1999-11-02",
    "max_clicks": 19,
    "per_user_limit": true,
    "max_money": 15,
    "type": "suggestion",
    "traffic_sources_costs": [
        "explicabo"
    ],
    "targets": {
        "user_ids": [
            5
        ],
        "user_tag_ids": [
            19
        ],
        "store_group_ids": [
            4
        ],
        "emails": [
            "[email protected]"
        ],
        "social_media_identifiers": [
            "j"
        ]
    }
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 54
access-control-allow-origin: *
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

Request      

POST v2/stores/{store_id}/offers

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

URL Parameters

store_id   integer   

The ID of the store. Example: 2

Body Parameters

active   boolean   

Example: false

campaign_title   string   

Must not be greater than 64 characters. Example: bjeertvjcuapf

campaign_text   string  optional  

Must not be greater than 1056 characters. Example: imyzfktthlxv

has_product_seeding   boolean  optional  

Example: false

todo   string[]  optional  
has_onetime_payment   boolean  optional  

Example: false

one_time_payment   integer  optional  

This field is required when has_onetime_payment is true. Must not be greater than 1000000. Example: 4

valid_from   string  optional  

Must be a valid date. Example: 2024-03-28T13:15:32

valid_until   string  optional  

Must be a valid date. Must be a date after from. Example: 1999-11-02

max_clicks   integer  optional  

Must not be greater than 1000000. Example: 19

per_user_limit   boolean  optional  

Example: true

max_money   integer  optional  

Must not be greater than 1000000. Example: 15

type   string   

Example: suggestion

Must be one of:
  • standard
  • user_accept
  • store_accept
  • suggestion
traffic_sources_costs   integer[]   
source   integer   

Example: 15

cpc   integer   

Must not be greater than 1000. Example: 9

cpa   number   

Must be between 0 and 1. Example: 0

targets   object   
user_ids   integer[]  optional  
user_tag_ids   integer[]  optional  
store_group_ids   integer[]  optional  
emails   string[]  optional  

The value format is invalid.

social_media_identifiers   string[]  optional  

Must not be greater than 30 characters.

Get the validation rules that apply to the request.

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/v2/offers/23';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
        'json' => [
            'active' => false,
            'campaign_title' => 'jeffr',
            'campaign_text' => 'eftlfaheohevfncpduqrh',
            'has_product_seeding' => true,
            'todo' => [
                'labore',
            ],
            'has_onetime_payment' => true,
            'one_time_payment' => 12,
            'valid_from' => '2024-03-28T13:15:35',
            'valid_until' => '1976-12-30',
            'max_clicks' => 17,
            'per_user_limit' => false,
            'max_money' => 4,
            'type' => 'suggestion',
            'traffic_sources_costs' => [
                'ut',
            ],
            'targets' => [
                'user_ids' => [
                    5,
                ],
                'user_tag_ids' => [
                    19,
                ],
                'store_group_ids' => [
                    2,
                ],
                'emails' => [
                    '[email protected]',
                ],
                'social_media_identifiers' => [
                    'yepfddiowyfbbzkbgqxoxbk',
                ],
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request PUT \
    "https://api.metapic.com/v2/offers/23" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}" \
    --data "{
    \"active\": false,
    \"campaign_title\": \"jeffr\",
    \"campaign_text\": \"eftlfaheohevfncpduqrh\",
    \"has_product_seeding\": true,
    \"todo\": [
        \"labore\"
    ],
    \"has_onetime_payment\": true,
    \"one_time_payment\": 12,
    \"valid_from\": \"2024-03-28T13:15:35\",
    \"valid_until\": \"1976-12-30\",
    \"max_clicks\": 17,
    \"per_user_limit\": false,
    \"max_money\": 4,
    \"type\": \"suggestion\",
    \"traffic_sources_costs\": [
        \"ut\"
    ],
    \"targets\": {
        \"user_ids\": [
            5
        ],
        \"user_tag_ids\": [
            19
        ],
        \"store_group_ids\": [
            2
        ],
        \"emails\": [
            \"[email protected]\"
        ],
        \"social_media_identifiers\": [
            \"yepfddiowyfbbzkbgqxoxbk\"
        ]
    }
}"
const url = new URL(
    "https://api.metapic.com/v2/offers/23"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

let body = {
    "active": false,
    "campaign_title": "jeffr",
    "campaign_text": "eftlfaheohevfncpduqrh",
    "has_product_seeding": true,
    "todo": [
        "labore"
    ],
    "has_onetime_payment": true,
    "one_time_payment": 12,
    "valid_from": "2024-03-28T13:15:35",
    "valid_until": "1976-12-30",
    "max_clicks": 17,
    "per_user_limit": false,
    "max_money": 4,
    "type": "suggestion",
    "traffic_sources_costs": [
        "ut"
    ],
    "targets": {
        "user_ids": [
            5
        ],
        "user_tag_ids": [
            19
        ],
        "store_group_ids": [
            2
        ],
        "emails": [
            "[email protected]"
        ],
        "social_media_identifiers": [
            "yepfddiowyfbbzkbgqxoxbk"
        ]
    }
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 51
access-control-allow-origin: *
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

Request      

PUT v2/offers/{id}

PATCH v2/offers/{id}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

URL Parameters

id   integer   

The ID of the offer. Example: 23

Body Parameters

active   boolean   

Example: false

campaign_title   string   

Must not be greater than 64 characters. Example: jeffr

campaign_text   string  optional  

Must not be greater than 1056 characters. Example: eftlfaheohevfncpduqrh

has_product_seeding   boolean  optional  

Example: true

todo   string[]  optional  
has_onetime_payment   boolean  optional  

Example: true

one_time_payment   integer  optional  

This field is required when has_onetime_payment is true. Must not be greater than 1000000. Example: 12

valid_from   string  optional  

Must be a valid date. Example: 2024-03-28T13:15:35

valid_until   string  optional  

Must be a valid date. Must be a date after from. Example: 1976-12-30

max_clicks   integer  optional  

Must not be greater than 1000000. Example: 17

per_user_limit   boolean  optional  

Example: false

max_money   integer  optional  

Must not be greater than 1000000. Example: 4

type   string   

Example: suggestion

Must be one of:
  • standard
  • user_accept
  • store_accept
  • suggestion
traffic_sources_costs   integer[]   
source   integer   

Example: 5

cpc   integer   

Must not be greater than 1000. Example: 13

cpa   number   

Must be between 0 and 1. Example: 1

targets   object   
user_ids   integer[]  optional  
user_tag_ids   integer[]  optional  
store_group_ids   integer[]  optional  
emails   string[]  optional  

The value format is invalid.

social_media_identifiers   string[]  optional  

Must not be greater than 30 characters.

Remove the specified resource from storage.

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/v2/offers/23';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request DELETE \
    "https://api.metapic.com/v2/offers/23" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}"
const url = new URL(
    "https://api.metapic.com/v2/offers/23"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 49
access-control-allow-origin: *
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

Request      

DELETE v2/offers/{id}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

URL Parameters

id   integer   

The ID of the offer. Example: 23

Display a listing of the resource.

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/v2/offers/23/targets';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
    --get "https://api.metapic.com/v2/offers/23/targets" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}"
const url = new URL(
    "https://api.metapic.com/v2/offers/23/targets"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 47
access-control-allow-origin: *
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

Request      

GET v2/offers/{offer_id}/targets

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

URL Parameters

offer_id   integer   

The ID of the offer. Example: 23

Get the validation rules that apply to the request.

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/v2/offers/23/targets';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
        'json' => [
            'user_ids' => [
                1,
            ],
            'user_tag_ids' => [
                5,
            ],
            'store_group_ids' => [
                18,
            ],
            'emails' => [
                '[email protected]',
            ],
            'social_media_identifiers' => [
                'tguqqw',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request POST \
    "https://api.metapic.com/v2/offers/23/targets" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}" \
    --data "{
    \"user_ids\": [
        1
    ],
    \"user_tag_ids\": [
        5
    ],
    \"store_group_ids\": [
        18
    ],
    \"emails\": [
        \"[email protected]\"
    ],
    \"social_media_identifiers\": [
        \"tguqqw\"
    ]
}"
const url = new URL(
    "https://api.metapic.com/v2/offers/23/targets"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

let body = {
    "user_ids": [
        1
    ],
    "user_tag_ids": [
        5
    ],
    "store_group_ids": [
        18
    ],
    "emails": [
        "[email protected]"
    ],
    "social_media_identifiers": [
        "tguqqw"
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 45
access-control-allow-origin: *
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

Request      

POST v2/offers/{offer_id}/targets

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

URL Parameters

offer_id   integer   

The ID of the offer. Example: 23

Body Parameters

user_ids   integer[]  optional  
user_tag_ids   integer[]  optional  
store_group_ids   integer[]  optional  
emails   string[]  optional  

The value format is invalid.

social_media_identifiers   string[]  optional  

Must not be greater than 30 characters.

Display the specified resource.

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/v2/offers/23/targets/doloribus';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
    --get "https://api.metapic.com/v2/offers/23/targets/doloribus" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}"
const url = new URL(
    "https://api.metapic.com/v2/offers/23/targets/doloribus"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 43
access-control-allow-origin: *
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

Request      

GET v2/offers/{offer_id}/targets/{id}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

URL Parameters

offer_id   integer   

The ID of the offer. Example: 23

id   string   

The ID of the target. Example: doloribus

Update the specified resource in storage.

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/v2/offers/23/targets/veritatis';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request PUT \
    "https://api.metapic.com/v2/offers/23/targets/veritatis" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}"
const url = new URL(
    "https://api.metapic.com/v2/offers/23/targets/veritatis"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

fetch(url, {
    method: "PUT",
    headers,
}).then(response => response.json());

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 41
access-control-allow-origin: *
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

Request      

PUT v2/offers/{offer_id}/targets/{id}

PATCH v2/offers/{offer_id}/targets/{id}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

URL Parameters

offer_id   integer   

The ID of the offer. Example: 23

id   string   

The ID of the target. Example: veritatis

Remove the specified resource from storage.

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/v2/offers/23/targets/nemo';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request DELETE \
    "https://api.metapic.com/v2/offers/23/targets/nemo" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}"
const url = new URL(
    "https://api.metapic.com/v2/offers/23/targets/nemo"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 39
access-control-allow-origin: *
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

Request      

DELETE v2/offers/{offer_id}/targets/{id}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

URL Parameters

offer_id   integer   

The ID of the offer. Example: 23

id   string   

The ID of the target. Example: nemo

Delete One Time Earning

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/admin/one-time-earnings/1';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request DELETE \
    "https://api.metapic.com/admin/one-time-earnings/1" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}"
const url = new URL(
    "https://api.metapic.com/admin/one-time-earnings/1"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
set-cookie: laravel_session=eyJpdiI6InlOVWNQWVkyYW1tczZKMTQybnpvZHc9PSIsInZhbHVlIjoiV1M2OHdkaDU2Vm9teUtwaGhTYnNyQ0RHd3NSVG5NWERSNzRMZkEyRzA5Rkp1dVowcU9jU2kvbm5rS1BWb0E0enl6RlRYU3ZLbkVIRHI4UlFpcForeUovYTViSnFxKy85S1FHYUc4TzNMNUdTaVY0bGFYV001ZFg3cDFFN2F4enUiLCJtYWMiOiJhZTg1ZDczYWM4MzNlMGY5ODM3MWNmOWIzMDJjMWQ3NTZkNDY0NmEyZWJmZmM2N2VkYjkxM2RiNWQ3Zjg4NWMzIiwidGFnIjoiIn0%3D; expires=Thu, 28 Mar 2024 14:15:51 GMT; Max-Age=7200; path=/; httponly
 

{
    "status": 403,
    "error": "forbidden"
}
 

Request      

DELETE admin/one-time-earnings/{id}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

URL Parameters

id   integer   

The ID of the one time earning. Example: 1

PUT v2/stores/{store_id}/payment

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/v2/stores/2/payment';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request PUT \
    "https://api.metapic.com/v2/stores/2/payment" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}"
const url = new URL(
    "https://api.metapic.com/v2/stores/2/payment"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

fetch(url, {
    method: "PUT",
    headers,
}).then(response => response.json());

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 200
x-ratelimit-remaining: 173
access-control-allow-origin: *
set-cookie: laravel_session=eyJpdiI6IjVxbi9UdnRhaUhOR2dRNGkzNnNtZ0E9PSIsInZhbHVlIjoiVlNHZVA5TDVSWms0cnE5bXViek16MDNlVDl2Ry9qODRsejdtcW50d3o1MUVtTmtlUjZ0T1hmRGRKZnBkcWtMWG1KeFJFUERsa3Z2YklodzZOL3NKTnE1QVF5bWJxbHZyZ0tEQXF2ZzdzUWs5UjhkQWl2cDVXMDlrcDliaU1sZXMiLCJtYWMiOiJkN2YzODkyZTg2ZDMyNzAwNTk5ZGMzNjlkYWY1MjMwMjg2MjZjMzQ0ZGM5YzU5NmI5M2E1OWFlZWJjYjE4MzgwIiwidGFnIjoiIn0%3D; expires=Thu, 28 Mar 2024 14:15:54 GMT; Max-Age=7200; path=/; httponly
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

Request      

PUT v2/stores/{store_id}/payment

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

URL Parameters

store_id   integer   

The ID of the store. Example: 2

Get User Tags Stats Get Tags with TagClickView(clicks and earnings) statistic

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/stats/tags';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
    --get "https://api.metapic.com/stats/tags" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}"
const url = new URL(
    "https://api.metapic.com/stats/tags"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 200
x-ratelimit-remaining: 164
access-control-allow-origin: *
set-cookie: laravel_session=eyJpdiI6ImVtNHhtdjczRlhTbkhCR1lGNis3eWc9PSIsInZhbHVlIjoiREVxb1g3MWVqVnRJemx5SkNpdzZrdTU1azFab0xGQ1JKNXZOUmFEMlZDTUhIdytNQmY5NHNwL0tseCtseGlHMWZ4eFV6WnE1SGtYVjR1Tmt0ajdtZlQrR2ZLemIrU0pBeGtLbWh4d3ZsZzNYekJlVWpXTVRYZkdVc2hteEZFU3oiLCJtYWMiOiIwNjhkY2IwYjE3ZmZlZGNmMDk5MDE3MmZhOGY5NzVlMGYyYWE1NDJmNmFmMjQxMzAzYTY3MTk0ZTZjODcwZjYzIiwidGFnIjoiIn0%3D; expires=Thu, 28 Mar 2024 14:16:04 GMT; Max-Age=7200; path=/; httponly
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

Request      

GET stats/tags

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

GET users/{id}/stores/stats

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/users/1/stores/stats';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
    --get "https://api.metapic.com/users/1/stores/stats" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}"
const url = new URL(
    "https://api.metapic.com/users/1/stores/stats"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 200
x-ratelimit-remaining: 160
access-control-allow-origin: *
set-cookie: laravel_session=eyJpdiI6Iml2dHR6TkEzaHdKeWFTRGd4aVhqQ1E9PSIsInZhbHVlIjoiL3IwQW41WXVyT2ptSmdCUUhSbWpoY1pyVmg1MmZIVWtUWTlRcnhwSlpaWGxRWERmZ2s4TnZDQ1RqcTI1dDZWcCtZeUFzU2R4NWdLeUI1WE5HZlFSb1lkbGZTNHQ4Rk0vUUJFaG93RjJSWnk2czNjdVZxZDBwYjFyNnNTL0RjanMiLCJtYWMiOiIxZDgwZGQ1MjRjOTg4YTU3Y2Q5OWRjNjljMTUzNjQ4Zjk5Y2IxNTRhODQ3ZDlkY2Y5ODg3MTE4MGUzZTczZDM4IiwidGFnIjoiIn0%3D; expires=Thu, 28 Mar 2024 14:16:08 GMT; Max-Age=7200; path=/; httponly
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

Request      

GET users/{id}/stores/stats

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

URL Parameters

id   integer   

The ID of the user. Example: 1

POST shopelloDeepLinking/{locale}

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/shopelloDeepLinking/ny_MW';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request POST \
    "https://api.metapic.com/shopelloDeepLinking/ny_MW" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}"
const url = new URL(
    "https://api.metapic.com/shopelloDeepLinking/ny_MW"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 200
x-ratelimit-remaining: 159
access-control-allow-origin: *
set-cookie: laravel_session=eyJpdiI6IlducjI0d1d2UWtuNTZRbTcxSHJxVEE9PSIsInZhbHVlIjoiNS9Da2Exdzl3ZE5OVXMwckpoNGUrNzlOdUtiMlgrVC9ZUXcvK1F0RnZNRmh1UkJnUDNyL2NiOGN0TVdmQmQ0NkRDMERLNWU5NmZRblVuck5MMm9lU3dMclI5NCtlak5WUnVhR0J5V3RiNHlYOTd4QXRHRk8vUm52R0VJbmxSdVAiLCJtYWMiOiJhYjZjNDQwNGExNWQ3NjAyOGZkODdlOTNmZjBjZTMxMmRiZDgyODgxM2IxMmZkYTc1NTdlZTAxYzQzMjk4YWRjIiwidGFnIjoiIn0%3D; expires=Thu, 28 Mar 2024 14:16:09 GMT; Max-Age=7200; path=/; httponly
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

Request      

POST shopelloDeepLinking/{locale}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

URL Parameters

locale   string   

Example: ny_MW

GET getInformation

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/getInformation';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
    --get "https://api.metapic.com/getInformation" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}"
const url = new URL(
    "https://api.metapic.com/getInformation"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 200
x-ratelimit-remaining: 158
access-control-allow-origin: *
set-cookie: laravel_session=eyJpdiI6ImdWWGlmSUprVDFVVHY2eSs1RW9sRnc9PSIsInZhbHVlIjoiVnBUcjlSR0pZNEZPMWJsZFBSQ1E1UStTTHg1bHVidXdselhPOE1Fd3pUb1BnaGlqK1I3SXlDWURWYWF1NHpVU3krdFRKZ0twOVM2K1MxeVBNUjJ3VWVuSzVpNzkzUUgxbDBWaEtlNHRHK0NoR3VPYU03Q0ZEZmVyRldyL3E5WUIiLCJtYWMiOiIzZjk2YTQ1MzZjYjBiMTkxM2QwODkzNDA2OWU3OTJkMzVhMjY3ODJjODk4N2U2NzUyMjNmNzFkYWRlNWMyYjQ4IiwidGFnIjoiIn0%3D; expires=Thu, 28 Mar 2024 14:16:10 GMT; Max-Age=7200; path=/; httponly
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

Request      

GET getInformation

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

POST getEarningBetween

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/getEarningBetween';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request POST \
    "https://api.metapic.com/getEarningBetween" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}"
const url = new URL(
    "https://api.metapic.com/getEarningBetween"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 200
x-ratelimit-remaining: 157
access-control-allow-origin: *
set-cookie: laravel_session=eyJpdiI6IjNDejI1YWdUMEp4a0RkMktoRVY4Snc9PSIsInZhbHVlIjoiQjhEcjRUT2pQMmxDME9acE52cUo3WVVyMkluRjEyenpzQ1RsOGp0WFJ3NFBESmRJKzFPeXphS1hPNjZkelM2RGZZSDh6blUwc3hmMVNyeXVVQUFuY1pLKytyMk1Xa3BtUnp4S2RNSW51VmU3NkVRdUlwNEdVRndDY1lNKzVDNW4iLCJtYWMiOiIzNjBmYjlhYTY2NDc1MTg3ZGZlZTlmMWYzMmFkYTc1YTY2ODkxYWJmZDMyNjYwNzU1MmI5MmEwYTkxMjExZWU3IiwidGFnIjoiIn0%3D; expires=Thu, 28 Mar 2024 14:16:11 GMT; Max-Age=7200; path=/; httponly
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

Request      

POST getEarningBetween

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

POST sendFeedback

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/sendFeedback';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request POST \
    "https://api.metapic.com/sendFeedback" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}"
const url = new URL(
    "https://api.metapic.com/sendFeedback"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 200
x-ratelimit-remaining: 156
access-control-allow-origin: *
set-cookie: laravel_session=eyJpdiI6ImZuN2pRSDZNdm85dHZoMnVwOTA2dVE9PSIsInZhbHVlIjoiZW5FUExYejE1TlRHcXg0VUliS0dPajBVVGJwaXVib2VJeGdVb1FWV0JQUWFDN0hmRitkNGxrRGo4ZkN3WExBVDVEV2RRTWoxdFZKR0lVRnpFMEo5d3BURC95eDlvRVVJdVdVaS91aTU5dU9kWjZHb2d1U29aUnR0UzBHbWFYd1oiLCJtYWMiOiJkM2MyM2JlMGJmZmEyNTViZWJkOWNkNzQ5NjNhODliNjk2ZWM3ZTE5YzAxYTI4OTcwY2QwYTM3ZjMzYjExMGFhIiwidGFnIjoiIn0%3D; expires=Thu, 28 Mar 2024 14:16:12 GMT; Max-Age=7200; path=/; httponly
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

Request      

POST sendFeedback

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

POST setUserConfig

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/setUserConfig';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request POST \
    "https://api.metapic.com/setUserConfig" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}"
const url = new URL(
    "https://api.metapic.com/setUserConfig"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 200
x-ratelimit-remaining: 155
access-control-allow-origin: *
set-cookie: laravel_session=eyJpdiI6IjJDUmZ6RXgxUHgrTnJ5TmZIYU5oUmc9PSIsInZhbHVlIjoiaStaRWNWcDhnYWszVmhrVTdjWGJxU0t6S1ZzbUU2VHllR2ppQytuMnZ3M3pJWktEancwT0J1NXMzMnhBU21Qa0ZZNUFTcVdHR3ZsclRuMjBKNzdTZFcvNUlkUjJ0UVpSeHlKQWZBSXp1QjFZUjYxd293a0dBUDlobTRjanVrREMiLCJtYWMiOiI2ZTU5ZWI1ODA5YjFkMGZhMmFlNjM0MGRjYmMyNzIyOTgyZGJlMTdhMzNhZTMxNGQxODYxZTRjYzhjMGE0YzhkIiwidGFnIjoiIn0%3D; expires=Thu, 28 Mar 2024 14:16:13 GMT; Max-Age=7200; path=/; httponly
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

Request      

POST setUserConfig

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

Get User Info Used to get personal user info by authorized user

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/extraUserInfo';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
    --get "https://api.metapic.com/extraUserInfo" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}"
const url = new URL(
    "https://api.metapic.com/extraUserInfo"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 200
x-ratelimit-remaining: 154
access-control-allow-origin: *
set-cookie: laravel_session=eyJpdiI6Ikl4YzRpUUovOXhSN2M2c0k3Y0tWZGc9PSIsInZhbHVlIjoiVmI1cTdSdkwzeVdtNHdsTDhtSng3TTUydG53eVJHYUc2N0lvMVpNNml0T3hKVzh2NFVhRmY5VW5UN1EvNGZxWTBDUVh5UVhhY0N5WGJMNW9LaHBhOFR2U1d4OEZvSzFZUm5EZ0NDNmdxUGphRE9HZmNScnRzNXZXbkZ4ZmsvVmciLCJtYWMiOiIzOTFkODM4N2Y5ZWEyMTIxOGVhMmNhODZmYWMwMjlmODI1OTRhNWM5YTcxYjQ5ZjAyYzllY2Y3NWZlYTg4NDBiIiwidGFnIjoiIn0%3D; expires=Thu, 28 Mar 2024 14:16:14 GMT; Max-Age=7200; path=/; httponly
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

Request      

GET extraUserInfo

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

Get Payments for a user.

requires authentication

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/getPaymentsForUser';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
    --get "https://api.metapic.com/getPaymentsForUser" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}"
const url = new URL(
    "https://api.metapic.com/getPaymentsForUser"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 200
x-ratelimit-remaining: 151
access-control-allow-origin: *
set-cookie: laravel_session=eyJpdiI6IkxqKzZDM2xZMm1jRmVOeGl0TThvb0E9PSIsInZhbHVlIjoidkZiRmhuMXdLZTliazAyOHAzNWRYcjhveFZjSit5OW9pV2dSNHV3RlAxZEhlNEF5cmtnK0EwNVhSbU5TcVdNbWh6TE54aExBNlRhTmwxbTA5Y2FoUm9SaTRpdEFYcWRUU3M0THh5bHlTMEVRUnlZem1Cbk11M3F3Qmg3SzZNcXEiLCJtYWMiOiI2YjRmYTA1YzExZWNiOTc1ZjFhNjI2MmI2MWYyZGFhYzkwODAwZDFiZTRhMmJjNzEzY2M0NWE5NGE3MTYwMWNjIiwidGFnIjoiIn0%3D; expires=Thu, 28 Mar 2024 14:16:17 GMT; Max-Age=7200; path=/; httponly
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

Request      

GET getPaymentsForUser

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

Get the pdf for a payment

requires authentication

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/users/1/payments/19/pdf';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
    --get "https://api.metapic.com/users/1/payments/19/pdf" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}"
const url = new URL(
    "https://api.metapic.com/users/1/payments/19/pdf"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 200
x-ratelimit-remaining: 150
access-control-allow-origin: *
set-cookie: laravel_session=eyJpdiI6Iis3Umwrd0FXN1RROTRmclV4dmZ2L1E9PSIsInZhbHVlIjoiOFMvSUlYVENIMzhaNVJjVEdpQjBCOHVCVDJRTmpiWGI3a05YQUNmaUN2WWtHM0hnTWIxYk95Q3VzMXg0T0M4MVNDOUpiQktGeGdUY1BNMmREUnRseFp2MXBRSUpka3RnSEx1Q3RGY3lZODl6Qzd6NGN2UUJjUGwxRVVyWFhRWHciLCJtYWMiOiIwYTc1NTg0Njc2ZGMzZGY5ZTYxNjBiMzdlZGY2ZmZjOTJiZWVmYzk4OTJkZjY0MzMwYmI0YzBhODgxMzU2YjllIiwidGFnIjoiIn0%3D; expires=Thu, 28 Mar 2024 14:16:18 GMT; Max-Age=7200; path=/; httponly
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

Request      

GET users/{userId}/payments/{id}/pdf

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

URL Parameters

userId   integer   

Example: 1

id   integer   

the invoice id you want the pdf for Example: 19

Checks if user has been added to the offer.

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/v2/offer-by-token/cum/users/1';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
    --get "https://api.metapic.com/v2/offer-by-token/cum/users/1" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}"
const url = new URL(
    "https://api.metapic.com/v2/offer-by-token/cum/users/1"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
set-cookie: laravel_session=eyJpdiI6IlFMcjZPdXFleDFEUlEyRDFOS3Zqdmc9PSIsInZhbHVlIjoibkE4c0dKbHc4cktvTEM3V0lxUkx3ZmlzWjdlbUlCN2ZoV3FBZkVSMXREeGxjK2thajhBT3g4ZUxZS1hjWjMxeVlQWEgrTkg4YW03YzNPaWdSOUJaQkJObTgwRFZoMGlUT0tDbkxLc1RxT3NmNGx1cU1zSlNlcjVLSVlDaWtuWXciLCJtYWMiOiJhNjcxNzg5ZWUwYjNjOWFkMTc4Yjc0NGU3ZWViMzc3NWZlMTI0N2E2OTI4ZGE4ZjcwYmE4Mzc4Y2Y4YWQyNjk4IiwidGFnIjoiIn0%3D; expires=Thu, 28 Mar 2024 14:16:25 GMT; Max-Age=7200; path=/; httponly
 

{
    "message": "No query results for model [App\\Models\\Offer] cum",
    "exception": "Symfony\\Component\\HttpKernel\\Exception\\NotFoundHttpException",
    "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php",
    "line": 487,
    "trace": [
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php",
            "line": 463,
            "function": "prepareException",
            "class": "Illuminate\\Foundation\\Exceptions\\Handler",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/app/Exceptions/Handler.php",
            "line": 56,
            "function": "render",
            "class": "Illuminate\\Foundation\\Exceptions\\Handler",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/nunomaduro/collision/src/Adapters/Laravel/ExceptionHandler.php",
            "line": 54,
            "function": "render",
            "class": "App\\Exceptions\\Handler",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php",
            "line": 51,
            "function": "render",
            "class": "NunoMaduro\\Collision\\Adapters\\Laravel\\ExceptionHandler",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 188,
            "function": "handleException",
            "class": "Illuminate\\Routing\\Pipeline",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/app/Http/Middleware/VerifyCsrfToken.php",
            "line": 29,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 183,
            "function": "handle",
            "class": "App\\Http\\Middleware\\VerifyCsrfToken",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php",
            "line": 49,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 183,
            "function": "handle",
            "class": "Illuminate\\View\\Middleware\\ShareErrorsFromSession",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php",
            "line": 121,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php",
            "line": 64,
            "function": "handleStatefulRequest",
            "class": "Illuminate\\Session\\Middleware\\StartSession",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 183,
            "function": "handle",
            "class": "Illuminate\\Session\\Middleware\\StartSession",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php",
            "line": 37,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 183,
            "function": "handle",
            "class": "Illuminate\\Cookie\\Middleware\\AddQueuedCookiesToResponse",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php",
            "line": 67,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 183,
            "function": "handle",
            "class": "Illuminate\\Cookie\\Middleware\\EncryptCookies",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 119,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
            "line": 805,
            "function": "then",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
            "line": 784,
            "function": "runRouteWithinStack",
            "class": "Illuminate\\Routing\\Router",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
            "line": 748,
            "function": "runRoute",
            "class": "Illuminate\\Routing\\Router",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
            "line": 737,
            "function": "dispatchToRoute",
            "class": "Illuminate\\Routing\\Router",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
            "line": 200,
            "function": "dispatch",
            "class": "Illuminate\\Routing\\Router",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 144,
            "function": "Illuminate\\Foundation\\Http\\{closure}",
            "class": "Illuminate\\Foundation\\Http\\Kernel",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php",
            "line": 62,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 183,
            "function": "handle",
            "class": "Illuminate\\Http\\Middleware\\HandleCors",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
            "line": 21,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php",
            "line": 40,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 183,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Middleware\\TrimStrings",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php",
            "line": 27,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 183,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php",
            "line": 99,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 183,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php",
            "line": 39,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 183,
            "function": "handle",
            "class": "Illuminate\\Http\\Middleware\\TrustProxies",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 119,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
            "line": 175,
            "function": "then",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
            "line": 144,
            "function": "sendRequestThroughRouter",
            "class": "Illuminate\\Foundation\\Http\\Kernel",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/knuckleswtf/scribe/src/Extracting/Strategies/Responses/ResponseCalls.php",
            "line": 300,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Kernel",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/knuckleswtf/scribe/src/Extracting/Strategies/Responses/ResponseCalls.php",
            "line": 288,
            "function": "callLaravelOrLumenRoute",
            "class": "Knuckles\\Scribe\\Extracting\\Strategies\\Responses\\ResponseCalls",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/knuckleswtf/scribe/src/Extracting/Strategies/Responses/ResponseCalls.php",
            "line": 91,
            "function": "makeApiCall",
            "class": "Knuckles\\Scribe\\Extracting\\Strategies\\Responses\\ResponseCalls",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/knuckleswtf/scribe/src/Extracting/Strategies/Responses/ResponseCalls.php",
            "line": 44,
            "function": "makeResponseCall",
            "class": "Knuckles\\Scribe\\Extracting\\Strategies\\Responses\\ResponseCalls",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/knuckleswtf/scribe/src/Extracting/Strategies/Responses/ResponseCalls.php",
            "line": 35,
            "function": "makeResponseCallIfConditionsPass",
            "class": "Knuckles\\Scribe\\Extracting\\Strategies\\Responses\\ResponseCalls",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/knuckleswtf/scribe/src/Extracting/Extractor.php",
            "line": 236,
            "function": "__invoke",
            "class": "Knuckles\\Scribe\\Extracting\\Strategies\\Responses\\ResponseCalls",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/knuckleswtf/scribe/src/Extracting/Extractor.php",
            "line": 163,
            "function": "iterateThroughStrategies",
            "class": "Knuckles\\Scribe\\Extracting\\Extractor",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/knuckleswtf/scribe/src/Extracting/Extractor.php",
            "line": 95,
            "function": "fetchResponses",
            "class": "Knuckles\\Scribe\\Extracting\\Extractor",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/knuckleswtf/scribe/src/GroupedEndpoints/GroupedEndpointsFromApp.php",
            "line": 125,
            "function": "processRoute",
            "class": "Knuckles\\Scribe\\Extracting\\Extractor",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/knuckleswtf/scribe/src/GroupedEndpoints/GroupedEndpointsFromApp.php",
            "line": 72,
            "function": "extractEndpointsInfoFromLaravelApp",
            "class": "Knuckles\\Scribe\\GroupedEndpoints\\GroupedEndpointsFromApp",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/knuckleswtf/scribe/src/GroupedEndpoints/GroupedEndpointsFromApp.php",
            "line": 50,
            "function": "extractEndpointsInfoAndWriteToDisk",
            "class": "Knuckles\\Scribe\\GroupedEndpoints\\GroupedEndpointsFromApp",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/app/Console/Commands/Documentation/GenerateDocumentation.php",
            "line": 66,
            "function": "get",
            "class": "Knuckles\\Scribe\\GroupedEndpoints\\GroupedEndpointsFromApp",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/app/Console/Commands/Documentation/GenerateDocumentation.php",
            "line": 50,
            "function": "init",
            "class": "App\\Console\\Commands\\Documentation\\GenerateDocumentation",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php",
            "line": 36,
            "function": "handle",
            "class": "App\\Console\\Commands\\Documentation\\GenerateDocumentation",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Container/Util.php",
            "line": 41,
            "function": "Illuminate\\Container\\{closure}",
            "class": "Illuminate\\Container\\BoundMethod",
            "type": "::"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php",
            "line": 93,
            "function": "unwrapIfClosure",
            "class": "Illuminate\\Container\\Util",
            "type": "::"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php",
            "line": 35,
            "function": "callBoundMethod",
            "class": "Illuminate\\Container\\BoundMethod",
            "type": "::"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Container/Container.php",
            "line": 662,
            "function": "call",
            "class": "Illuminate\\Container\\BoundMethod",
            "type": "::"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Console/Command.php",
            "line": 211,
            "function": "call",
            "class": "Illuminate\\Container\\Container",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/symfony/console/Command/Command.php",
            "line": 326,
            "function": "execute",
            "class": "Illuminate\\Console\\Command",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Console/Command.php",
            "line": 180,
            "function": "run",
            "class": "Symfony\\Component\\Console\\Command\\Command",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/symfony/console/Application.php",
            "line": 1096,
            "function": "run",
            "class": "Illuminate\\Console\\Command",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/symfony/console/Application.php",
            "line": 324,
            "function": "doRunCommand",
            "class": "Symfony\\Component\\Console\\Application",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/symfony/console/Application.php",
            "line": 175,
            "function": "doRun",
            "class": "Symfony\\Component\\Console\\Application",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php",
            "line": 201,
            "function": "run",
            "class": "Symfony\\Component\\Console\\Application",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/artisan",
            "line": 35,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Console\\Kernel",
            "type": "->"
        }
    ]
}
 

Request      

GET v2/offer-by-token/{offer_token}/users/{userId}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

URL Parameters

offer_token   string   

Example: cum

userId   integer   

Example: 1

Link List

requires authentication

Get link list for user with all links and design

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/users/1/link-list';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
    --get "https://api.metapic.com/users/1/link-list" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}"
const url = new URL(
    "https://api.metapic.com/users/1/link-list"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "id": 1,
    "name": "username",
    "user_id": 1,
    "view_type": 1,
    "color": 1,
    "created_at": "2022-03-30T09:33:44.000000Z",
    "updated_at": "2022-03-30T09:33:44.000000Z",
    "links": [
        {
            "id": 3,
            "title": "",
            "tag_id": 123,
            "link_list_id": 1,
            "link_list_image_id": null,
            "position": 1,
            "created_at": "2022-03-30T09:33:44.000000Z",
            "updated_at": "2022-03-30T09:33:44.000000Z"
        },
        {
            "id": 4,
            "title": "",
            "tag_id": 123,
            "link_list_id": 1,
            "link_list_image_id": null,
            "position": 2,
            "created_at": "2022-03-30T09:37:50.000000Z",
            "updated_at": "2022-03-30T09:37:50.000000Z"
        }
    ]
}
 

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 200
x-ratelimit-remaining: 188
access-control-allow-origin: *
set-cookie: laravel_session=eyJpdiI6Ing2RldnVHljUEhQS2w0a1UvbEZ3Y0E9PSIsInZhbHVlIjoiSHhZRDdBQ3RlT2JsVDNVdmpDd0hqMDJLblhkSW01ZEZJd3daQy8wVVJRTjZhUUVETnVEQVVvSmR2blB0bzNvMWhDbXowUTBQT3ZKVXp6cGZ4Njg3SUVxdlV6dVYxTkxhYys0ZVRBSXV3cHJ4aXpWT0pnUTU1TlFSam1neUFvdlAiLCJtYWMiOiJhYWQzYWFjMmNjOWY4Njc3YThhMTU4NTBjN2I5NDQ4MWI2YzllMTY2ZjA0ZGY2ZTg5YWE4Nzg3NmFlMDJmNDY4IiwidGFnIjoiIn0%3D; expires=Thu, 28 Mar 2024 14:16:41 GMT; Max-Age=7200; path=/; httponly
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

requires authentication

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/users/1/link-list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
        'json' => [
            'view_type' => 1,
            'color' => 1,
            'avatar' => 'url | imageData',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request POST \
    "https://api.metapic.com/users/1/link-list" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}" \
    --data "{
    \"view_type\": 1,
    \"color\": 1,
    \"avatar\": \"url | imageData\"
}"
const url = new URL(
    "https://api.metapic.com/users/1/link-list"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

let body = {
    "view_type": 1,
    "color": 1,
    "avatar": "url | imageData"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "id": 1,
    "name": "username",
    "user_id": 1,
    "view_type": 1,
    "color": 1,
    "created_at": "2022-03-30T09:33:44.000000Z",
    "updated_at": "2022-03-30T09:33:44.000000Z",
    "links": [
        {
            "id": 3,
            "title": "",
            "tag_id": 123,
            "link_list_id": 1,
            "link_list_image_id": null,
            "position": 1,
            "created_at": "2022-03-30T09:33:44.000000Z",
            "updated_at": "2022-03-30T09:33:44.000000Z"
        },
        {
            "id": 4,
            "title": "",
            "tag_id": 123,
            "link_list_id": 1,
            "link_list_image_id": null,
            "position": 2,
            "created_at": "2022-03-30T09:37:50.000000Z",
            "updated_at": "2022-03-30T09:37:50.000000Z"
        }
    ]
}
 

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 200
x-ratelimit-remaining: 187
access-control-allow-origin: *
set-cookie: laravel_session=eyJpdiI6Ild0cUNPK2w2alF5akttc0pvVXJ0QVE9PSIsInZhbHVlIjoicEhCYUdQaDFUQklKQ09sUlhhdGRVb2RiUG8zQXVyeVJjMFpEbitkTWVZQkJoKytHV1puM1k3Y0hpcUNlRnB4YXZQWTV5Sy9kUUU2bkx3aW9UaHRUa3hGYkljOUdtVXlROTllR3Joek5MRVVPekM2ZjBMa3FnZ1FWbjdMNGhndm8iLCJtYWMiOiI5MzViNWViZWU4Mjk1ZTY5ZmYwMjY2YmIzZGZmNjBjM2FlNjYyZjdlN2YzZTE5YTU3Y2IwYWQwZGQxN2FhZjMyIiwidGFnIjoiIn0%3D; expires=Thu, 28 Mar 2024 14:16:42 GMT; Max-Age=7200; path=/; httponly
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

requires authentication

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/users/1/link';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
        'json' => [
            'title' => '"Link Title"',
            'tag_id' => 'itaque',
            'image' => '"href or image data"',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request POST \
    "https://api.metapic.com/users/1/link" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}" \
    --data "{
    \"title\": \"\\\"Link Title\\\"\",
    \"tag_id\": \"itaque\",
    \"image\": \"\\\"href or image data\\\"\"
}"
const url = new URL(
    "https://api.metapic.com/users/1/link"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

let body = {
    "title": "\"Link Title\"",
    "tag_id": "itaque",
    "image": "\"href or image data\""
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "id": 2,
    "title": "",
    "tag_id": 123,
    "link_list_id": 1,
    "link_list_image_id": 1,
    "position": 1,
    "created_at": "2022-03-30T09:32:22.000000Z",
    "updated_at": "2022-03-30T09:32:22.000000Z",
    "link_list": {
        "id": 1,
        "name": "username",
        "user_id": 1,
        "view_type": 1,
        "color": 1,
        "created_at": "2022-03-30T09:32:22.000000Z",
        "updated_at": "2022-03-30T09:32:22.000000Z"
    }
}
 

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 200
x-ratelimit-remaining: 186
access-control-allow-origin: *
set-cookie: laravel_session=eyJpdiI6InBBOEFyU0VnWWxyWVhPM2VKUVNUUkE9PSIsInZhbHVlIjoiV2cvMjVteklzK1Y2bXkrblR3dFZXcSszamNUYnVZWlFPUVNKVkJoMFpzcmtwWHF4VmViQVEva0lRZm9IZ2NxNFNUZnV5SXpYNmRWRUZ4NGJjaWlQSWV5V1JJK3BNbGNZY2QybG9vRWltdGZnU0Q1ejJHTCs4dldkSFhsNWZQVlkiLCJtYWMiOiJlMWFjZGViY2Q4ZWQ4OTg4YTU1YzcyZDY2ZjQwNTNhMTc3MTA5NjNhODFkYzQwMDZkMTEzOTBiNzI5ZWQyNGE1IiwidGFnIjoiIn0%3D; expires=Thu, 28 Mar 2024 14:16:43 GMT; Max-Age=7200; path=/; httponly
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

requires authentication

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/users/1/link/aperiam';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
        'json' => [
            'title' => '"Link Title"',
            'tag_id' => 1,
            'image' => '"href or image data"',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request POST \
    "https://api.metapic.com/users/1/link/aperiam" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}" \
    --data "{
    \"title\": \"\\\"Link Title\\\"\",
    \"tag_id\": 1,
    \"image\": \"\\\"href or image data\\\"\"
}"
const url = new URL(
    "https://api.metapic.com/users/1/link/aperiam"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

let body = {
    "title": "\"Link Title\"",
    "tag_id": 1,
    "image": "\"href or image data\""
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "id": 2,
    "title": "",
    "tag_id": 123,
    "link_list_id": 1,
    "link_list_image_id": 1,
    "position": 1,
    "created_at": "2022-03-30T09:32:22.000000Z",
    "updated_at": "2022-03-30T09:32:22.000000Z",
    "link_list": {
        "id": 1,
        "name": "username",
        "user_id": 1,
        "view_type": 1,
        "color": 1,
        "created_at": "2022-03-30T09:32:22.000000Z",
        "updated_at": "2022-03-30T09:32:22.000000Z"
    }
}
 

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 200
x-ratelimit-remaining: 185
access-control-allow-origin: *
set-cookie: laravel_session=eyJpdiI6IkFkdUQ2Y0xpQnRnVmhnZm16ck50aXc9PSIsInZhbHVlIjoibS9RQlJxaVR4dkJPMXN4Lzl2MEtSODh0Yi9CRC9pQlRybVVRNzdEWWZodXNkL1JINndza2hwR1M2TUs2OXA3djR6Q21zOHoyUHp6Vk9Id3NENGVPZlFZSk40U3dCSlZFc2d5K1RZUkVBKzQ5T2N2SG1oejFxNU44aDArVnZBaGkiLCJtYWMiOiJjOTAxYjk0OTg0NDYyYWE5Yjc3MjVhYTBmNzY1OTlhOTEyZGE0M2EyYTEyNjA0NjYzNzFhZWQ0ZDcyMDBiYWM0IiwidGFnIjoiIn0%3D; expires=Thu, 28 Mar 2024 14:16:45 GMT; Max-Age=7200; path=/; httponly
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

requires authentication

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/users/1/link/qui';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request DELETE \
    "https://api.metapic.com/users/1/link/qui" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}"
const url = new URL(
    "https://api.metapic.com/users/1/link/qui"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):


{
    "id": 2,
    "title": "",
    "tag_id": 123,
    "link_list_id": 1,
    "link_list_image_id": 1,
    "position": 1,
    "created_at": "2022-03-30T09:32:22.000000Z",
    "updated_at": "2022-03-30T09:32:22.000000Z",
    "link_list": {
        "id": 1,
        "name": "username",
        "user_id": 1,
        "view_type": 1,
        "color": 1,
        "created_at": "2022-03-30T09:32:22.000000Z",
        "updated_at": "2022-03-30T09:32:22.000000Z"
    }
}
 

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 200
x-ratelimit-remaining: 184
access-control-allow-origin: *
set-cookie: laravel_session=eyJpdiI6IjY1djdBZ2gyK3pMdi8xUXNmUUswT2c9PSIsInZhbHVlIjoiZ05uTDJSWldsQm9aRUVzaGYzTUtzVU1wTGdDN1czeWdmQ1BrQXUzM1NCN0RKTndwTFNXQ2ZjcFhZZFM2dmg1dzZ3MnBFMHpTZDhNb281aWwzN1VNa1pFK0xXbCtJOWhPeFU1MGQvcWVFTXUxUnBpZjJIZXlzbXo5L3dmU3Z0VmMiLCJtYWMiOiJiMTNiZGEzODEwZWNkOWNkMzBiMTE2ZWFiMzFlYzU1MjVmOTI2M2RjOTliNGY4YWVjYWU5MzFlYjYzNmEwOWE4IiwidGFnIjoiIn0%3D; expires=Thu, 28 Mar 2024 14:16:46 GMT; Max-Age=7200; path=/; httponly
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

requires authentication

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/users/1/change-links-positions';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
        'json' => [
            'links' => [
                'qui',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request POST \
    "https://api.metapic.com/users/1/change-links-positions" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}" \
    --data "{
    \"links\": [
        \"qui\"
    ]
}"
const url = new URL(
    "https://api.metapic.com/users/1/change-links-positions"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

let body = {
    "links": [
        "qui"
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


[
    {
        "id": 3,
        "title": "",
        "tag_id": 123,
        "link_list_id": 1,
        "link_list_image_id": null,
        "position": 1,
        "created_at": "2022-03-30T09:33:44.000000Z",
        "updated_at": "2022-03-30T09:33:44.000000Z"
    },
    {
        "id": 4,
        "title": "",
        "tag_id": 123,
        "link_list_id": 1,
        "link_list_image_id": null,
        "position": 2,
        "created_at": "2022-03-30T09:37:50.000000Z",
        "updated_at": "2022-03-30T09:37:50.000000Z"
    },
    {
        "id": 5,
        "title": "",
        "tag_id": 123,
        "link_list_id": 1,
        "link_list_image_id": null,
        "position": 4,
        "created_at": "2022-03-30T09:38:10.000000Z",
        "updated_at": "2022-03-30T09:38:10.000000Z"
    },
    {
        "id": 6,
        "title": "",
        "tag_id": 123,
        "link_list_id": 1,
        "link_list_image_id": null,
        "position": 3,
        "created_at": "2022-03-30T09:39:25.000000Z",
        "updated_at": "2022-03-30T09:39:25.000000Z"
    },
    {
        "id": 7,
        "title": "",
        "tag_id": 123,
        "link_list_id": 1,
        "link_list_image_id": 1,
        "position": 6,
        "created_at": "2022-03-30T09:40:39.000000Z",
        "updated_at": "2022-03-30T09:40:53.000000Z"
    },
    {
        "id": 8,
        "title": "",
        "tag_id": 123,
        "link_list_id": 1,
        "link_list_image_id": null,
        "position": 5,
        "created_at": "2022-03-30T09:50:12.000000Z",
        "updated_at": "2022-03-30T09:50:12.000000Z"
    },
    {
        "id": 9,
        "title": "",
        "tag_id": 123,
        "link_list_id": 1,
        "link_list_image_id": null,
        "position": 7,
        "created_at": "2022-03-30T09:51:13.000000Z",
        "updated_at": "2022-03-30T09:51:13.000000Z"
    },
    {
        "id": 10,
        "title": "",
        "tag_id": 123,
        "link_list_id": 1,
        "link_list_image_id": null,
        "position": 8,
        "created_at": "2022-03-30T09:52:42.000000Z",
        "updated_at": "2022-03-30T09:52:42.000000Z"
    },
    {
        "id": 11,
        "title": "",
        "tag_id": 123,
        "link_list_id": 1,
        "link_list_image_id": 2,
        "position": 9,
        "created_at": "2022-03-30T09:55:14.000000Z",
        "updated_at": "2022-03-30T09:55:16.000000Z"
    },
    {
        "id": 12,
        "title": "",
        "tag_id": 123,
        "link_list_id": 1,
        "link_list_image_id": 3,
        "position": 10,
        "created_at": "2022-03-30T10:05:32.000000Z",
        "updated_at": "2022-03-30T10:05:33.000000Z"
    }
]
 

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 200
x-ratelimit-remaining: 183
access-control-allow-origin: *
set-cookie: laravel_session=eyJpdiI6IjFnN2JGVjdEMFNuTVVBVk1pSnQ1V2c9PSIsInZhbHVlIjoia1NoK2s4TkhUMVNQQThNWkh1R1FGcjduSWllWlNNMGNKQXF5UWUvTGgzaHFFV0NwVVY4WE5WazRlU3FrMHgxVkJqWmhSeHpPdFAzSVFXZlNxdEFVN2h4QjdXVXZieDZMUXpRWkV2L2U2WTN6OXlycCtmbmdBVmVDdllhbUluYWEiLCJtYWMiOiI2Y2RjNzE5OWQ3OWJlOTc4ZmZmYTYyZjVhMzdkMzk4MTlkYjEyNDZlNjBkZTIxNGY2YjAzYzRmZjRhNWZjYjZhIiwidGFnIjoiIn0%3D; expires=Thu, 28 Mar 2024 14:16:47 GMT; Max-Age=7200; path=/; httponly
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

requires authentication

Get deeplink info with og image

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/users/1/link-list-deep-link';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
        'json' => [
            'url' => 'https://www.aimn.com/products/argyle-knit-sweater',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request POST \
    "https://api.metapic.com/users/1/link-list-deep-link" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}" \
    --data "{
    \"url\": \"https:\\/\\/www.aimn.com\\/products\\/argyle-knit-sweater\"
}"
const url = new URL(
    "https://api.metapic.com/users/1/link-list-deep-link"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

let body = {
    "url": "https:\/\/www.aimn.com\/products\/argyle-knit-sweater"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "id": 2332673,
    "x": null,
    "y": null,
    "width": 0.1,
    "height": 0.1,
    "link": "https://clk.tradedoubler.com/click?p(297880)a(2978484)url(https%3A%2F%2Fwww.aimn.com%2Fproducts%2Fargyle-knit-sweater)",
    "image_id": null,
    "text": "Aimn",
    "type": "tradedoubler_SE",
    "meta_info": "{\"original_url\":\"https:\\/\\/www.aimn.com\\/products\\/argyle-knit-sweater\"}",
    "user_id": 60011,
    "created_at": "2022-04-27 00:23:34",
    "updated_at": "2022-04-27 00:23:34",
    "product_id": null,
    "out_of_stock": 0,
    "deleted_at": null,
    "ip": "127.0.0.1",
    "tier_pricing_id": null,
    "created_as": "autoTagging",
    "affiliate_link": "https://clk.tradedoubler.com/click?p(297880)a(2978484)url(https%3A%2F%2Fwww.aimn.com%2Fproducts%2Fargyle-knit-sweater)",
    "original_url": "https://www.aimn.com/products/argyle-knit-sweater",
    "store_id": 5319,
    "store": "Aimn",
    "image_url": "http://cdn.shopify.com/s/files/1/0090/5222/5616/products/63dab4030ecb1215e534f4c6891e5f8417783f0f4d4321d5d9105327022f2885.jpg?v=1649594101",
    "mtpc_url": "https://c.mtpc.se/tags/link/2332673"
}
 

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 200
x-ratelimit-remaining: 182
access-control-allow-origin: *
set-cookie: laravel_session=eyJpdiI6Ik1JQjdUK2R5ZUppVlNJeHJGSFRSelE9PSIsInZhbHVlIjoiblhnVGdTS0U5cGdpVmUrMEJnbjRBeG5Md3NzSEpndS9jRWRHQS9oS1EwTUpwd0xZU0ErRE1qQ2tndGFhanlJTmlRQWlzczFldjNwbGxNVzIxT2NGNGdZT3pzTE5rRGUzTjB4TW9zenZFREJUaFdYZ09KUmZYZ3FLSzcyRlA0S3IiLCJtYWMiOiJmZWFjNjRiNzgwMjZhOGJkY2RlMjIyYmVlODJkOTlkZTNmMTJiODE4NTViMzBkYzEzNDFhNzkyMjdhNjM2NDVlIiwidGFnIjoiIn0%3D; expires=Thu, 28 Mar 2024 14:16:48 GMT; Max-Age=7200; path=/; httponly
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

Offers

Get offer

requires authentication

Return offer details.

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/v2/offers/23';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
    --get "https://api.metapic.com/v2/offers/23" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}"
const url = new URL(
    "https://api.metapic.com/v2/offers/23"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 200
x-ratelimit-remaining: 193
access-control-allow-origin: *
set-cookie: laravel_session=eyJpdiI6Im5ndE5XS3FFZWxrVGVBS2c4TGRBYVE9PSIsInZhbHVlIjoiczAyVTErVzVnRzhJR0dRalljUTZ1aElxMXZXbFRmS2wzb2RINHJYVURKb1ZxZW1xeUtXenhMcm1DV1RJRFJRYVhpNTJCY0JISVJQQVRXZjM4SmFiUFcwRGdKcDIrVzFLd0lUcXJ4WENEdXViNXZ6Z1RiTzJBNVBEOWlzZGNzdFUiLCJtYWMiOiJiYzQ5MGI3YWQ3MjZiZDdmNGI4MjdkZWY3NGIwMGI0MTkzOTAzN2MxOTkwOGQxNTI4MjJjOTEwNzI0NmQyZDY1IiwidGFnIjoiIn0%3D; expires=Thu, 28 Mar 2024 14:15:35 GMT; Max-Age=7200; path=/; httponly
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

Request      

GET v2/offers/{offer_id}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

URL Parameters

offer_id   integer   

The ID of the offer. Example: 23

Upload Offer Image (v2)

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/v2/offers/23/uploads';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
        'json' => [
            'default' => 'image.png',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request POST \
    "https://api.metapic.com/v2/offers/23/uploads" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}" \
    --data "{
    \"default\": \"image.png\"
}"
const url = new URL(
    "https://api.metapic.com/v2/offers/23/uploads"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

let body = {
    "default": "image.png"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 37
access-control-allow-origin: *
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

Request      

POST v2/offers/{offer_id}/uploads

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

URL Parameters

offer_id   integer   

The ID of the offer. Example: 23

Body Parameters

default   string   

Offer image. Must not be greater than 10240 characters. Example: image.png

Get offer

requires authentication

Return offer details.

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/v2/offer-by-token/non';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
    --get "https://api.metapic.com/v2/offer-by-token/non" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}"
const url = new URL(
    "https://api.metapic.com/v2/offer-by-token/non"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
set-cookie: laravel_session=eyJpdiI6ImtNVlNWcktFWkt3VTkzdTZzVVVwdHc9PSIsInZhbHVlIjoiOC9xOWR0Vy8rZmlZYzBRY3VyWmE4MndMcEFBVTcyU1BSeDV1SjBzQWU4TXBXa2FtQ21NL3VnQkliYkVFdklxak16TldlM3ZCOHJ0RUIvWFhPdENJYVpOQkc2Q0h0UmNtTmdCUVV6cmpBY2hhRS93eW1VN3h5MmxQUXZ1ek1HU3ciLCJtYWMiOiIzNDVhOWIxOGQ0ODEyZTcxNmY3NDdjNGZhMDc1ODVjNTZmZWViZjQ5ZmQwZTMxZDUzNWFhNTQ2ZTQ4OGUyMmYyIiwidGFnIjoiIn0%3D; expires=Thu, 28 Mar 2024 14:15:50 GMT; Max-Age=7200; path=/; httponly
 

{
    "message": "No query results for model [App\\Models\\Offer] non",
    "exception": "Symfony\\Component\\HttpKernel\\Exception\\NotFoundHttpException",
    "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php",
    "line": 487,
    "trace": [
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php",
            "line": 463,
            "function": "prepareException",
            "class": "Illuminate\\Foundation\\Exceptions\\Handler",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/app/Exceptions/Handler.php",
            "line": 56,
            "function": "render",
            "class": "Illuminate\\Foundation\\Exceptions\\Handler",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/nunomaduro/collision/src/Adapters/Laravel/ExceptionHandler.php",
            "line": 54,
            "function": "render",
            "class": "App\\Exceptions\\Handler",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php",
            "line": 51,
            "function": "render",
            "class": "NunoMaduro\\Collision\\Adapters\\Laravel\\ExceptionHandler",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 188,
            "function": "handleException",
            "class": "Illuminate\\Routing\\Pipeline",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/app/Http/Middleware/VerifyCsrfToken.php",
            "line": 29,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 183,
            "function": "handle",
            "class": "App\\Http\\Middleware\\VerifyCsrfToken",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php",
            "line": 49,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 183,
            "function": "handle",
            "class": "Illuminate\\View\\Middleware\\ShareErrorsFromSession",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php",
            "line": 121,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php",
            "line": 64,
            "function": "handleStatefulRequest",
            "class": "Illuminate\\Session\\Middleware\\StartSession",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 183,
            "function": "handle",
            "class": "Illuminate\\Session\\Middleware\\StartSession",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php",
            "line": 37,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 183,
            "function": "handle",
            "class": "Illuminate\\Cookie\\Middleware\\AddQueuedCookiesToResponse",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php",
            "line": 67,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 183,
            "function": "handle",
            "class": "Illuminate\\Cookie\\Middleware\\EncryptCookies",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 119,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
            "line": 805,
            "function": "then",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
            "line": 784,
            "function": "runRouteWithinStack",
            "class": "Illuminate\\Routing\\Router",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
            "line": 748,
            "function": "runRoute",
            "class": "Illuminate\\Routing\\Router",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
            "line": 737,
            "function": "dispatchToRoute",
            "class": "Illuminate\\Routing\\Router",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
            "line": 200,
            "function": "dispatch",
            "class": "Illuminate\\Routing\\Router",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 144,
            "function": "Illuminate\\Foundation\\Http\\{closure}",
            "class": "Illuminate\\Foundation\\Http\\Kernel",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php",
            "line": 62,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 183,
            "function": "handle",
            "class": "Illuminate\\Http\\Middleware\\HandleCors",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
            "line": 21,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php",
            "line": 40,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 183,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Middleware\\TrimStrings",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php",
            "line": 27,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 183,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php",
            "line": 99,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 183,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php",
            "line": 39,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 183,
            "function": "handle",
            "class": "Illuminate\\Http\\Middleware\\TrustProxies",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 119,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
            "line": 175,
            "function": "then",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
            "line": 144,
            "function": "sendRequestThroughRouter",
            "class": "Illuminate\\Foundation\\Http\\Kernel",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/knuckleswtf/scribe/src/Extracting/Strategies/Responses/ResponseCalls.php",
            "line": 300,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Kernel",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/knuckleswtf/scribe/src/Extracting/Strategies/Responses/ResponseCalls.php",
            "line": 288,
            "function": "callLaravelOrLumenRoute",
            "class": "Knuckles\\Scribe\\Extracting\\Strategies\\Responses\\ResponseCalls",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/knuckleswtf/scribe/src/Extracting/Strategies/Responses/ResponseCalls.php",
            "line": 91,
            "function": "makeApiCall",
            "class": "Knuckles\\Scribe\\Extracting\\Strategies\\Responses\\ResponseCalls",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/knuckleswtf/scribe/src/Extracting/Strategies/Responses/ResponseCalls.php",
            "line": 44,
            "function": "makeResponseCall",
            "class": "Knuckles\\Scribe\\Extracting\\Strategies\\Responses\\ResponseCalls",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/knuckleswtf/scribe/src/Extracting/Strategies/Responses/ResponseCalls.php",
            "line": 35,
            "function": "makeResponseCallIfConditionsPass",
            "class": "Knuckles\\Scribe\\Extracting\\Strategies\\Responses\\ResponseCalls",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/knuckleswtf/scribe/src/Extracting/Extractor.php",
            "line": 236,
            "function": "__invoke",
            "class": "Knuckles\\Scribe\\Extracting\\Strategies\\Responses\\ResponseCalls",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/knuckleswtf/scribe/src/Extracting/Extractor.php",
            "line": 163,
            "function": "iterateThroughStrategies",
            "class": "Knuckles\\Scribe\\Extracting\\Extractor",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/knuckleswtf/scribe/src/Extracting/Extractor.php",
            "line": 95,
            "function": "fetchResponses",
            "class": "Knuckles\\Scribe\\Extracting\\Extractor",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/knuckleswtf/scribe/src/GroupedEndpoints/GroupedEndpointsFromApp.php",
            "line": 125,
            "function": "processRoute",
            "class": "Knuckles\\Scribe\\Extracting\\Extractor",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/knuckleswtf/scribe/src/GroupedEndpoints/GroupedEndpointsFromApp.php",
            "line": 72,
            "function": "extractEndpointsInfoFromLaravelApp",
            "class": "Knuckles\\Scribe\\GroupedEndpoints\\GroupedEndpointsFromApp",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/knuckleswtf/scribe/src/GroupedEndpoints/GroupedEndpointsFromApp.php",
            "line": 50,
            "function": "extractEndpointsInfoAndWriteToDisk",
            "class": "Knuckles\\Scribe\\GroupedEndpoints\\GroupedEndpointsFromApp",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/app/Console/Commands/Documentation/GenerateDocumentation.php",
            "line": 66,
            "function": "get",
            "class": "Knuckles\\Scribe\\GroupedEndpoints\\GroupedEndpointsFromApp",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/app/Console/Commands/Documentation/GenerateDocumentation.php",
            "line": 50,
            "function": "init",
            "class": "App\\Console\\Commands\\Documentation\\GenerateDocumentation",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php",
            "line": 36,
            "function": "handle",
            "class": "App\\Console\\Commands\\Documentation\\GenerateDocumentation",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Container/Util.php",
            "line": 41,
            "function": "Illuminate\\Container\\{closure}",
            "class": "Illuminate\\Container\\BoundMethod",
            "type": "::"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php",
            "line": 93,
            "function": "unwrapIfClosure",
            "class": "Illuminate\\Container\\Util",
            "type": "::"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php",
            "line": 35,
            "function": "callBoundMethod",
            "class": "Illuminate\\Container\\BoundMethod",
            "type": "::"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Container/Container.php",
            "line": 662,
            "function": "call",
            "class": "Illuminate\\Container\\BoundMethod",
            "type": "::"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Console/Command.php",
            "line": 211,
            "function": "call",
            "class": "Illuminate\\Container\\Container",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/symfony/console/Command/Command.php",
            "line": 326,
            "function": "execute",
            "class": "Illuminate\\Console\\Command",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Console/Command.php",
            "line": 180,
            "function": "run",
            "class": "Symfony\\Component\\Console\\Command\\Command",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/symfony/console/Application.php",
            "line": 1096,
            "function": "run",
            "class": "Illuminate\\Console\\Command",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/symfony/console/Application.php",
            "line": 324,
            "function": "doRunCommand",
            "class": "Symfony\\Component\\Console\\Application",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/symfony/console/Application.php",
            "line": 175,
            "function": "doRun",
            "class": "Symfony\\Component\\Console\\Application",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php",
            "line": 201,
            "function": "run",
            "class": "Symfony\\Component\\Console\\Application",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/artisan",
            "line": 35,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Console\\Kernel",
            "type": "->"
        }
    ]
}
 

Request      

GET v2/offer-by-token/{offer_token}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

URL Parameters

offer_token   string   

Example: non

Mark user as having joined the campaign

requires authentication

This can only be performed by the user themselves.

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/v2/offer-by-token/et/users/1/join';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request POST \
    "https://api.metapic.com/v2/offer-by-token/et/users/1/join" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}"
const url = new URL(
    "https://api.metapic.com/v2/offer-by-token/et/users/1/join"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
set-cookie: laravel_session=eyJpdiI6IjcvVG1YVEV1WG5xL3hKOFFmQytjN2c9PSIsInZhbHVlIjoidHJFd1ZaYUdDZy9uVGV2NGZHczdOUGFmR1BKeEU1WUtEVE9RaFljQUxMT0IxNkpiOTlLTUxZVmJnb05pV2I2V1M4aG82c0FIMi9rajRpNE41cjhXRnJiN2NxeXVFVzM5Z2ZicTI4YVJmc1FuUXoydTJVUXdVUlBxTTl2WjY3akciLCJtYWMiOiJkMDdkNzdlNzJlMzY4YTFlNDJkYzI2NzIzNmQ1YzFlN2NlOTdmYmVmZWVjMzc4Y2VlYjEzZWQ4MjRiYjYwZDczIiwidGFnIjoiIn0%3D; expires=Thu, 28 Mar 2024 14:16:25 GMT; Max-Age=7200; path=/; httponly
 

{
    "message": "No query results for model [App\\Models\\Offer] et",
    "exception": "Symfony\\Component\\HttpKernel\\Exception\\NotFoundHttpException",
    "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php",
    "line": 487,
    "trace": [
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php",
            "line": 463,
            "function": "prepareException",
            "class": "Illuminate\\Foundation\\Exceptions\\Handler",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/app/Exceptions/Handler.php",
            "line": 56,
            "function": "render",
            "class": "Illuminate\\Foundation\\Exceptions\\Handler",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/nunomaduro/collision/src/Adapters/Laravel/ExceptionHandler.php",
            "line": 54,
            "function": "render",
            "class": "App\\Exceptions\\Handler",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php",
            "line": 51,
            "function": "render",
            "class": "NunoMaduro\\Collision\\Adapters\\Laravel\\ExceptionHandler",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 188,
            "function": "handleException",
            "class": "Illuminate\\Routing\\Pipeline",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/app/Http/Middleware/VerifyCsrfToken.php",
            "line": 29,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 183,
            "function": "handle",
            "class": "App\\Http\\Middleware\\VerifyCsrfToken",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php",
            "line": 49,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 183,
            "function": "handle",
            "class": "Illuminate\\View\\Middleware\\ShareErrorsFromSession",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php",
            "line": 121,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php",
            "line": 64,
            "function": "handleStatefulRequest",
            "class": "Illuminate\\Session\\Middleware\\StartSession",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 183,
            "function": "handle",
            "class": "Illuminate\\Session\\Middleware\\StartSession",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php",
            "line": 37,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 183,
            "function": "handle",
            "class": "Illuminate\\Cookie\\Middleware\\AddQueuedCookiesToResponse",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php",
            "line": 67,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 183,
            "function": "handle",
            "class": "Illuminate\\Cookie\\Middleware\\EncryptCookies",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 119,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
            "line": 805,
            "function": "then",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
            "line": 784,
            "function": "runRouteWithinStack",
            "class": "Illuminate\\Routing\\Router",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
            "line": 748,
            "function": "runRoute",
            "class": "Illuminate\\Routing\\Router",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
            "line": 737,
            "function": "dispatchToRoute",
            "class": "Illuminate\\Routing\\Router",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
            "line": 200,
            "function": "dispatch",
            "class": "Illuminate\\Routing\\Router",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 144,
            "function": "Illuminate\\Foundation\\Http\\{closure}",
            "class": "Illuminate\\Foundation\\Http\\Kernel",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php",
            "line": 62,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 183,
            "function": "handle",
            "class": "Illuminate\\Http\\Middleware\\HandleCors",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
            "line": 21,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php",
            "line": 40,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 183,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Middleware\\TrimStrings",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php",
            "line": 27,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 183,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php",
            "line": 99,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 183,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php",
            "line": 39,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 183,
            "function": "handle",
            "class": "Illuminate\\Http\\Middleware\\TrustProxies",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 119,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
            "line": 175,
            "function": "then",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
            "line": 144,
            "function": "sendRequestThroughRouter",
            "class": "Illuminate\\Foundation\\Http\\Kernel",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/knuckleswtf/scribe/src/Extracting/Strategies/Responses/ResponseCalls.php",
            "line": 300,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Kernel",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/knuckleswtf/scribe/src/Extracting/Strategies/Responses/ResponseCalls.php",
            "line": 288,
            "function": "callLaravelOrLumenRoute",
            "class": "Knuckles\\Scribe\\Extracting\\Strategies\\Responses\\ResponseCalls",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/knuckleswtf/scribe/src/Extracting/Strategies/Responses/ResponseCalls.php",
            "line": 91,
            "function": "makeApiCall",
            "class": "Knuckles\\Scribe\\Extracting\\Strategies\\Responses\\ResponseCalls",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/knuckleswtf/scribe/src/Extracting/Strategies/Responses/ResponseCalls.php",
            "line": 44,
            "function": "makeResponseCall",
            "class": "Knuckles\\Scribe\\Extracting\\Strategies\\Responses\\ResponseCalls",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/knuckleswtf/scribe/src/Extracting/Strategies/Responses/ResponseCalls.php",
            "line": 35,
            "function": "makeResponseCallIfConditionsPass",
            "class": "Knuckles\\Scribe\\Extracting\\Strategies\\Responses\\ResponseCalls",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/knuckleswtf/scribe/src/Extracting/Extractor.php",
            "line": 236,
            "function": "__invoke",
            "class": "Knuckles\\Scribe\\Extracting\\Strategies\\Responses\\ResponseCalls",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/knuckleswtf/scribe/src/Extracting/Extractor.php",
            "line": 163,
            "function": "iterateThroughStrategies",
            "class": "Knuckles\\Scribe\\Extracting\\Extractor",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/knuckleswtf/scribe/src/Extracting/Extractor.php",
            "line": 95,
            "function": "fetchResponses",
            "class": "Knuckles\\Scribe\\Extracting\\Extractor",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/knuckleswtf/scribe/src/GroupedEndpoints/GroupedEndpointsFromApp.php",
            "line": 125,
            "function": "processRoute",
            "class": "Knuckles\\Scribe\\Extracting\\Extractor",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/knuckleswtf/scribe/src/GroupedEndpoints/GroupedEndpointsFromApp.php",
            "line": 72,
            "function": "extractEndpointsInfoFromLaravelApp",
            "class": "Knuckles\\Scribe\\GroupedEndpoints\\GroupedEndpointsFromApp",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/knuckleswtf/scribe/src/GroupedEndpoints/GroupedEndpointsFromApp.php",
            "line": 50,
            "function": "extractEndpointsInfoAndWriteToDisk",
            "class": "Knuckles\\Scribe\\GroupedEndpoints\\GroupedEndpointsFromApp",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/app/Console/Commands/Documentation/GenerateDocumentation.php",
            "line": 66,
            "function": "get",
            "class": "Knuckles\\Scribe\\GroupedEndpoints\\GroupedEndpointsFromApp",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/app/Console/Commands/Documentation/GenerateDocumentation.php",
            "line": 50,
            "function": "init",
            "class": "App\\Console\\Commands\\Documentation\\GenerateDocumentation",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php",
            "line": 36,
            "function": "handle",
            "class": "App\\Console\\Commands\\Documentation\\GenerateDocumentation",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Container/Util.php",
            "line": 41,
            "function": "Illuminate\\Container\\{closure}",
            "class": "Illuminate\\Container\\BoundMethod",
            "type": "::"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php",
            "line": 93,
            "function": "unwrapIfClosure",
            "class": "Illuminate\\Container\\Util",
            "type": "::"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php",
            "line": 35,
            "function": "callBoundMethod",
            "class": "Illuminate\\Container\\BoundMethod",
            "type": "::"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Container/Container.php",
            "line": 662,
            "function": "call",
            "class": "Illuminate\\Container\\BoundMethod",
            "type": "::"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Console/Command.php",
            "line": 211,
            "function": "call",
            "class": "Illuminate\\Container\\Container",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/symfony/console/Command/Command.php",
            "line": 326,
            "function": "execute",
            "class": "Illuminate\\Console\\Command",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Console/Command.php",
            "line": 180,
            "function": "run",
            "class": "Symfony\\Component\\Console\\Command\\Command",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/symfony/console/Application.php",
            "line": 1096,
            "function": "run",
            "class": "Illuminate\\Console\\Command",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/symfony/console/Application.php",
            "line": 324,
            "function": "doRunCommand",
            "class": "Symfony\\Component\\Console\\Application",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/symfony/console/Application.php",
            "line": 175,
            "function": "doRun",
            "class": "Symfony\\Component\\Console\\Application",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php",
            "line": 201,
            "function": "run",
            "class": "Symfony\\Component\\Console\\Application",
            "type": "->"
        },
        {
            "file": "/tmp/build_e579d9f4/artisan",
            "line": 35,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Console\\Kernel",
            "type": "->"
        }
    ]
}
 

Request      

POST v2/offer-by-token/{offer_token}/users/{user_id}/join

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

URL Parameters

offer_token   string   

Example: et

user_id   integer   

The ID of the user. Example: 1

Get Offers

requires authentication

Get Influencer Offers List

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/users/123/offers';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
        'query' => [
            'status' => 'open',
            'name' => 'testOffer',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
    --get "https://api.metapic.com/users/123/offers?status=open&name=testOffer" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}"
const url = new URL(
    "https://api.metapic.com/users/123/offers"
);

const params = {
    "status": "open",
    "name": "testOffer",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "current_page": 1,
    "data": [
        {
            "id": "{offerId}",
            "store_id": "{storeId}",
            "name": "{offerName}",
            "from": null,
            "to": null,
            "cpc": null,
            "instagram_cpc": 715,
            "invoice_cpc": null,
            "invoice_instagram_cpc": null,
            "invoice_instagram_cpa": null,
            "invoice_cpa": null,
            "cpa": null,
            "instagram_cpa": null,
            "offer_campaign_text": null,
            "offer_campaign_title": null,
            "status": "accepted",
            "feed_name": "{storeName}",
            "logo_url": "{storeLogoUrl}",
            "offer_influencer_text": null,
            "todo": [
                {
                    "key": "First task",
                    "Value": false
                },
                {
                    "key": "Second task",
                    "Value": false
                }
            ],
            "traffic_sources_costs": [
                {
                    "id": 9333,
                    "offer_id": "{offerId}",
                    "source": 0,
                    "cpc": null,
                    "invoice_cpc": null,
                    "cpa": 0,
                    "invoice_cpa": null,
                    "user_revenue": null,
                    "client_revenue": null,
                    "created_at": "2023-07-19 13:13:03",
                    "updated_at": "2023-07-19 13:13:03"
                },
                {
                    "id": 9334,
                    "offer_id": "{offerId}",
                    "source": 1,
                    "cpc": 715,
                    "invoice_cpc": null,
                    "cpa": 0,
                    "invoice_cpa": null,
                    "user_revenue": null,
                    "client_revenue": null,
                    "created_at": "2023-07-19 13:13:04",
                    "updated_at": "2023-07-19 13:13:04"
                }
            ]
        }
    ],
    "first_page_url": "http://metapic-api.loc/users/{userId}/offers?page=1",
    "from": 1,
    "last_page": 1,
    "last_page_url": "http://metapic-api.loc/users/{userId}/offers?page=1",
    "links": [
        {
            "url": null,
            "label": "&laquo; Previous",
            "active": false
        },
        {
            "url": "http://metapic-api.loc/users/{userId}/offers?page=1",
            "label": "1",
            "active": true
        },
        {
            "url": null,
            "label": "Next &raquo;",
            "active": false
        }
    ],
    "next_page_url": null,
    "path": "http://metapic-api.loc/users/{userId}/offers",
    "per_page": 15,
    "prev_page_url": null,
    "to": 1,
    "total": 1
}
 

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 200
x-ratelimit-remaining: 200
access-control-allow-origin: *
set-cookie: laravel_session=eyJpdiI6InJzaTdaNjU4WVpqRi9ZQ1o0NEpDN1E9PSIsInZhbHVlIjoiek1UN00xRm5aWEtwTVcvc3JFR1dBc1pwQUhVN3FHeGNVMW82WWxWZ0pFRDB0NHdXWGFjdnBZYlQvUjNlWE56OHZzSm16VVFCM1hKSUNLMzIvM01Dc2xOM2lsSWp1OFJIRGNqdTNBSE8xdXhqaUxOSkZsVzNaRnJaTG5pSmNyYSsiLCJtYWMiOiI3NDhiMDc4M2IwZmMwMmExNDNlZTdhM2M5NmI3M2QwODcyMzgyZjEwOGYwOGExNjQwY2Y2YWYzZGIwY2UwZDIzIiwidGFnIjoiIn0%3D; expires=Thu, 28 Mar 2024 14:16:27 GMT; Max-Age=7200; path=/; httponly
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

Request      

GET users/{userId}/offers

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

URL Parameters

userId   integer   

The User ID. Example: 123

Query Parameters

status   string  optional  

Offer status. Example: open

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

Offer name. Must not be greater than 128 characters. Example: testOffer

Apply Offer

requires authentication

Apply offer by Influencer

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/users/123/offers/123/apply';
$response = $client->patch(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request PATCH \
    "https://api.metapic.com/users/123/offers/123/apply" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}"
const url = new URL(
    "https://api.metapic.com/users/123/offers/123/apply"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

fetch(url, {
    method: "PATCH",
    headers,
}).then(response => response.json());

Example response (200):


{
    "id": "{id}",
    "offer_id": "{offerId}",
    "user_id": "{userId}",
    "clicks": 0,
    "status": "accepted",
    "created_at": "2021-05-25 13:02:06",
    "updated_at": "2021-05-27 11:21:23"
}
 

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 200
x-ratelimit-remaining: 200
access-control-allow-origin: *
set-cookie: laravel_session=eyJpdiI6IjVxcVFaZTRVNFAybzhQNjFTNVZaa0E9PSIsInZhbHVlIjoib081eUdabG5WRFdXMCt1SGhhenRUZWhaUWpnV2l0czg0NzB1SjRsTjRKMUUzUWVORWZJVlRNaDZ3MFpibWFadmdhS05ETlIrVC9FVndxL1pVb3NleXpDbFEvNFJhZVZ0aktWNEREbzFDUXEwblFyR3o0VWNIR1h0QnhMbEc4TjMiLCJtYWMiOiIyZTQwYWYwYTMwMDU1NGE4YTQ5MWExYTMwN2RjM2U2OTllODRmYzAwNDFlOTJjZjJkNjcyOWI0MjExNzM1Y2M0IiwidGFnIjoiIn0%3D; expires=Thu, 28 Mar 2024 14:16:28 GMT; Max-Age=7200; path=/; httponly
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

Request      

PATCH users/{userId}/offers/{offerId}/apply

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

URL Parameters

userId   integer   

The User ID. Example: 123

offerId   integer   

The Offer ID. Example: 123

Deny Offer

requires authentication

Deny offer by Influencer

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/users/123/offers/123/deny';
$response = $client->patch(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request PATCH \
    "https://api.metapic.com/users/123/offers/123/deny" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}"
const url = new URL(
    "https://api.metapic.com/users/123/offers/123/deny"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

fetch(url, {
    method: "PATCH",
    headers,
}).then(response => response.json());

Example response (200):


{
    "id": "{id}",
    "offer_id": "{offerId}",
    "user_id": "{userId}",
    "clicks": 0,
    "status": "accepted",
    "created_at": "2021-05-25 13:02:06",
    "updated_at": "2021-05-27 11:21:23"
}
 

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 200
x-ratelimit-remaining: 199
access-control-allow-origin: *
set-cookie: laravel_session=eyJpdiI6IkQxUzVhbUlzbC82SkNvZDYvbzV1SXc9PSIsInZhbHVlIjoia1FHQ3NrdTY0RjVSVjI3NVBZQTJ5QWhjbldmcW1NKzhCVEIxYWRKRnlxQ1l6cGdhZEppRGNsNGZsUmFzWHlJVTJMY3cyWmVvd3dvVHpSbGczOWhrY2lZaUM2SWlqMmVhTkNuN0VHMW12N0loODZQV2tmZ21GSmFlRXdkbVBta0giLCJtYWMiOiIwNWMxYjM3YjUwNTYwMTRmNzAxZjA0ODdhYTZkY2YyOGZkOWM4OTEzZTJjODhkZmRhOWJmN2M2NjNjZDNlOTBiIiwidGFnIjoiIn0%3D; expires=Thu, 28 Mar 2024 14:16:29 GMT; Max-Age=7200; path=/; httponly
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

Request      

PATCH users/{userId}/offers/{offerId}/deny

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

URL Parameters

userId   integer   

The User ID. Example: 123

offerId   integer   

The Offer ID. Example: 123

Revert Offer

requires authentication

Revert Offer to open state by influencer

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/users/123/offers/123/revert';
$response = $client->patch(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request PATCH \
    "https://api.metapic.com/users/123/offers/123/revert" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}"
const url = new URL(
    "https://api.metapic.com/users/123/offers/123/revert"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

fetch(url, {
    method: "PATCH",
    headers,
}).then(response => response.json());

Example response (200):


{
    "id": "{id}",
    "offer_id": "{offerId}",
    "user_id": "{userId}",
    "clicks": 0,
    "status": "accepted",
    "created_at": "2021-05-25 13:02:06",
    "updated_at": "2021-05-27 11:21:23"
}
 

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 200
x-ratelimit-remaining: 198
access-control-allow-origin: *
set-cookie: laravel_session=eyJpdiI6IkZmaUtic2hCV0lsMTBrRXBjZ3NZTkE9PSIsInZhbHVlIjoieHE5c003NkpxblNTMm1ZRlU4K3Zpak8xLzZVeGRoeDVwR21abGhURFZSdzFhYXl4Y2plZ2J6dkZBMHora0RlV3hPcituUForM05LVDdMYWhpc1lQL3VjOHVWVHZwY1UvR3VQS2pQbmxpM0NaQzc2d3l5RzVJc1lrNE9RbGw0cm4iLCJtYWMiOiJiY2JkNDc5MGY2MzIxOTM2NWYyOTU5NzU4Nzc5MjUzNTgxZDZlYzg1NDYxMGRlY2QyMDQ1NGJiZmUwNWU4MGJkIiwidGFnIjoiIn0%3D; expires=Thu, 28 Mar 2024 14:16:30 GMT; Max-Age=7200; path=/; httponly
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

Request      

PATCH users/{userId}/offers/{offerId}/revert

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

URL Parameters

userId   integer   

The User ID. Example: 123

offerId   integer   

The Offer ID. Example: 123

Update Offer "todo"

requires authentication

Update offer "todo" by Influencer

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/users/123/offers/123/todo';
$response = $client->patch(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
        'json' => [
            'todo' => [
                'eveniet',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request PATCH \
    "https://api.metapic.com/users/123/offers/123/todo" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}" \
    --data "{
    \"todo\": [
        \"eveniet\"
    ]
}"
const url = new URL(
    "https://api.metapic.com/users/123/offers/123/todo"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

let body = {
    "todo": [
        "eveniet"
    ]
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "id": "{id}",
    "offer_id": "{offerId}",
    "user_id": "{userId}",
    "clicks": 0,
    "status": "accepted",
    "created_at": "2021-05-25 13:02:06",
    "updated_at": "2021-05-27 11:21:23"
}
 

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 200
x-ratelimit-remaining: 195
access-control-allow-origin: *
set-cookie: laravel_session=eyJpdiI6InF2TjlqelA5cWE4VEpGSnVHRHU3b0E9PSIsInZhbHVlIjoiVzV5bHc1SkdxWTc4QUsycVdINU9pSlFocVRQbC9vRGZuTTUySVl6dmE2cVJBK3ZrUTQzT0toK0RPVHRUSWRQL3V1STFhL1pTYU5jRzAzaWZsNEVGMXNGY3RiaE5oQkVQY2ZtZUlFajVTN0h3UWNiUmUrMEhmWEIxNFVwTjFRWkQiLCJtYWMiOiI5OTgxZTI4YjIyNDFlYzYwNDllMTg0YWFmZGJjZmM3MmUyNzlmMzNiZTRiNjA3NTdiMGRiYzgyZGE2MGRmN2FkIiwidGFnIjoiIn0%3D; expires=Thu, 28 Mar 2024 14:16:34 GMT; Max-Age=7200; path=/; httponly
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

Request      

PATCH users/{userId}/offers/{offerId}/todo

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

URL Parameters

userId   integer   

The User ID. Example: 123

offerId   integer   

The Offer ID. Example: 123

Body Parameters

todo   string[]   
key   string   

Example: unde

value   boolean   

Example: false

OneTimeEarnings

Create One Time Earning

requires authentication

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/admin/one-time-earnings';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
        'json' => [
            'user_id' => 'distinctio',
            'store_id' => 1,
            'user_earnings' => 1000,
            'invoice_amount' => 1000,
            'payment_date' => '2022-01-01',
            'comment' => '"Your one time payment"',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request POST \
    "https://api.metapic.com/admin/one-time-earnings" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}" \
    --data "{
    \"user_id\": \"distinctio\",
    \"store_id\": 1,
    \"user_earnings\": 1000,
    \"invoice_amount\": 1000,
    \"payment_date\": \"2022-01-01\",
    \"comment\": \"\\\"Your one time payment\\\"\"
}"
const url = new URL(
    "https://api.metapic.com/admin/one-time-earnings"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

let body = {
    "user_id": "distinctio",
    "store_id": 1,
    "user_earnings": 1000,
    "invoice_amount": 1000,
    "payment_date": "2022-01-01",
    "comment": "\"Your one time payment\""
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "user_id": "{userId}",
    "user_earnings": 1000,
    "payment_date": "2022-01-01",
    "comment": "your earnings",
    "updated_at": "2022-01-26 06:49:51",
    "created_at": "2022-01-26 06:49:51",
    "id": 150
}
 

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
set-cookie: laravel_session=eyJpdiI6IlF0S2hvUW5uUUQ3bG45MEtNUmNjb1E9PSIsInZhbHVlIjoicEFMc2RLVWRXQXVRR21GVW1CK3RubzF4WHBrZW9IbitvRFpLTTM2Si9GbFBSYXZTaVRvS3hxNU5sczlGY2cxOVFoMHF0MVZFcjFDTUE4eklLM2dtcmZHd3luYm9tMXhIL3pMMXp1ZXlDTk5UZEg5dkhKWTVqMTRBaStEZWxrYUUiLCJtYWMiOiIxNDhhZDM2NWE0NWU2YWNlNTU4ZWY4ZmE1NzRiOWRiMzVkYzE3Zjg0MmNlY2I5YmRkYmQ0MzBiYmRlODcxNmZhIiwidGFnIjoiIn0%3D; expires=Thu, 28 Mar 2024 14:15:50 GMT; Max-Age=7200; path=/; httponly
 

{
    "status": 403,
    "error": "forbidden"
}
 

Request      

POST admin/one-time-earnings

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

Body Parameters

user_id   string  optional  

The ID of the User This field is required when user_earnings is present. Example: distinctio

store_id   string  optional  

The ID of the Store. This field is required when invoice_amount is present. Example: 1

user_earnings   integer  optional  

User one-time earning cost. This field is required when invoice_amount is not present. Example: 1000

invoice_amount   integer  optional  

Invoice amount. This field is required when user_earnings is not present. Example: 1000

payment_date   string   

Date of one-time payment. Must be a valid date. Example: 2022-01-01

comment   string  optional  

Comment to one-time payment. Must not be greater than 255 characters. Example: "Your one time payment"

Orders

Get Pending Orders

requires authentication

Get Pending Orders by influencer

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/users/123/pending-orders';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
    --get "https://api.metapic.com/users/123/pending-orders" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}"
const url = new URL(
    "https://api.metapic.com/users/123/pending-orders"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "2020": {
        "8": [
            {
                "year": 2020,
                "month": 10,
                "store_id": "{storeId}",
                "feed_name": "CENEO",
                "user_revenue": "2.8800"
            }
        ],
        "9": [
            {
                "year": 2020,
                "month": 9,
                "store_id": "{storeId}",
                "feed_name": "CENEO",
                "user_revenue": "55.2"
            }
        ]
    }
}
 

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 200
x-ratelimit-remaining: 194
access-control-allow-origin: *
set-cookie: laravel_session=eyJpdiI6Ikg1MkVTbnAzTTlka0l5YVp1ME9TNGc9PSIsInZhbHVlIjoibmJuM2dnejZTWDk4TWJTWHZPYTAxdnh3YzJKL1RZaXdUK1lZRzJmL3g5WGhROENid3Rab2JzK2NreDJtQm54UE1SbnAxaFJ5L2NPc1hJRStXN1k4dzJUNHNkUWRRVk5rKzYrb1IvV0VqeWt1eGhjWHltRWIyLzcrUC9ISjh5cGciLCJtYWMiOiI4NGU0YTQ2MGU5YTVmZGM2NWNkN2NlMWNhNzdhNjk1ZDA5NjM5YjUwMmUyOGQwZTcyYTE4M2RmZmYyOGYyMDMyIiwidGFnIjoiIn0%3D; expires=Thu, 28 Mar 2024 14:16:35 GMT; Max-Age=7200; path=/; httponly
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

Request      

GET users/{userId}/pending-orders

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

URL Parameters

userId   integer   

The User ID. Example: 123

Product Carousel

requires authentication

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/users/123/product-carousels';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
    --get "https://api.metapic.com/users/123/product-carousels" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}"
const url = new URL(
    "https://api.metapic.com/users/123/product-carousels"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "current_page": 1,
    "data": [
        {
            "name": "Product Carousel",
            "products": [
                {
                    "name": "product 1",
                    "price": 100,
                    "link": "http://test-link.com",
                    "id": 123,
                    "tag_id": 1234,
                    "store_name": "Store"
                }
            ],
            "user_id": "{userId}",
            "updated_at": "2021-02-12 08:56:52",
            "created_at": "2021-02-12 08:56:52",
            "id": "{productCarouselId}"
        }
    ],
    "first_page_url": "http://api.metapic.com/users/{userId}/product-carousels?page=1",
    "from": 1,
    "last_page": 1,
    "last_page_url": "http://api.metapic.com/users/{userId}/product-carousels?page=3",
    "next_page_url": null,
    "path": "http://api.metapic.com/users/{userId}/product-carousels?page=1",
    "per_page": 15,
    "prev_page_url": null,
    "to": 3,
    "total": 3
}
 

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 200
x-ratelimit-remaining: 147
access-control-allow-origin: *
set-cookie: laravel_session=eyJpdiI6IlBPdmZhYkoyOUplZ25oRUtGR0lyY1E9PSIsInZhbHVlIjoiUmVqbU05OVIvcXZzUEhEUzU2OWozc2Q5bFdTODBJOGVzcjdzSHhxcm85bXpacHNmSldxQjVJbk9TWU9IanA1Y1JIRnRidEhKRHFpeW02c2oyYjZrQkcxUlhNR0VMN0RaejhxTzBnVlAyaDBYMzJEYzB4OHBxeWZPNlR6SjlXMTQiLCJtYWMiOiI0MTMwMzY4MmY3MTdkNDE4N2Y0NGQ0NjI1MGEwNWVkNTg5Yzk0ZWY2YjAwMTEyMDJjMWQ3Y2ZkNWUzYWE0NDBlIiwidGFnIjoiIn0%3D; expires=Thu, 28 Mar 2024 14:16:21 GMT; Max-Age=7200; path=/; httponly
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

Request      

GET users/{userId}/product-carousels

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

URL Parameters

userId   integer   

The ID of the User. Example: 123

requires authentication

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/users/123/product-carousels';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
        'json' => [
            'name' => '[email protected]',
            'products' => [
                'reiciendis',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request POST \
    "https://api.metapic.com/users/123/product-carousels" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}" \
    --data "{
    \"name\": \"[email protected]\",
    \"products\": [
        \"reiciendis\"
    ]
}"
const url = new URL(
    "https://api.metapic.com/users/123/product-carousels"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

let body = {
    "name": "[email protected]",
    "products": [
        "reiciendis"
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "name": "Product Carousel",
    "products": [
        {
            "name": "product 1",
            "price": 100,
            "link": "http://test-link.com",
            "id": 123,
            "tag_id": 1234,
            "store_name": "Store"
        }
    ],
    "user_id": "{userId}",
    "updated_at": "2021-02-12 08:56:52",
    "created_at": "2021-02-12 08:56:52",
    "id": "{productCarouselId}"
}
 

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 200
x-ratelimit-remaining: 146
access-control-allow-origin: *
set-cookie: laravel_session=eyJpdiI6ImtCY1NVR1ZKbE5PWitmeVNSQi80d3c9PSIsInZhbHVlIjoiN3ByMWdpelhpNXJxZjRWNmZrOFNQT0xLdVV3anFjdFlla3ZYaE1MbUNrTWpaQittVkM1Y3M3MTNZZUp6ckJnOXhFWDZpWTc4WjA4VytwNWd2UUVVZzlNR0Z3dE5DWldhRmhwTWluSENRQkNRZVkxeVZGK3lDdGo5bkwrRk0zUnMiLCJtYWMiOiI3ODkxZjkyYWVmNjczMzZjNjZlNGI2MGExOTYzODBlZWY3NGRkMWNiMGRkNmIyZDY2NWU3M2I4NGE2OGU1ZTRmIiwidGFnIjoiIn0%3D; expires=Thu, 28 Mar 2024 14:16:22 GMT; Max-Age=7200; path=/; httponly
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

Request      

POST users/{userId}/product-carousels

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

URL Parameters

userId   integer   

The ID of the User. Example: 123

Body Parameters

name   string   

Product carousel name. Example: [email protected]

products   string[]   

The Product Carousel products array

name   string   

Example: ipsa

link   string   

Must be a valid URL. Example: http://www.armstrong.info/

price   string   

Example: voluptate

id   string   

Example: ut

tag_id   number   

Example: 3184.2078044

store_name   string   

Must not be greater than 255 characters. Example: qknuhjrbwqysolbpe

image_url   string   

Must be a valid URL. Example: https://blick.com/ut-id-nostrum-eos-sapiente-et.html

requires authentication

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/users/123/product-carousels/eaque';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
        'json' => [
            'name' => '[email protected]',
            'products' => [
                'nulla',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request PUT \
    "https://api.metapic.com/users/123/product-carousels/eaque" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}" \
    --data "{
    \"name\": \"[email protected]\",
    \"products\": [
        \"nulla\"
    ]
}"
const url = new URL(
    "https://api.metapic.com/users/123/product-carousels/eaque"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

let body = {
    "name": "[email protected]",
    "products": [
        "nulla"
    ]
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "name": "Product Carousel",
    "products": [
        {
            "name": "product 1",
            "price": 100,
            "link": "http://test-link.com",
            "id": 123,
            "tag_id": 1234,
            "store_name": "Store"
        }
    ],
    "user_id": "{userId}",
    "updated_at": "2021-02-12 08:56:52",
    "created_at": "2021-02-12 08:56:52",
    "id": "{productCarouselId}"
}
 

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 200
x-ratelimit-remaining: 145
access-control-allow-origin: *
set-cookie: laravel_session=eyJpdiI6Im1hbWpxSjlXd3daWm5UTGVIRlVML0E9PSIsInZhbHVlIjoiYUMwVzk1TXN6ckZJSE9QTTRMbU1TQktQUzdxbkpyZ1JvZmk4NHgrVGNYSDVneS92anVLYzExbTYvTVZPOWYvbFd6QW5aN0FQTHg2a2t6cjViajlOL21FK1h5K3NiMlk3TzRCbWdQL2ZkaEVrNzhZLzlxUFRteDFpWi9zbUJ4M2YiLCJtYWMiOiIzYjVkNjllOThjZGE4YjdjMDkyZDk5M2RiMTJhNmExZTU1ODM5ZDUyNDJmMTcwNzExZmM5ZGQ0MzA1MWUzYmUwIiwidGFnIjoiIn0%3D; expires=Thu, 28 Mar 2024 14:16:23 GMT; Max-Age=7200; path=/; httponly
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

Request      

PUT users/{userId}/product-carousels/{id}

PATCH users/{userId}/product-carousels/{id}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

URL Parameters

userId   integer   

The ID of the User. Example: 123

id   string   

The ID of the product carousel. Example: eaque

product_carousel   integer   

The ID of the Product Carouse. Example: 123

Body Parameters

name   string   

Product carousel name. Example: [email protected]

products   string[]   

The Product Carousel products array

name   string   

Example: quam

link   string   

Must be a valid URL. Example: http://www.stark.org/dolores-eveniet-facilis-nobis-doloremque-odio-recusandae-enim

price   string   

Example: aliquid

id   string   

Example: in

tag_id   number   

Example: 3.950498

store_name   string   

Must not be greater than 255 characters. Example: omkhkuroiyxlbkha

image_url   string   

Must be a valid URL. Example: http://www.mccullough.net/qui-possimus-perferendis-enim-est-neque-aspernatur-tempora

requires authentication

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/users/123/product-carousels/necessitatibus';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request DELETE \
    "https://api.metapic.com/users/123/product-carousels/necessitatibus" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}"
const url = new URL(
    "https://api.metapic.com/users/123/product-carousels/necessitatibus"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):


{
    "name": "Product Carousel",
    "products": [
        {
            "name": "product 1",
            "price": 100,
            "link": "http://test-link.com",
            "id": 123,
            "tag_id": 1234,
            "store_name": "Store"
        }
    ],
    "user_id": "{userId}",
    "updated_at": "2021-02-12 08:56:52",
    "created_at": "2021-02-12 08:56:52",
    "id": "{productCarouselId}"
}
 

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 200
x-ratelimit-remaining: 144
access-control-allow-origin: *
set-cookie: laravel_session=eyJpdiI6IndnZ2V0UmVZL0F2NUxLSWdwd25RZnc9PSIsInZhbHVlIjoidVcvNXJUVkpVUG94SFhnZ1N1WTM5aHZrcmFxalM5aEhKc3BwMk5TLzUzTktwKzc3SVJaVHNKL0FkZ204bzZpUVlGMGpoVGY1bmlTVEJNNFlKZEZRT0VLSnBjVmxrd3BFODJvemNJVHB0cUdaYVlMR0VOTWQxand0Vk03L3RNUUMiLCJtYWMiOiJmMDlkNGVmMmNlNDkwZGU3MDdkMDc0YThiYmUwMmM5YTIxYTIyZjk0NWU3ZDU4ZWEzZjVlN2VhNzI2MGY1NWUwIiwidGFnIjoiIn0%3D; expires=Thu, 28 Mar 2024 14:16:25 GMT; Max-Age=7200; path=/; httponly
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

Request      

DELETE users/{userId}/product-carousels/{id}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

URL Parameters

userId   integer   

The ID of the User. Example: 123

id   string   

The ID of the product carousel. Example: necessitatibus

product_carousel   integer   

The ID of the Product Carousel. Example: 123

Products

Get Products

requires authentication

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/product';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
    --get "https://api.metapic.com/product" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}"
const url = new URL(
    "https://api.metapic.com/product"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


[]

 

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 200
x-ratelimit-remaining: 170
access-control-allow-origin: *
set-cookie: laravel_session=eyJpdiI6Ikd4Mms5ZXZnMnZ4SnhnNmtnRWRhSHc9PSIsInZhbHVlIjoiY1ZkbWlnTmZkWmJkSDJubWJYMzcxdUgxdWZLOXdkbTNvZ2Q1bm1IMW1QZ0g4Z0lyUk1uMUx3L3AwRUVjVnpUVlEvTkp5V0t3L21NQ0lKZDNNOUFyNUdHOHNrUFRTam9FNy94SzJMWXVUM3YyUWVQNHduVzBFNDZFczY1a3lLS2IiLCJtYWMiOiIyMmM5NzdlYWY1MDcxNDhmYjAwNjhkMzk1NmNmYjFkZDVhZTNjYWI3YTdhNDY3ODYxYjNhOWUxOTRjMzljMDRkIiwidGFnIjoiIn0%3D; expires=Thu, 28 Mar 2024 14:15:58 GMT; Max-Age=7200; path=/; httponly
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

Request      

GET product

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

Get Product

requires authentication

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/product/1';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
    --get "https://api.metapic.com/product/1" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}"
const url = new URL(
    "https://api.metapic.com/product/1"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


[]

 

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 200
x-ratelimit-remaining: 169
access-control-allow-origin: *
set-cookie: laravel_session=eyJpdiI6ImNRdktJWkpLNnlHaWEyZER5RDlHS2c9PSIsInZhbHVlIjoiNmtpeHU3WEZIc3RKeDV4NUR0Y21wa2ZTNnpib2E3d1l0dzR6VmozL2V2RFgzUFIyUWUwYUlkaUdyZG9wd3NDQUhXUFBLdkE2Q3hCZFZoVy82ZWlBSWFYT094QitrWm41VnVtU1NXVW9OeiswVjlBZVlaTEp1QVdXNGhIN0haSzUiLCJtYWMiOiIzN2NjYWJiMzdhZjNlOWY2NjMxYzA1M2U3ZTA4ZWRkNGY4YmZmYjg1MDcxNTJkOWI4N2Q3YjQ2NjY5NmY4Y2Y0IiwidGFnIjoiIn0%3D; expires=Thu, 28 Mar 2024 14:15:59 GMT; Max-Age=7200; path=/; httponly
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

Request      

GET product/{id}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

URL Parameters

id   integer   

The ID of the favorite. Example: 1

Sms Verification

Create User Sms Verification

requires authentication

Uses to create verification and send verification code to user

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/users/verifications/sms';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
        'json' => [
            'phone' => '+380xxxxxxx',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request POST \
    "https://api.metapic.com/users/verifications/sms" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}" \
    --data "{
    \"phone\": \"+380xxxxxxx\"
}"
const url = new URL(
    "https://api.metapic.com/users/verifications/sms"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

let body = {
    "phone": "+380xxxxxxx"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "phone": "(523) 662-9728 x423",
    "expires_at": "2020-11-04T23:23:41.777994Z",
    "updated_at": "2020-11-04 23:13:41",
    "created_at": "2020-11-04 23:13:41",
    "id": 53,
    "type": "sms"
}
 

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 200
x-ratelimit-remaining: 148
access-control-allow-origin: *
set-cookie: laravel_session=eyJpdiI6Iks2eUFDdnRTVmJXTjhTN0h2MldOSXc9PSIsInZhbHVlIjoibUg5eTFROXJUWTZoNk00OC96cm5Lbk1lMGRzT0lRSjMwTXhBY1dHaDZyRytZVi9OSzBQNlJ3bThrN1RKenFRTjVDTUVaOEhTVHNLalNtWWRxYWFIYzRLd21MalJnOEIwbHZ0eWZjdWRFNXRqWlZFMHk1K0FKVFh3V1dlNnF6ZjMiLCJtYWMiOiIyZWQ3OTMxNWQwNGIzNDI3ZWZmN2UwMzI4ODcxZjk2YWFmM2E0OTgxYzUyM2Q3ODFiMzJjNWJhNzE2YTg4NzQ2IiwidGFnIjoiIn0%3D; expires=Thu, 28 Mar 2024 14:16:20 GMT; Max-Age=7200; path=/; httponly
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

Request      

POST users/verifications/sms

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

Body Parameters

phone   string   

User phone. Example: +380xxxxxxx

Statistic

User Earnings and Clicks Grouped by Date

requires authentication

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/stats/earnings';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
        'query' => [
            'from' => '2019-01-01',
            'to' => '2019-02-02',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
    --get "https://api.metapic.com/stats/earnings?from=2019-01-01&to=2019-02-02" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}"
const url = new URL(
    "https://api.metapic.com/stats/earnings"
);

const params = {
    "from": "2019-01-01",
    "to": "2019-02-02",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "dates": [
        {
            "date": "2020-01-01",
            "clicks": 0,
            "earned": 100,
            "pending": 0
        }
    ],
    "earned": 22300,
    "earned_formated": "223.00 kr",
    "pending": 0,
    "pending_formated": "0 öre"
}
 

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 200
x-ratelimit-remaining: 167
access-control-allow-origin: *
set-cookie: laravel_session=eyJpdiI6Ikk0a0w2dDI2bWRFV29nNkgvUHBCeFE9PSIsInZhbHVlIjoiNks2aDgxMUtsdTUwbFFreG1VQ0ZQdVJkYmp3ODlZWm1BQUszT3BGOTdvWDlzMUs3bk04MTBaekozVVpTcDZmVmlzZmZZN216RDhuRXlBMTVITlhQSGxmeVYrQmxiUXVpMmlHMTZCZGtsRFBmNjFlY3RYcWhrUGhHTkdTTXk2Sm8iLCJtYWMiOiI1NzhiZmRjZTNhMGFlYWJmZjZhNWEyMDZhNjgwOWNhM2Q1YWU3ZTZmNWU0NjQzZjkwYTExN2U3ZjJiNDhiNzdmIiwidGFnIjoiIn0%3D; expires=Thu, 28 Mar 2024 14:16:01 GMT; Max-Age=7200; path=/; httponly
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

Request      

GET stats/earnings

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

Query Parameters

from   string  optional  

date. Must be a valid date. Example: 2019-01-01

to   string  optional  

date. Must be a valid date. Example: 2019-02-02

Performance

requires authentication

Summarized Earnings, OneTimePayments and Clicks

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/stats/performance';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
        'query' => [
            'from' => '2019-01-01',
            'to' => '2019-02-02',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
    --get "https://api.metapic.com/stats/performance?from=2019-01-01&to=2019-02-02" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}"
const url = new URL(
    "https://api.metapic.com/stats/performance"
);

const params = {
    "from": "2019-01-01",
    "to": "2019-02-02",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "clicks": 6202,
    "earned": 570082,
    "one_time_payments": "170200",
    "pending": 0,
    "tags": 20,
    "images": 0
}
 

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 200
x-ratelimit-remaining: 166
access-control-allow-origin: *
set-cookie: laravel_session=eyJpdiI6IjRpK1BMK2JvTHE4UFh0S0ZpL1ozdEE9PSIsInZhbHVlIjoiOWltVldsd3JraHZhS3UrOWhFUW1tczB5RzdKS3oyTVFGTFo1cjBCRFoxRHQ3SjBOZDFvL1duZVdzWVREZFBpNFdmNU0vUmJkalFsY3ViNGsrbU55Si9FQVVwdXk4SWlrVXlUS0JYeCszNjErMW0rM3lIVUZyU0RlNzZQOU1nOTAiLCJtYWMiOiJkN2JjNWMzMGRiMWNiZDdkODM2NDljNWEwNTg4ODAwNzNhMzQ3ZmE5YWY4NzQ0ODVmNWY2MjA1YTNmZTljNTlkIiwidGFnIjoiIn0%3D; expires=Thu, 28 Mar 2024 14:16:02 GMT; Max-Age=7200; path=/; httponly
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

Request      

GET stats/performance

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

Query Parameters

from   string  optional  

date. Must be a valid date. Example: 2019-01-01

to   string  optional  

date. Must be a valid date. Example: 2019-02-02

Get Payment Date And Amount

requires authentication

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/stats/getPaymentsDateAndAmount';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
    --get "https://api.metapic.com/stats/getPaymentsDateAndAmount" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}"
const url = new URL(
    "https://api.metapic.com/stats/getPaymentsDateAndAmount"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "lastPaymentdate": "2020-08-25",
    "paymentLimit": 15000,
    "paymentLimit_formated": "150 zł",
    "payments": [
        {
            "user_earnings": 0,
            "payment_date": {
                "date": "2020-08-25 00:00:00.000000",
                "timezone_type": 3,
                "timezone": "UTC"
            },
            "payment_for_month": "August",
            "user_earnings_formated": "0 gr",
            "payment_error_id": 1,
            "earnings_left_to_payment": 15000,
            "earnings_left_to_payment_formated": "150.00 zł"
        }
    ]
}
 

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 200
x-ratelimit-remaining: 165
access-control-allow-origin: *
set-cookie: laravel_session=eyJpdiI6InJOd3M4MlpSdTBrOXA0UnNEZHFMVmc9PSIsInZhbHVlIjoiSDRKY1ZHZU14TStncUpiWFBCbEhjbFB2ZDNJTU5ySVpMSzIxdy9yY2Z4OW4rcmtGMTVKRnFvek1IVWZZUHExdzZGbFV6UENvb0xkSjZuRTVhU0NuSTNDWTBXc1FGTlR3dkhRcDBZWmFBaGVtek1VWW43ZDJib2treGJSNGxENTkiLCJtYWMiOiJiYmZhYzE2ODcwYTM0YmI3ZGViMTIwZjVlMWNhMzg0OGY3NmEyMDJlYjEwZGYyMmNkYTE1NTVkYmQzZGQwOTgzIiwidGFnIjoiIn0%3D; expires=Thu, 28 Mar 2024 14:16:03 GMT; Max-Age=7200; path=/; httponly
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

Request      

GET stats/getPaymentsDateAndAmount

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

Get User One Time Payments

requires authentication

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/stats/one-time-earnings';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
        'query' => [
            'from' => '2019-01-01',
            'to' => '2019-02-02',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
    --get "https://api.metapic.com/stats/one-time-earnings?from=2019-01-01&to=2019-02-02" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}"
const url = new URL(
    "https://api.metapic.com/stats/one-time-earnings"
);

const params = {
    "from": "2019-01-01",
    "to": "2019-02-02",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "current_page": 1,
    "data": [
        {
            "id": 38,
            "user_id": 43944,
            "store_id": null,
            "user_earnings": "1 502.00 zł",
            "payment_date": "2019-11-25",
            "created_at": "2019-11-29 14:08:22",
            "updated_at": "2019-12-30 11:22:37",
            "comment": "Wyrównanie kampania Media Markt",
            "store": null
        }
    ],
    "first_page_url": "/stats/one-time-earnings?page=1",
    "from": 1,
    "last_page": 1,
    "last_page_url": "/stats/one-time-earnings?page=1",
    "next_page_url": null,
    "path": "/stats/one-time-earnings",
    "per_page": 15,
    "prev_page_url": null,
    "to": 2,
    "total": 2
}
 

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 200
x-ratelimit-remaining: 163
access-control-allow-origin: *
set-cookie: laravel_session=eyJpdiI6InZyZjhlSXdaL0w4Z1lueUJ1NE91MUE9PSIsInZhbHVlIjoiYktjc3hjU09heHVYeWQ0QnNaVGVVMzI2QXczcWZxY1Q2YW80L04wbVl1R0U1YmNvd05TVnVFREJvUU1VcVhHNXdYNlBrczFTd0c2bW4zOEhqby8wWSs5VjVzMVNGVGpIYk42WDZQQWV5MEtwTStYQ3dhL0xOcndBSnZRMUY1MEoiLCJtYWMiOiI4NmE0ZGMyYWM3MjQxYTQzMDRjMTg3NDBkNDBlMThhZWUzMDJkODRmNDJhNThjMjIxOWIzMjc0ODMwNmZhOGM3IiwidGFnIjoiIn0%3D; expires=Thu, 28 Mar 2024 14:16:05 GMT; Max-Age=7200; path=/; httponly
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

Request      

GET stats/one-time-earnings

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

Query Parameters

from   string  optional  

date. Must be a valid date. Example: 2019-01-01

to   string  optional  

date. Must be a valid date. Example: 2019-02-02

Get all click statistic split on stores

requires authentication

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/stats/stores';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
        'query' => [
            'from' => '2019-01-01',
            'to' => '2019-02-02',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
    --get "https://api.metapic.com/stats/stores?from=2019-01-01&to=2019-02-02" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}"
const url = new URL(
    "https://api.metapic.com/stats/stores"
);

const params = {
    "from": "2019-01-01",
    "to": "2019-02-02",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 200
x-ratelimit-remaining: 162
access-control-allow-origin: *
set-cookie: laravel_session=eyJpdiI6ImNJSnVMT1ZMeEJORiszREY0eGdLbkE9PSIsInZhbHVlIjoiY01EaGhlZzMrWi9na2tFYml4KzNMeENaNTVGZFl1Q3JrclE0NStQajRaS3pvUWNCTGF2TzNDYVB2RS9uOXp6OUhIeFZYVUVFazdlVCs2ZzNpV0pXTHdoRUFnN3BMSHdGSEdKTDFxUFVIekFIenRCMDE4eGM5eUNxbTZTaGxKWVYiLCJtYWMiOiI4YmFkNDU2ZGMyMzE4MWUwYzc0ZGU2NTI4Y2M3ZjNjYzMwZTEwM2JhYWY0MDRmMzU2NThmMDkzNmQwYjZjMWFiIiwidGFnIjoiIn0%3D; expires=Thu, 28 Mar 2024 14:16:06 GMT; Max-Age=7200; path=/; httponly
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

Request      

GET stats/stores

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

Query Parameters

from   string  optional  

date. Must be a valid date. Example: 2019-01-01

to   string  optional  

date. Must be a valid date. Example: 2019-02-02

Get Tag Stats

requires authentication

Returns stats for last 30 days or for selected period (from date, to date)

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/users/1/get-tag-stats-by-date';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
        'query' => [
            'from' => '2019-01-01',
            'to' => '2019-02-02',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
    --get "https://api.metapic.com/users/1/get-tag-stats-by-date?from=2019-01-01&to=2019-02-02" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}"
const url = new URL(
    "https://api.metapic.com/users/1/get-tag-stats-by-date"
);

const params = {
    "from": "2019-01-01",
    "to": "2019-02-02",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


[
    {
        "tag_id": "{tagId}",
        "date": "2022-10-26",
        "clicks": 643,
        "earned": 64302,
        "order_value": 0,
        "nr_orders": 0,
        "pending_cpa": 0,
        "cpc_earned": 64302,
        "cpa_earned": 0
    }
]
 

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 200
x-ratelimit-remaining: 181
access-control-allow-origin: *
set-cookie: laravel_session=eyJpdiI6IjhJTk4vbGI5c2JUQm5SR3R6aysrbkE9PSIsInZhbHVlIjoiMVlqNkN3ckF3S3hlOXZZMzhSZ0RDbFdaMStwQkQxaGxIRDlvd2hPbUQ1Q1NkTzZtVlMvdUhOQXRXcWRMQTZobjQ0N04zU2hGSUtBc3dWd2RCSm5FeUcrcmdzcnB1ek9BZFlCdWZYZVlwdzV2TE1RY1VYQUUrb3lod0tSc3NNd3ciLCJtYWMiOiIxNDFlNDVkMGRhZDFhYWIyNDA4NWY1YmY2MzA2NDBmMDQwYzU2MzA3YjRlOGMzNTZlMzg5MzZkMTI4ZmFhMTc5IiwidGFnIjoiIn0%3D; expires=Thu, 28 Mar 2024 14:16:49 GMT; Max-Age=7200; path=/; httponly
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

Request      

GET users/{userId}/get-tag-stats-by-date

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

URL Parameters

userId   integer   

Example: 1

Query Parameters

from   string  optional  

date. Must be a valid date. Example: 2019-01-01

to   string  optional  

date. Must be a valid date. Example: 2019-02-02

Store

Create Store

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/v2/stores';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
        'json' => [
            'name' => 'ipsum',
            'domains' => [
                'T..CKw/w /w/',
            ],
            'categories' => [
                1,
            ],
            'logo_url' => 'http://www.cronin.biz/',
            'country' => 'SE',
            'currency' => 'EUR',
            'language' => 'corporis',
            'billing' => [
                'company_name' => 'rerum',
                'street' => 'id',
                'postal_code' => 'quis',
                'city' => 'et',
                'vat_number' => 'sint',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request POST \
    "https://api.metapic.com/v2/stores" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}" \
    --data "{
    \"name\": \"ipsum\",
    \"domains\": [
        \"T..CKw\\/w \\/w\\/\"
    ],
    \"categories\": [
        1
    ],
    \"logo_url\": \"http:\\/\\/www.cronin.biz\\/\",
    \"country\": \"SE\",
    \"currency\": \"EUR\",
    \"language\": \"corporis\",
    \"billing\": {
        \"company_name\": \"rerum\",
        \"street\": \"id\",
        \"postal_code\": \"quis\",
        \"city\": \"et\",
        \"vat_number\": \"sint\"
    }
}"
const url = new URL(
    "https://api.metapic.com/v2/stores"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

let body = {
    "name": "ipsum",
    "domains": [
        "T..CKw\/w \/w\/"
    ],
    "categories": [
        1
    ],
    "logo_url": "http:\/\/www.cronin.biz\/",
    "country": "SE",
    "currency": "EUR",
    "language": "corporis",
    "billing": {
        "company_name": "rerum",
        "street": "id",
        "postal_code": "quis",
        "city": "et",
        "vat_number": "sint"
    }
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 200
x-ratelimit-remaining: 174
access-control-allow-origin: *
set-cookie: laravel_session=eyJpdiI6InlKYzlWVG9xRTB3MGptT3dzQzVUNFE9PSIsInZhbHVlIjoiSTRZd2pwencwZzR4QmFoRXhNYm1sR0d6NHBzc09RVjRQci8zYzM3RUErbWhJTTFnYXhvSzNkUGFuRUMxTmlQOW1QODFMajZaZ0wxSzY3OXRPRzd3SEZ0VjZRQWVqa1Q1ZG12Qi90V2ZEMG9EU21TMGFTbkhSTXFETXdxWTlsbzUiLCJtYWMiOiI3MmYxYTUyNDlkOTQ3M2I4NjM2OTJjNjhjN2M1NDkwM2ExMjExNDc5MmNiNWQyOGZkNzYxOWYwYzE0ZTA0NTYxIiwidGFnIjoiIn0%3D; expires=Thu, 28 Mar 2024 14:15:53 GMT; Max-Age=7200; path=/; httponly
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

Request      

POST v2/stores

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

Body Parameters

name   string   

Example: ipsum

domains   string[]  optional  

Store domains. Must match the regex /^(https?:\/\/)?([\dA-Za-z.-]+).([A-Za-z.]{2,6})([\/\w .-])\/?$/.

categories   string[]  optional  

Store categories IDs.

logo_url   string   

the logo url Example: http://www.cronin.biz/

country   string   

Store locale. Example: SE

currency   string   

Store ISO currency code. Example: EUR

language   string  optional  

Example: corporis

billing   object  optional  
company_name   string   

Example: rerum

street   string   

Example: id

postal_code   string   

Example: quis

city   string   

Example: et

vat_number   string  optional  

Example: sint

Store Categories

Get User Store Categories

requires authentication

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/users/123/store-categories';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
    --get "https://api.metapic.com/users/123/store-categories" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}"
const url = new URL(
    "https://api.metapic.com/users/123/store-categories"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "interested": [
        {
            "id": 1,
            "name": "Fashion"
        },
        {
            "id": 2,
            "name": "Home & Interior"
        }
    ],
    "very_interested": [],
    "not_interested": []
}
 

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 200
x-ratelimit-remaining: 197
access-control-allow-origin: *
set-cookie: laravel_session=eyJpdiI6InVBODFzMHdrdUdpUHdON2lYTHFDeVE9PSIsInZhbHVlIjoiVzhxL3ozaFlPaWRGYWRtSEptMURQOFdHYVZzZEUrdm53S1lpQjFJcTRvTW1iRnUwUG1pRzBRb1M2NnExdUE3NE1vSEI3SUVCdksyazZxeGpSVW92S2ViRzFwYXVBNG5iaHhDdjBZSkxyTXg2R3Z4dkN6dlE5ZW9QOUsxVlY3MEUiLCJtYWMiOiI4MWNkNWM0NGJkMGQ3M2QyNjdjYWQ4ZWE5OGQ1ZmRiMjA5NzBmY2ZiOWVkNmZiM2I2YzEyY2NlNTE5ZThhNTRhIiwidGFnIjoiIn0%3D; expires=Thu, 28 Mar 2024 14:16:32 GMT; Max-Age=7200; path=/; httponly
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

Request      

GET users/{userId}/store-categories

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

URL Parameters

userId   integer   

The User ID. Example: 123

Save User Store Categories

requires authentication

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/users/123/store-categories';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
        'json' => [
            'store_categories' => [
                'interested' => [
                    1,
                ],
                'very_interested' => [
                    1,
                ],
                'not_interested' => [
                    1,
                ],
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request POST \
    "https://api.metapic.com/users/123/store-categories" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}" \
    --data "{
    \"store_categories\": {
        \"interested\": [
            1
        ],
        \"very_interested\": [
            1
        ],
        \"not_interested\": [
            1
        ]
    }
}"
const url = new URL(
    "https://api.metapic.com/users/123/store-categories"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

let body = {
    "store_categories": {
        "interested": [
            1
        ],
        "very_interested": [
            1
        ],
        "not_interested": [
            1
        ]
    }
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "interested": [
        {
            "id": 1,
            "name": "Fashion"
        },
        {
            "id": 2,
            "name": "Home & Interior"
        }
    ],
    "very_interested": [],
    "not_interested": []
}
 

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 200
x-ratelimit-remaining: 196
access-control-allow-origin: *
set-cookie: laravel_session=eyJpdiI6ImhGUzRha21rY0dGd2ZGTE5CYk9OV0E9PSIsInZhbHVlIjoiZCtFQU53SzFHaUpJOXE4aGI2THdUekdpRVhtZTBFbHNyczFTT2I5b3BMZk1QU2hQTUVRa3lCeHBYNlpLUFNxV3ZVRExLWGx5bXZ2cm1OMkRpWEhReVFPMUMxTmFFcWdLWm8wN2VJZHNINUcxUTcwWVAzd1FGWlVzdjBTVXRGMVEiLCJtYWMiOiJkOWU1MGU0YmM4ODA2YmVhMDExY2U4YzUxMWExMTY0M2RjNDYxM2IzOTk4YmJmZDlmNWExNjdhZmZiMDFjY2Y0IiwidGFnIjoiIn0%3D; expires=Thu, 28 Mar 2024 14:16:33 GMT; Max-Age=7200; path=/; httponly
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

Request      

POST users/{userId}/store-categories

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

URL Parameters

userId   integer   

The User ID. Example: 123

Body Parameters

store_categories   object   
interested   string[]  optional  

Store categories IDs.

very_interested   string[]  optional  

Store categories IDs.

not_interested   string[]  optional  

Store categories IDs.

Get Store Categories List

requires authentication

Return all store categories

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/store-categories-list';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
    --get "https://api.metapic.com/store-categories-list" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}"
const url = new URL(
    "https://api.metapic.com/store-categories-list"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


[
    {
        "id": 1,
        "name": "Fashion"
    },
    {
        "id": 2,
        "name": "Home & Interior"
    },
    {
        "id": 3,
        "name": "Beauty & Health"
    },
    {
        "id": 4,
        "name": "Electronics & Computers"
    },
    {
        "id": 5,
        "name": "Children & Baby"
    },
    {
        "id": 6,
        "name": "Sports & Outdoors"
    },
    {
        "id": 7,
        "name": "Books & Games"
    },
    {
        "id": 8,
        "name": "Food & Beverage"
    },
    {
        "id": 9,
        "name": "Other"
    }
]
 

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 200
x-ratelimit-remaining: 193
access-control-allow-origin: *
set-cookie: laravel_session=eyJpdiI6IlIyTC9yVDdNSjRMUnNxU05EbTBQM2c9PSIsInZhbHVlIjoiRjlFUkR4Z3o3SzNvT2FZS0t6TFB2ZHQ5UVZuY25HdTBPZktzbEkvWlNyS2M4aWo1UjFudWF4ei9COU40SkgyVGR3ZlFyTDNNYWJkV2dTZlMyZTRCbjBKYnI0N3l2ODdMeUZvaVZndzJEeUhxYVlQNFh5U3FVdmJpbkM4Tm9mTEMiLCJtYWMiOiI1Njc1NTYxMWVhOGUyMzZjOTA5YTFmZGI0MzQ5ZDQ5ZjJhMWVkODI5NDk4NmZkOGY4ZWY4ZGM3NDAwOTg0NDYyIiwidGFnIjoiIn0%3D; expires=Thu, 28 Mar 2024 14:16:36 GMT; Max-Age=7200; path=/; httponly
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

Request      

GET store-categories-list

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

Stores

Get Stores

requires authentication

List of Stores ordered by cpc/cpa

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/stores';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
    --get "https://api.metapic.com/stores" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}"
const url = new URL(
    "https://api.metapic.com/stores"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


[
    {
        "id": "{storeId}",
        "name": "Hickap",
        "key": "Hickap",
        "currency": "SEK",
        "revenue_text": "",
        "deeplinkable": 0,
        "product_feed": 0,
        "cpc": 250,
        "instagram_cpc": 100,
        "logo_url": "https://metapic-cdn.s3.eu-west-1.amazonaws.com/toplists/stores/4505.png",
        "traffic_sources_costs": [
            {
                "id": 301,
                "store_id": "{storeId}",
                "source": 0,
                "cpc": 250,
                "cpa": 0,
                "invoice_cpc": null,
                "invoice_cpa": null,
                "user_revenue": 1,
                "client_revenue": null,
                "cpc_formatted": "2.50 kr"
            },
            {
                "id": 302,
                "store_id": "{storeId}",
                "source": 1,
                "cpc": 100,
                "cpa": null,
                "invoice_cpc": null,
                "invoice_cpa": null,
                "user_revenue": 1,
                "client_revenue": null,
                "cpc_formatted": "1.00 kr"
            }
        ],
        "offer": {
            "ids": [
                3502
            ]
        },
        "categories": [
            {
                "id": 3,
                "name": "Beauty"
            },
            {
                "id": 1,
                "name": "Fashion"
            }
        ],
        "url": "http://hickap.com",
        "cpc_formated": "2.50 kr",
        "instagram_cpc_formated": "1.00 kr",
        "store_categories": [
            {
                "id": 3,
                "name": "Beauty"
            },
            {
                "id": 1,
                "name": "Fashion"
            }
        ],
        "main_url": {
            "id": 18635,
            "store_id": 4505,
            "end_host": "hickap.com",
            "start_url": null,
            "created_at": "2023-06-09 12:56:11",
            "updated_at": "2023-06-09 12:56:11"
        }
    }
]
 

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 200
x-ratelimit-remaining: 175
access-control-allow-origin: *
set-cookie: laravel_session=eyJpdiI6Ik4yYWU5RDBDQzFsRHZBZWRodVJHQUE9PSIsInZhbHVlIjoieGZKU2VGRzNNNHRRaFhYL2xBZk9rTkdSdUlhTEY3d1lRY09jdXp5a1ZuclNNQVJHbzNQUnQ4TlI5SXE1RlpueGx2YjUyNk5DTi9OYzZ6K3BFTFpBU09SNkM1Snp2TFBPS0RvcCt2ZWtVUFliTlp2VFUrRkdxM2VsNWJvNDhTRjEiLCJtYWMiOiIxNjBlMGRkNzY4MDRiOThhZGY1OWY1NGVlMDhhYTAxZjZlMjRmODk4NzExNjI3YmM2MjA2MzFhMmM1NTExMjU0IiwidGFnIjoiIn0%3D; expires=Thu, 28 Mar 2024 14:15:52 GMT; Max-Age=7200; path=/; httponly
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

Request      

GET stores

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

Get store by ID

requires authentication

Returns store information by its ID based on user data.

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/user/stores/2';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
    --get "https://api.metapic.com/user/stores/2" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}"
const url = new URL(
    "https://api.metapic.com/user/stores/2"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 200
x-ratelimit-remaining: 172
access-control-allow-origin: *
set-cookie: laravel_session=eyJpdiI6Ii9mTThHNDRvWkJoU2F3ZHdZMHU2dnc9PSIsInZhbHVlIjoiU2FBdU1jYStac0FwKzI3R1dlcHlYNkMycmJWUC95dDZvV1hjY0o1bWphbXU5SkxkamVWaFhIek8wVmpuM1NxTmliT1MvM2x1c1d5OVJBNG1JQ0p3VlhHUVF6SFJYZkRjMWY3NjN1allsR2l2ZlNwcjBrdTlnZHlDWUhNQ0g0d1ciLCJtYWMiOiIwNzRiNmY1M2MwMDdhM2Q0MzkxZWM5MjdlMzg4Nzk5YmUyMjE5YWY2MzlmYjQxNzkyNWY2YTQ3MjgwNmVmZjFmIiwidGFnIjoiIn0%3D; expires=Thu, 28 Mar 2024 14:15:56 GMT; Max-Age=7200; path=/; httponly
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

Request      

GET user/stores/{id}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

URL Parameters

id   integer   

The ID of the store. Example: 2

Get Stores by category interests

requires authentication

List of Stores ordered by category interests and price

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/stores-by-interests';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
    --get "https://api.metapic.com/stores-by-interests" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}"
const url = new URL(
    "https://api.metapic.com/stores-by-interests"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


[
    {
        "id": 1,
        "name": "Fashion",
        "stores": [
            {
                "id": "{storeId}",
                "name": "Hickap",
                "key": "Hickap",
                "currency": "SEK",
                "revenue_text": "",
                "deeplinkable": 0,
                "product_feed": 0,
                "cpc": 250,
                "instagram_cpc": 100,
                "logo_url": "https://metapic-cdn.s3.eu-west-1.amazonaws.com/toplists/stores/4505.png",
                "traffic_sources_costs": [
                    {
                        "id": 301,
                        "store_id": "{storeId}",
                        "source": 0,
                        "cpc": 250,
                        "cpa": 0,
                        "invoice_cpc": null,
                        "invoice_cpa": null,
                        "user_revenue": 1,
                        "client_revenue": null,
                        "cpc_formatted": "2.50 kr"
                    },
                    {
                        "id": 302,
                        "store_id": "{storeId}",
                        "source": 1,
                        "cpc": 100,
                        "cpa": null,
                        "invoice_cpc": null,
                        "invoice_cpa": null,
                        "user_revenue": 1,
                        "client_revenue": null,
                        "cpc_formatted": "1.00 kr"
                    }
                ],
                "offer": {
                    "ids": [
                        3502
                    ]
                },
                "categories": [
                    {
                        "id": 3,
                        "name": "Beauty"
                    },
                    {
                        "id": 1,
                        "name": "Fashion"
                    }
                ],
                "url": "http://hickap.com",
                "cpc_formated": "2.50 kr",
                "instagram_cpc_formated": "1.00 kr",
                "store_categories": [
                    {
                        "id": 3,
                        "name": "Beauty"
                    },
                    {
                        "id": 1,
                        "name": "Fashion"
                    }
                ],
                "main_url": {
                    "id": 18635,
                    "store_id": 4505,
                    "end_host": "hickap.com",
                    "start_url": null,
                    "created_at": "2023-06-09 12:56:11",
                    "updated_at": "2023-06-09 12:56:11"
                }
            }
        ]
    }
]
 

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 200
x-ratelimit-remaining: 171
access-control-allow-origin: *
set-cookie: laravel_session=eyJpdiI6IkJVY0ZQaWdzL1AyZEw3aFFQWlZlVHc9PSIsInZhbHVlIjoiTDJBRDhPcXV1aU85SGd2QTA1cXQ2TDlZTFZWWlJJWlB5VnpoRDVsKzU3TVNrY0ttZ0JIdGlyazhoVktxem1ZMUlNWEdUMi8yamFkajhHMHNSTXVjVXJzOWhqckJrYjNMNTJ2TmV3TjhNWlZ1aUEwdUdzU0NBbFhCYk9sSlRRSEoiLCJtYWMiOiI1ZWQ3MGFhYmVkMzFhYTZmNzhhYjNmOTRkZmY1OTUzODkzMmQ3OGNlZDQwZWJkZmI2N2M3Y2FiMDc3MDEwNTE4IiwidGFnIjoiIn0%3D; expires=Thu, 28 Mar 2024 14:15:57 GMT; Max-Age=7200; path=/; httponly
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

Request      

GET stores-by-interests

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

Get User toplist

requires authentication

List of Stores ordered by cpc/cpa

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/topList/kk_KZ';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
    --get "https://api.metapic.com/topList/kk_KZ" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}"
const url = new URL(
    "https://api.metapic.com/topList/kk_KZ"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "retailers": [
        {
            "key": "Hickap",
            "store_id": "{storeId}",
            "store_url": "http://hickap.com",
            "logo": "https://metapic-cdn.s3.eu-west-1.amazonaws.com/toplists/stores/4505.png",
            "cpc": 250,
            "revenue_text": "",
            "instagram_cpc": 100,
            "traffic_sources_costs": [
                {
                    "id": 301,
                    "store_id": "{storeId}",
                    "source": 0,
                    "cpc": 250,
                    "invoice_cpc": 250,
                    "cpa": 0,
                    "invoice_cpa": null,
                    "created_at": "2023-05-03 12:01:08",
                    "updated_at": "2023-05-03 12:01:08",
                    "user_revenue": 1,
                    "client_revenue": null,
                    "cpc_formatted": "2.50 kr"
                },
                {
                    "id": 302,
                    "store_id": "{storeId}",
                    "source": 1,
                    "cpc": 100,
                    "invoice_cpc": 100,
                    "cpa": null,
                    "invoice_cpa": null,
                    "created_at": "2023-05-03 12:01:09",
                    "updated_at": "2023-05-03 12:01:09",
                    "user_revenue": 1,
                    "client_revenue": null,
                    "cpc_formatted": "1.00 kr"
                }
            ],
            "offer": {
                "ids": [
                    3502
                ]
            },
            "currency": "SEK",
            "cpc_formated": "2.50 kr",
            "instagram_cpc_formated": "1.00 kr",
            "offer_title": "",
            "offer_text": ""
        }
    ]
}
 

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 200
x-ratelimit-remaining: 168
access-control-allow-origin: *
set-cookie: laravel_session=eyJpdiI6Im1TRzQyaHprOGtsK1dSYTBjT1pwMnc9PSIsInZhbHVlIjoiRGpsdjYvbG8rOTlsSWtlWjdjbEV4bFNZazhLWjNJM0MxK2Mzc1NKL0FZOHBtV3NPajU5bWlwWjMxK09pK3h0Nmg2Sk1rRXNVY0gvNEJPYmRMTXpFTzFDVHhkTE9WYktwSHdkN3VhUHMzbVBIQ2hEYTVHOTUya1JwSDZ6UzhyMUsiLCJtYWMiOiIzODE2ZDBjN2ZhMTQyMDEwNTE5NDZjNjIwNjE0ZWUzMWZmNDA3YzUyZTM0MTAyNzdhYjcyMzU3YWJiYzNkODgwIiwidGFnIjoiIn0%3D; expires=Thu, 28 Mar 2024 14:16:00 GMT; Max-Age=7200; path=/; httponly
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

Request      

GET topList/{locale}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

URL Parameters

locale   string   

Example: kk_KZ

Subscriptions

Unsubscribe

Unsubscribe from newsletter or campaign mails

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/unsubscribe';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
        'json' => [
            'email' => '[email protected]',
            'type' => 'campaign',
            'token' => '$2y$10$Hvf6Y9lVjrY/Qzg8eiynsu8vgq53cw3uDV3J9hAs/ScpSyt32Sl6S',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request POST \
    "https://api.metapic.com/unsubscribe" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}" \
    --data "{
    \"email\": \"[email protected]\",
    \"type\": \"campaign\",
    \"token\": \"$2y$10$Hvf6Y9lVjrY\\/Qzg8eiynsu8vgq53cw3uDV3J9hAs\\/ScpSyt32Sl6S\"
}"
const url = new URL(
    "https://api.metapic.com/unsubscribe"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

let body = {
    "email": "[email protected]",
    "type": "campaign",
    "token": "$2y$10$Hvf6Y9lVjrY\/Qzg8eiynsu8vgq53cw3uDV3J9hAs\/ScpSyt32Sl6S"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 400
x-ratelimit-remaining: 376
access-control-allow-origin: *
set-cookie: laravel_session=eyJpdiI6ImNtSzJ6TzIvSmxuMGp0RUsxWGVFYWc9PSIsInZhbHVlIjoibGFQZHRSQ3FDeTN2aWw5d3BBMkltaUJqRWlVQlVlYVhJZ0dBWXhPcEhSR0g3MVA2T1NaRWROOXZSSkdBdGxkUGwvYStoVHJacjV3UGhHdnJBekJYb0trWml4c1dUcjhjMFppUmVESVhpYjlQa2IreWdTbDUwVllUTzl2VEpRVUMiLCJtYWMiOiJmYzU0ODA5NzBmODE1ZWI5ZjVmOTRmYjM3MGZjNTQ1ZDgzMmZiYTY2YTQxNThkMzczNDYzMjdkMjgxNjhlZTdiIiwidGFnIjoiIn0%3D; expires=Thu, 28 Mar 2024 14:15:50 GMT; Max-Age=7200; path=/; httponly
 

{
    "email": "[email protected]",
    "type": "campaign",
    "updated_at": "2024-03-28T12:15:49.000000Z",
    "created_at": "2024-03-28T12:15:49.000000Z",
    "id": 136
}
 

Example response (200):


{
    "email": "[email protected]",
    "type": "campaign",
    "updated_at": "2022-10-11T04:36:46.000000Z",
    "created_at": "2022-10-11T04:36:46.000000Z",
    "id": 1
}
 

Request      

POST unsubscribe

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

Body Parameters

email   string   

The email to unsubscribe. The value format is invalid. Example: [email protected]

type   string   

The subscription type. Example: campaign

Must be one of:
  • campaign
  • newsletter
token   string   

Hashed string. Example: $2y$10$Hvf6Y9lVjrY/Qzg8eiynsu8vgq53cw3uDV3J9hAs/ScpSyt32Sl6S

User

User Info

requires authentication

Get the same info as postLogin but with access token.

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/user/info';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
    --get "https://api.metapic.com/user/info" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}"
const url = new URL(
    "https://api.metapic.com/user/info"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "id": "{userId}",
    "username": "{username}",
    "email": "{email}",
    "created_at": "2019-06-17 11:53:17",
    "updated_at": "2019-08-20 07:07:50",
    "admin": 1,
    "last_active": "0000-00-00 00:00:00",
    "first_name": "{userName}",
    "surname": "{userSurname}",
    "country": "{country}",
    "city": "{city}",
    "address": "{address}",
    "postcode": "{postcode}",
    "tier_pricing_type": "",
    "config": "{\"showedPopups\":[\"firstCollageItem\"]}",
    "sign_user_agreement": "2019-08-14 08:34:12",
    "revenue_tier_id": 105,
    "access_token": {
        "id": "{tokenId}",
        "user_id": "{userId}",
        "access_token": "{token}",
        "created_at": "2019-06-17 11:53:17",
        "updated_at": "2019-06-17 11:53:17"
    },
    "currencyObj": {
        "code": "SEK",
        "name": "Swedish krona",
        "symbol": "kr",
        "subunit": "öre",
        "is_before": 0,
        "ratio_to_eur": 0.09
    },
    "roles": [],
    "own_paymentsystem": 0,
    "revenue_tier": {
        "id": 105,
        "created_at": "2018-12-12 14:21:45",
        "updated_at": "2018-12-12 14:21:45",
        "client_id": 79,
        "revenue_share": "0.70",
        "instagram_revenue_share": "0.70",
        "name": "Diamond"
    }
}
 

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 200
x-ratelimit-remaining: 161
access-control-allow-origin: *
set-cookie: laravel_session=eyJpdiI6ImFEaUg0WCtDeTRGaTY0Zm91UVBnTnc9PSIsInZhbHVlIjoiN04vOHVCaDMyVG1EYzVqYkVVZWFDdzU3clg3akt3MUhqUU12dHVlRU9GT0dDNWVVOWNmekZtVi9iT3drMmhDYlpYU2t4SE5rTDY4a1JyZjk1V1lYSHRuVW1VeUZhTkpKTnJ3VGwrOHFlcXR3WTVnZjZJZVBHQXJWWnM2OHhHekYiLCJtYWMiOiJiYmMyYjFjMzlhYTVhMDk3NmVlYmZhOTZiODlkYmZhYjZkMTNlN2MzYjkzNTRhNjk0NmU1NmE5OTE4ZGYzOWQ5IiwidGFnIjoiIn0%3D; expires=Thu, 28 Mar 2024 14:16:07 GMT; Max-Age=7200; path=/; httponly
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

Request      

GET user/info

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

User Information

Update User Information

requires authentication

Update user data, company, phone, email and vat_no information etc.

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/extraUserInfo';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
        'json' => [
            'extraInfo' => 'qui',
            'code' => 'consequatur',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request PUT \
    "https://api.metapic.com/extraUserInfo" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}" \
    --data "{
    \"extraInfo\": \"qui\",
    \"code\": \"consequatur\"
}"
const url = new URL(
    "https://api.metapic.com/extraUserInfo"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

let body = {
    "extraInfo": "qui",
    "code": "consequatur"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "id": "{userId}",
    "username": "{username}",
    "email": "{email}",
    "phone": null,
    "created_at": "2020-12-09 14:51:45",
    "updated_at": "2020-12-09 14:51:45",
    "admin": 0,
    "first_name": "{userName}",
    "surname": "{userSurname}",
    "country": "{country}",
    "city": "{city}",
    "address": "{address}",
    "postcode": "{postcode}",
    "tier_pricing_type": "",
    "config": "{}",
    "sign_user_agreement": "2019-08-14 08:34:12",
    "revenue_tier_id": 105,
    "recruitment_utm": null,
    "bank_info": null,
    "social_media": [],
    "own_paymentsystem": 0,
    "businessType": "INDIVIDUAL",
    "SSNum": "",
    "bankType": "CLEARING",
    "is_suspended": false,
    "is_verified": true,
    "client": {
        "id": "{id}",
        "client_id": "{clientId}",
        "name": "Metapic SE",
        "created_at": "2014-04-24 16:12:29",
        "updated_at": "2020-04-28 06:58:23",
        "own_paymentsystem": 0,
        "config": "{}",
        "user_mail_config": null,
        "feed": "live_se",
        "locale": "SE",
        "revenue_model": "blog_percentage",
        "revenue_share": "0.00",
        "store_group_id": 1,
        "default_revenue_tier": 76,
        "default_verified_users": 0
    },
    "company": null
}
 

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 200
x-ratelimit-remaining: 153
access-control-allow-origin: *
set-cookie: laravel_session=eyJpdiI6IkJodlloYnFkdnJNRms5b1dqL2NrbXc9PSIsInZhbHVlIjoiWkdiWjNNUzdPL2hFWXNHTmw5LzI1M3Z3dnIvaHVlRXNKMGVnbkJBVS96OWlCWCs2U3M4MGhkSmYyZzZORkI5NHlUVFEwMWEwUXVGcWIxWUVQWStlZlF6K0VFRkVQczVLNW9iRTBNMy9DVFNkU3Jjbk1nOFd1c1M3Z3dVMzBNUTMiLCJtYWMiOiJlZGI0ZjlhMDUxZjRjNTUxNGQ3Yjc4NDYwMDg4ZWUwMTdkOTE0NDNjM2Y5Y2Y1ZjgzYWIyMzQ5NDA0YzIzMjFlIiwidGFnIjoiIn0%3D; expires=Thu, 28 Mar 2024 14:16:15 GMT; Max-Age=7200; path=/; httponly
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

Request      

PUT extraUserInfo

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

URL Parameters

id   integer   

The ID of the tag. Example: 1

Body Parameters

extraInfo   string   

Example: qui

phone   string   

Example: eum

email   string  optional  
vat_no   string  optional  
code   string   

Example: consequatur

Validate IBAN

requires authentication

Check IBAN and get additional bank info

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://api.metapic.com/validate-iban';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => '{token}',
        ],
        'query' => [
            'iban' => 'SEXXXXXXXXXXX',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
    --get "https://api.metapic.com/validate-iban?iban=SEXXXXXXXXXXX" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: {token}"
const url = new URL(
    "https://api.metapic.com/validate-iban"
);

const params = {
    "iban": "SEXXXXXXXXXXX",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "{token}",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "bank_data": {
        "bic": "{bic}",
        "branch": null,
        "bank": "{bank}",
        "address": "{address}",
        "city": "Bratislava",
        "state": null,
        "zip": "811 01",
        "phone": null,
        "fax": null,
        "www": null,
        "email": null,
        "country": "Slovakia",
        "country_iso": "SK",
        "account": "{account}",
        "bank_code": "{bank_code}",
        "branch_code": "000000"
    },
    "sepa_data": {
        "SCT": "YES",
        "SDD": "YES",
        "COR1": "YES",
        "B2B": "NO",
        "SCC": "NO"
    },
    "validations": {
        "chars": {
            "code": "006",
            "message": "IBAN does not contain illegal characters"
        },
        "account": {
            "code": "002",
            "message": "Account Number check digit is correct"
        },
        "iban": {
            "code": "001",
            "message": "IBAN Check digit is correct"
        },
        "structure": {
            "code": "005",
            "message": "IBAN structure is correct"
        },
        "length": {
            "code": "003",
            "message": "IBAN Length is correct"
        },
        "country_support": {
            "code": "007",
            "message": "Country supports IBAN standard"
        }
    },
    "errors": [],
    "is_valid": true
}
 

Example response (403):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 200
x-ratelimit-remaining: 152
access-control-allow-origin: *
set-cookie: laravel_session=eyJpdiI6IjVhUnR4MVNxSVgyTFdUd1lFR0M2Q0E9PSIsInZhbHVlIjoiVjVCaDVYMzVNc2poNmxremh1c0xxdTJWVzkrcTZ2T3BFaW1EZWdjVnZpd1Q3NElmbXR2RUVCMXdvSThOSUdDQis2SDY3aFNFTnR2K2trRExPaENXdC9zanh4UWJzUkVUMUdSUk5adzdRb0IwR3JjaWZKd3dBNkJKKzV5VDJNRGIiLCJtYWMiOiJkYWRiOWY4ZDljN2E3ZTg3ZWQwYjY3MDE0MzU3MDIzOThmOTQxMzVmZTJjMmM1ODA2YTlhMzRjZGZlY2NlNDM3IiwidGFnIjoiIn0%3D; expires=Thu, 28 Mar 2024 14:16:16 GMT; Max-Age=7200; path=/; httponly
 

{
    "status": 403,
    "error": "forbidden",
    "message": "Access Forbidden"
}
 

Request      

GET validate-iban

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Authorization      

Example: {token}

Query Parameters

iban   string   

User IBAN. Example: SEXXXXXXXXXXX