MENU navbar-image

Introduction

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

Authenticating requests

To authenticate requests, include an Authorization header with the value "Bearer {PERSONAL_ACCESS_TOKEN}".

All authenticated endpoints are marked with a requires authentication badge in the documentation below.

You can retrieve your token by visiting your dashboard and clicking API token on the User Profile Menu.

Teams

Retrieve a list of teams available for the authenticated token.

requires authentication

Example request:
curl --request GET \
    --get "https://api.301.pro/v1/teams?filter%5BcreatedAt%5D=%3E2025-01-01&filter%5BupdatedAt%5D=%3C2025-04-01" \
    --header "Authorization: Bearer {PERSONAL_ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.301.pro/v1/teams"
);

const params = {
    "filter[createdAt]": ">2025-01-01",
    "filter[updatedAt]": "<2025-04-01",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.301.pro/v1/teams';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {PERSONAL_ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'filter[createdAt]' => '>2025-01-01',
            'filter[updatedAt]' => '<2025-04-01',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.301.pro/v1/teams'
params = {
  'filter[createdAt]': '>2025-01-01',
  'filter[updatedAt]': '<2025-04-01',
}
headers = {
  'Authorization': 'Bearer {PERSONAL_ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "data": [
        {
            "id": "000de240-2e36-4621-a3fb-782db631e683",
            "teamOwnerId": "000de240-355e-4814-8606-d308260927ae",
            "name": "Realtime",
            "teamType": "realtime",
            "status": "published",
            "createdAt": "2025-03-18T22:23:28.000000Z",
            "updatedAt": "2025-03-18T22:23:37.000000Z"
        },
        {
            "id": "000de240-990b-4a6b-be68-b0c178b11949",
            "teamOwnerId": "000de240-355e-4814-8606-d308260927ae",
            "name": "Business",
            "teamType": "business",
            "status": "published",
            "createdAt": "2025-03-18T22:23:27.000000Z",
            "updatedAt": "2025-03-18T22:23:35.000000Z"
        },
        {
            "id": "000de240-e4b3-4177-946f-c78813737cb3",
            "teamOwnerId": "000de240-355e-4814-8606-d308260927ae",
            "name": "Professional",
            "teamType": "professional",
            "status": "published",
            "createdAt": "2025-03-18T22:23:25.000000Z",
            "updatedAt": "2025-03-18T22:23:34.000000Z"
        },
        {
            "id": "000de240-e3d4-464e-9f7a-b160235a1f05",
            "teamOwnerId": "000de240-355e-4814-8606-d308260927ae",
            "name": "Artist",
            "teamType": "artist",
            "status": "published",
            "createdAt": "2025-03-18T22:23:24.000000Z",
            "updatedAt": "2025-03-18T22:23:32.000000Z"
        },
        {
            "id": "000de240-04fe-40dd-8928-a94f61040035",
            "teamOwnerId": "000de240-355e-4814-8606-d308260927ae",
            "name": "Business Demo",
            "teamType": "business_demo",
            "status": "published",
            "createdAt": "2025-03-18T22:23:23.000000Z",
            "updatedAt": "2025-03-18T22:23:31.000000Z"
        }
    ],
    "links": {
        "first": "https://api.301.pro/v1/teams?page=1",
        "last": "https://api.301.pro/v1/teams?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "https://api.301.pro/v1/teams?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "https://api.301.pro/v1/teams",
        "per_page": 15,
        "to": 5,
        "total": 5
    }
}
 

Request      

GET v1/teams

Headers

Authorization      

Example: Bearer {PERSONAL_ACCESS_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

filter[name]   string  optional  

Name of the Team. Partial Search. Wildcards are not needed.

filter[teamType]   string  optional  

Team Subscription Plan.

Must be one of:
  • business_demo
  • artist
  • professional
  • business
  • realtime
filter[createdBy]   string  optional  

ID of the user that created the Team.

filter[createdAt]   string  optional  

Date of creation. You can filter for a specific date or before/after a certain date by prefixing with > or <. Example: >2025-01-01

filter[updatedAt]   string  optional  

Date of last update. You can filter for a specific date or before/after a certain date by prefixing with > or <. Example: <2025-04-01

Team

Team Labels

Retrieve a list of Team Labels

requires authentication

Team Labels are used to categorize ProLinks and Campaigns.

Example request:
curl --request GET \
    --get "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/labels?filter%5Btitle%5D=%22Email%22&filter%5Bcolor%5D=%22%2300eeff%22&filter%5Bdescription%5D=%22email%22&filter%5BcreatedAt%5D=%3E2025-01-01&filter%5BupdatedAt%5D=%3E2025-01-01&sort=-createdAt%2Ctitle" \
    --header "Authorization: Bearer {PERSONAL_ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/labels"
);

const params = {
    "filter[title]": ""Email"",
    "filter[color]": ""#00eeff"",
    "filter[description]": ""email"",
    "filter[createdAt]": ">2025-01-01",
    "filter[updatedAt]": ">2025-01-01",
    "sort": "-createdAt,title",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/labels';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {PERSONAL_ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'filter[title]' => '"Email"',
            'filter[color]' => '"#00eeff"',
            'filter[description]' => '"email"',
            'filter[createdAt]' => '>2025-01-01',
            'filter[updatedAt]' => '>2025-01-01',
            'sort' => '-createdAt,title',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/labels'
params = {
  'filter[title]': '"Email"',
  'filter[color]': '"#00eeff"',
  'filter[description]': '"email"',
  'filter[createdAt]': '>2025-01-01',
  'filter[updatedAt]': '>2025-01-01',
  'sort': '-createdAt,title',
}
headers = {
  'Authorization': 'Bearer {PERSONAL_ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "data": [
        {
            "id": "9e5489d0-51a5-4da7-9bfe-ce2d261bf556",
            "title": "Affiliate",
            "color": "#8F564A",
            "description": "Affiliate",
            "createdAt": "2025-03-01T20:01:05.000000Z",
            "updatedAt": "2025-03-01T20:01:05.000000Z"
        },
        {
            "id": "9e5489d0-4f9a-4ca6-944b-3fb51bb4fdb8",
            "title": "Blog",
            "color": "#5FEE02",
            "description": "Blog",
            "createdAt": "2025-03-01T20:01:05.000000Z",
            "updatedAt": "2025-03-01T20:01:05.000000Z"
        },
        {
            "id": "9e5489d0-50cf-4614-a99e-f3bf734f4493",
            "title": "Documentation",
            "color": "#B93DA2",
            "description": "Documentation",
            "createdAt": "2025-03-01T20:01:05.000000Z",
            "updatedAt": "2025-03-01T20:01:05.000000Z"
        },
        {
            "id": "9e5489d0-5020-46d1-a3f3-32e5206f8fa0",
            "title": "Email",
            "color": "#94454F",
            "description": "Email",
            "createdAt": "2025-03-01T20:01:05.000000Z",
            "updatedAt": "2025-03-01T20:01:05.000000Z"
        },
        {
            "id": "9e5489d0-515c-49e9-b44e-126b5766ad4f",
            "title": "Events",
            "color": "#A7CBB7",
            "description": "Events",
            "createdAt": "2025-03-01T20:01:05.000000Z",
            "updatedAt": "2025-03-01T20:01:05.000000Z"
        },
        {
            "id": "9e5489d0-507e-460a-adc0-c557d86651d5",
            "title": "Product Feature",
            "color": "#BE94F6",
            "description": "Product Feature",
            "createdAt": "2025-03-01T20:01:05.000000Z",
            "updatedAt": "2025-03-01T20:01:05.000000Z"
        },
        {
            "id": "9e5489d0-5115-4627-ab4e-c532d1a051e2",
            "title": "Sample",
            "color": "#4D44D5",
            "description": "Sample",
            "createdAt": "2025-03-01T20:01:05.000000Z",
            "updatedAt": "2025-03-01T20:01:05.000000Z"
        }
    ],
    "links": {
        "first": "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/labels?filter%5Btitle%5D=%22Email%22&filter%5Bcolor%5D=%22%2300eeff%22&filter%5Bdescription%5D=%22email%22&filter%5BcreatedAt%5D=%3E2025-01-01&filter%5BupdatedAt%5D=%3E2025-01-01&sort=-createdAt%2Ctitle&page=1",
        "last": "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/labels?filter%5Btitle%5D=%22Email%22&filter%5Bcolor%5D=%22%2300eeff%22&filter%5Bdescription%5D=%22email%22&filter%5BcreatedAt%5D=%3E2025-01-01&filter%5BupdatedAt%5D=%3E2025-01-01&sort=-createdAt%2Ctitle&page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/labels?filter%5Btitle%5D=%22Email%22&filter%5Bcolor%5D=%22%2300eeff%22&filter%5Bdescription%5D=%22email%22&filter%5BcreatedAt%5D=%3E2025-01-01&filter%5BupdatedAt%5D=%3E2025-01-01&sort=-createdAt%2Ctitle&page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/labels",
        "per_page": 30,
        "to": 7,
        "total": 7
    }
}
 

Request      

GET v1/team/{team_id}/labels

Headers

Authorization      

Example: Bearer {PERSONAL_ACCESS_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

team_id   string   

The ID of the team. Example: 9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8

Query Parameters

filter[title]   string  optional  

Label Title. Will return any Labels where Title contains the provided value. Wildcards are not needed. Example: "Email"

filter[color]   string  optional  

Label Color. Will return any Labels that include the provided color. Wildcards are not needed. Example: "#00eeff"

filter[description]   string  optional  

Label Description. Will return any Labels that where Description contains the provided value. Wildcards are not needed. Example: "email"

filter[createdBy]   string  optional  

ID of the user that created the Label.

filter[updatedBy]   string  optional  

ID of the use that last updated the Label.

filter[createdAt]   string  optional  

Date the Label was created. You can filter for a specific date or before/after a certain date by prefixing with > or <. Example: >2025-01-01

filter[updatedAt]   string  optional  

Date the Label was updated. You can filter for a specific date or before/after a certain date by prefixing with > or <. Example: >2025-01-01

sort   string  optional  

Will Sort the results by title, color, createdAt, or updatedAt. Comma seperated. Prefix with - to sort descending. Example: -createdAt,title

Create a Team Label

requires authentication

Example request:
curl --request POST \
    "https://api.301.pro/v1/team/edab8065-3013-433a-84a4-e81a5ca6c949/labels" \
    --header "Authorization: Bearer {PERSONAL_ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"title\": \"Documentation\",
    \"color\": \"#fbf323\"
}"
const url = new URL(
    "https://api.301.pro/v1/team/edab8065-3013-433a-84a4-e81a5ca6c949/labels"
);

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

let body = {
    "title": "Documentation",
    "color": "#fbf323"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.301.pro/v1/team/edab8065-3013-433a-84a4-e81a5ca6c949/labels';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {PERSONAL_ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'title' => 'Documentation',
            'color' => '#fbf323',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.301.pro/v1/team/edab8065-3013-433a-84a4-e81a5ca6c949/labels'
payload = {
    "title": "Documentation",
    "color": "#fbf323"
}
headers = {
  'Authorization': 'Bearer {PERSONAL_ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (200):


{
    "id": "9e522ea0-7f25-4962-8af0-333e81eb6fd2",
    "title": "Blog",
    "color": "#356237",
    "description": "Blog",
    "createdAt": "2025-02-28T15:54:27.000000Z",
    "updatedAt": "2025-02-28T15:54:27.000000Z"
}
 

Request      

POST v1/team/{team_id}/labels

Headers

Authorization      

Example: Bearer {PERSONAL_ACCESS_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

team_id   string   

The ID of the team. Example: edab8065-3013-433a-84a4-e81a5ca6c949

Body Parameters

title   string   

The title of the Label. Example: Documentation

color   string  optional  

The color of the Label. Example: #fbf323

description   string  optional  

The description of the Label.

Retrieve a Team Label

requires authentication

Example request:
curl --request GET \
    --get "https://api.301.pro/v1/team/e5ab8065-3013-433a-84a4-e81a5ca6c949/labels/c6ab8065-3013-433a-84a4-e81a5ca6c949?include=include%3Dassignments" \
    --header "Authorization: Bearer {PERSONAL_ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.301.pro/v1/team/e5ab8065-3013-433a-84a4-e81a5ca6c949/labels/c6ab8065-3013-433a-84a4-e81a5ca6c949"
);

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

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.301.pro/v1/team/e5ab8065-3013-433a-84a4-e81a5ca6c949/labels/c6ab8065-3013-433a-84a4-e81a5ca6c949';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {PERSONAL_ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'include' => 'include=assignments',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.301.pro/v1/team/e5ab8065-3013-433a-84a4-e81a5ca6c949/labels/c6ab8065-3013-433a-84a4-e81a5ca6c949'
params = {
  'include': 'include=assignments',
}
headers = {
  'Authorization': 'Bearer {PERSONAL_ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()

Example response (200):


{
    "id": "9e522ea0-7f25-4962-8af0-333e81eb6fd2",
    "title": "Blog",
    "color": "#356237",
    "description": "Blog",
    "createdAt": "2025-02-28T15:54:27.000000Z",
    "updatedAt": "2025-02-28T15:54:27.000000Z"
}
 

Request      

GET v1/team/{team_id}/labels/{id}

Headers

Authorization      

Example: Bearer {PERSONAL_ACCESS_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

team_id   string   

The ID of the team. Example: e5ab8065-3013-433a-84a4-e81a5ca6c949

id   string   

The ID of the Label. Example: c6ab8065-3013-433a-84a4-e81a5ca6c949

Query Parameters

include   string  optional  

Retrieve relationships. Allowed relationships: assignments - include label assignment relationships. Example: include=assignments

Update a Team Label

requires authentication

Example request:
curl --request PUT \
    "https://api.301.pro/v1/team/edab8065-3013-433a-84a4-e81a5ca6c949/labels/c6ab8065-3013-433a-84a4-e81a5ca6c949" \
    --header "Authorization: Bearer {PERSONAL_ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"title\": \"Documentation\",
    \"color\": \"#fbf323\"
}"
const url = new URL(
    "https://api.301.pro/v1/team/edab8065-3013-433a-84a4-e81a5ca6c949/labels/c6ab8065-3013-433a-84a4-e81a5ca6c949"
);

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

let body = {
    "title": "Documentation",
    "color": "#fbf323"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.301.pro/v1/team/edab8065-3013-433a-84a4-e81a5ca6c949/labels/c6ab8065-3013-433a-84a4-e81a5ca6c949';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {PERSONAL_ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'title' => 'Documentation',
            'color' => '#fbf323',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.301.pro/v1/team/edab8065-3013-433a-84a4-e81a5ca6c949/labels/c6ab8065-3013-433a-84a4-e81a5ca6c949'
payload = {
    "title": "Documentation",
    "color": "#fbf323"
}
headers = {
  'Authorization': 'Bearer {PERSONAL_ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()

Example response (200):


{
    "id": "9e522ea0-7f25-4962-8af0-333e81eb6fd2",
    "title": "Blog",
    "color": "#356237",
    "description": "Blog",
    "createdAt": "2025-02-28T15:54:27.000000Z",
    "updatedAt": "2025-02-28T15:54:27.000000Z"
}
 

Request      

PUT v1/team/{team_id}/labels/{id}

PATCH v1/team/{team_id}/labels/{id}

Headers

Authorization      

Example: Bearer {PERSONAL_ACCESS_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

team_id   string   

The ID of the team. Example: edab8065-3013-433a-84a4-e81a5ca6c949

id   string   

The ID of the Label. Example: c6ab8065-3013-433a-84a4-e81a5ca6c949

Body Parameters

title   string   

The title of the Label. Example: Documentation

color   string  optional  

The color of the Label. Example: #fbf323

description   string  optional  

The description of the Label.

Delete a Team Label

requires authentication

Deletes a team label and optionally all label assignments

Example request:
curl --request DELETE \
    "https://api.301.pro/v1/team/edab8065-3013-433a-84a4-e81a5ca6c949/labels/c6ab8065-3013-433a-84a4-e81a5ca6c949?force=true" \
    --header "Authorization: Bearer {PERSONAL_ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.301.pro/v1/team/edab8065-3013-433a-84a4-e81a5ca6c949/labels/c6ab8065-3013-433a-84a4-e81a5ca6c949"
);

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

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

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.301.pro/v1/team/edab8065-3013-433a-84a4-e81a5ca6c949/labels/c6ab8065-3013-433a-84a4-e81a5ca6c949';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {PERSONAL_ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'force' => 'true',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.301.pro/v1/team/edab8065-3013-433a-84a4-e81a5ca6c949/labels/c6ab8065-3013-433a-84a4-e81a5ca6c949'
params = {
  'force': 'true',
}
headers = {
  'Authorization': 'Bearer {PERSONAL_ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers, params=params)
response.json()

Example response (200):


{
    "status": "success"
}
 

Request      

DELETE v1/team/{team_id}/labels/{id}

Headers

Authorization      

Example: Bearer {PERSONAL_ACCESS_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

team_id   string   

The ID of the team. Example: edab8065-3013-433a-84a4-e81a5ca6c949

id   string   

The ID of the Label. Example: c6ab8065-3013-433a-84a4-e81a5ca6c949

Query Parameters

force   string  optional  

must equal "true" exactly to Remove label and all of its assignments (force=true). Example: true

Team Pixels

Retrieve a list of Team Pixel

requires authentication

Example request:
curl --request GET \
    --get "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/pixels?filter%5BpixelType%5D=FacebookPixel&filter%5BcreatedAt%5D=%3E2025-01-01&filter%5BupdatedAt%5D=%3C2025-06-01" \
    --header "Authorization: Bearer {PERSONAL_ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/pixels"
);

const params = {
    "filter[pixelType]": "FacebookPixel",
    "filter[createdAt]": ">2025-01-01",
    "filter[updatedAt]": "<2025-06-01",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/pixels';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {PERSONAL_ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'filter[pixelType]' => 'FacebookPixel',
            'filter[createdAt]' => '>2025-01-01',
            'filter[updatedAt]' => '<2025-06-01',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/pixels'
params = {
  'filter[pixelType]': 'FacebookPixel',
  'filter[createdAt]': '>2025-01-01',
  'filter[updatedAt]': '<2025-06-01',
}
headers = {
  'Authorization': 'Bearer {PERSONAL_ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()

Example response (200):


{
    "data": [
        {
            "id": "9e5c7b08-b278-4450-9bb3-2f4537518919",
            "subjectType": "team",
            "subjectId": "9e522e02-f1c7-4c1e-ba56-bafdfa930a69",
            "pixelType": "FacebookPixel",
            "pixelTypeDisplay": "Facebook Pixel",
            "pixelTrackingId": "5884321354687987",
            "description": "Team Facebook Pixel",
            "createdAt": "2025-03-05T18:46:23.000000Z",
            "updatedAt": "2025-03-05T18:46:23.000000Z",
            "createdBy": "9e522e02-f0fb-494f-976b-c10ccb498a8b",
            "updatedBy": "9e522e02-f0fb-494f-976b-c10ccb498a8b"
        }
    ],
    "links": {
        "first": "https://api.301.pro/v1/team/9e522e02-f1c7-4c1e-ba56-bafdfa930a69/pixels?page=1",
        "last": "https://api.301.pro/v1/team/9e522e02-f1c7-4c1e-ba56-bafdfa930a69/pixels?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "https://api.301.pro/v1/team/9e522e02-f1c7-4c1e-ba56-bafdfa930a69/pixels?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "https://api.301.pro/v1/team/9e522e02-f1c7-4c1e-ba56-bafdfa930a69/pixels",
        "per_page": 15,
        "to": 1,
        "total": 1
    }
}
 

Request      

GET v1/team/{team_id}/pixels

Headers

Authorization      

Example: Bearer {PERSONAL_ACCESS_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

team_id   string   

The ID of the team. Example: 9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8

Query Parameters

filter[pixelType]   string  optional  

Pixel Type Example: FacebookPixel

filter[pixelTrackingId]   string  optional  

Pixel Tracking Id

filter[createdBy]   string  optional  

ID of the user that created the Team Pixel.

filter[updatedBy]   string  optional  

ID of the user that recently the Team Pixel.

filter[createdAt]   string  optional  

Filter by date of creation Team Pixel. You can filter for a specific date or before/after a certain date by prefixing with > or < Example: >2025-01-01

filter[updatedAt]   string  optional  

Filter by last updated date Team Pixel. You can filter for a specific date or before/after a certain date by prefixing with > or < Example: <2025-06-01

Create Team Pixel

requires authentication

Create a new Team Pixel.

Example request:
curl --request POST \
    "https://api.301.pro/v1/team/59f6fc75-893b-4452-88fe-3f3b68ab98d3/pixels" \
    --header "Authorization: Bearer {PERSONAL_ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"pixelType\": \"FacebookPixel\",
    \"pixelTrackingId\": \"282987392888293\"
}"
const url = new URL(
    "https://api.301.pro/v1/team/59f6fc75-893b-4452-88fe-3f3b68ab98d3/pixels"
);

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

let body = {
    "pixelType": "FacebookPixel",
    "pixelTrackingId": "282987392888293"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.301.pro/v1/team/59f6fc75-893b-4452-88fe-3f3b68ab98d3/pixels';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {PERSONAL_ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'pixelType' => 'FacebookPixel',
            'pixelTrackingId' => '282987392888293',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.301.pro/v1/team/59f6fc75-893b-4452-88fe-3f3b68ab98d3/pixels'
payload = {
    "pixelType": "FacebookPixel",
    "pixelTrackingId": "282987392888293"
}
headers = {
  'Authorization': 'Bearer {PERSONAL_ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (200):


{
    "id": "9e5c7b08-b278-4450-9bb3-2f4537518919",
    "subjectType": "team",
    "subjectId": "9e522e02-f1c7-4c1e-ba56-bafdfa930a69",
    "pixelType": "FacebookPixel",
    "pixelTypeDisplay": "Facebook Pixel",
    "pixelTrackingId": "5884321354687987",
    "description": "Facebook Pixel",
    "createdAt": "2025-03-05T18:46:23.000000Z",
    "updatedAt": "2025-03-05T18:46:23.000000Z",
    "createdBy": "9e522e02-f0fb-494f-976b-c10ccb498a8b",
    "updatedBy": "9e522e02-f0fb-494f-976b-c10ccb498a8b"
}
 

Request      

POST v1/team/{team_id}/pixels

Headers

Authorization      

Example: Bearer {PERSONAL_ACCESS_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

team_id   string   

The uuid of the team Example: 59f6fc75-893b-4452-88fe-3f3b68ab98d3

Body Parameters

pixelType   string   

The Type Of Pixel Example: FacebookPixel

pixelTrackingId   string   

The Pixel Tracking Id Example: 282987392888293

description   string  optional  

The description of the Team Pixel

Retrieve a Team Pixel

requires authentication

Example request:
curl --request GET \
    --get "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/pixels/9e56b73b-06ce-48fd-ab99-d740ebff34d0" \
    --header "Authorization: Bearer {PERSONAL_ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/pixels/9e56b73b-06ce-48fd-ab99-d740ebff34d0"
);

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/pixels/9e56b73b-06ce-48fd-ab99-d740ebff34d0';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {PERSONAL_ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/pixels/9e56b73b-06ce-48fd-ab99-d740ebff34d0'
headers = {
  'Authorization': 'Bearer {PERSONAL_ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200):


{
    "id": "9e5c7b08-b278-4450-9bb3-2f4537518919",
    "subjectType": "team",
    "subjectId": "9e522e02-f1c7-4c1e-ba56-bafdfa930a69",
    "pixelType": "FacebookPixel",
    "pixelTypeDisplay": "Facebook Pixel",
    "pixelTrackingId": "5884321354687987",
    "description": "Facebook Pixel",
    "createdAt": "2025-03-05T18:46:23.000000Z",
    "updatedAt": "2025-03-05T18:46:23.000000Z",
    "createdBy": "9e522e02-f0fb-494f-976b-c10ccb498a8b",
    "updatedBy": "9e522e02-f0fb-494f-976b-c10ccb498a8b"
}
 

Request      

GET v1/team/{team_id}/pixels/{id}

Headers

Authorization      

Example: Bearer {PERSONAL_ACCESS_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

team_id   string   

The ID of the team. Example: 9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8

id   string   

The ID of the pixel. Example: 9e56b73b-06ce-48fd-ab99-d740ebff34d0

Update Team Pixel

requires authentication

Update an existing Team Pixel.

Example request:
curl --request PUT \
    "https://api.301.pro/v1/team/2eb1b2a3-6fcd-4a31-8b5e-7b0344acee45/pixels/dad8adb9-5482-4410-a20b-155e3a77c59c" \
    --header "Authorization: Bearer {PERSONAL_ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"pixelType\": null,
    \"pixelTrackingId\": null
}"
const url = new URL(
    "https://api.301.pro/v1/team/2eb1b2a3-6fcd-4a31-8b5e-7b0344acee45/pixels/dad8adb9-5482-4410-a20b-155e3a77c59c"
);

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

let body = {
    "pixelType": null,
    "pixelTrackingId": null
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.301.pro/v1/team/2eb1b2a3-6fcd-4a31-8b5e-7b0344acee45/pixels/dad8adb9-5482-4410-a20b-155e3a77c59c';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {PERSONAL_ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'pixelType' => null,
            'pixelTrackingId' => null,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.301.pro/v1/team/2eb1b2a3-6fcd-4a31-8b5e-7b0344acee45/pixels/dad8adb9-5482-4410-a20b-155e3a77c59c'
payload = {
    "pixelType": null,
    "pixelTrackingId": null
}
headers = {
  'Authorization': 'Bearer {PERSONAL_ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()

Example response (200):


{
    "id": "9e5c7b08-b278-4450-9bb3-2f4537518919",
    "subjectType": "team",
    "subjectId": "9e522e02-f1c7-4c1e-ba56-bafdfa930a69",
    "pixelType": "FacebookPixel",
    "pixelTypeDisplay": "Facebook Pixel",
    "pixelTrackingId": "5884321354687987",
    "description": "Facebook Pixel",
    "createdAt": "2025-03-05T18:46:23.000000Z",
    "updatedAt": "2025-03-05T18:46:23.000000Z",
    "createdBy": "9e522e02-f0fb-494f-976b-c10ccb498a8b",
    "updatedBy": "9e522e02-f0fb-494f-976b-c10ccb498a8b"
}
 

Request      

PUT v1/team/{team_id}/pixels/{id}

PATCH v1/team/{team_id}/pixels/{id}

Headers

Authorization      

Example: Bearer {PERSONAL_ACCESS_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

team_id   string   

The uuid of the team Example: 2eb1b2a3-6fcd-4a31-8b5e-7b0344acee45

id   string   

The uuid of the Team Pixel Example: dad8adb9-5482-4410-a20b-155e3a77c59c

Body Parameters

pixelType   string   

The Type Of Pixel

pixelTrackingId   string   

The Pixel Tracking Id

description   string  optional  

Description of the Pixel

Permanently Delete Team Pixel

requires authentication

Permanently delete a Team Pixel

Example request:
curl --request DELETE \
    "https://api.301.pro/v1/team/c1244b55-0287-402f-b9a4-6e25a1323f25/pixels/65439bba-bfd2-4bd3-b9a8-144ec2948214/force" \
    --header "Authorization: Bearer {PERSONAL_ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.301.pro/v1/team/c1244b55-0287-402f-b9a4-6e25a1323f25/pixels/65439bba-bfd2-4bd3-b9a8-144ec2948214/force"
);

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

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.301.pro/v1/team/c1244b55-0287-402f-b9a4-6e25a1323f25/pixels/65439bba-bfd2-4bd3-b9a8-144ec2948214/force';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {PERSONAL_ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.301.pro/v1/team/c1244b55-0287-402f-b9a4-6e25a1323f25/pixels/65439bba-bfd2-4bd3-b9a8-144ec2948214/force'
headers = {
  'Authorization': 'Bearer {PERSONAL_ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()

Example response (200):


{
    "status": "success"
}
 

Request      

DELETE v1/team/{team_id}/pixels/{pixel_id}/force

Headers

Authorization      

Example: Bearer {PERSONAL_ACCESS_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

team_id   string   

The uuid of the team Example: c1244b55-0287-402f-b9a4-6e25a1323f25

pixel_id   string   

The uuid of the Team Pixel Example: 65439bba-bfd2-4bd3-b9a8-144ec2948214

ProLinks

requires authentication

Returns ProLinks for the specified team. ProLinks can be filtered and ordered.

Example request:
curl --request GET \
    --get "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/prolinks?filter%5Bstatus%5D=published&filter%5BcreatedAt%5D=%3E2025-01-01&filter%5BupdatedAt%5D=%3C2025-03-01&sort=-updatedAt%2CurlKey" \
    --header "Authorization: Bearer {PERSONAL_ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/prolinks"
);

const params = {
    "filter[status]": "published",
    "filter[createdAt]": ">2025-01-01",
    "filter[updatedAt]": "<2025-03-01",
    "sort": "-updatedAt,urlKey",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/prolinks';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {PERSONAL_ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'filter[status]' => 'published',
            'filter[createdAt]' => '>2025-01-01',
            'filter[updatedAt]' => '<2025-03-01',
            'sort' => '-updatedAt,urlKey',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/prolinks'
params = {
  'filter[status]': 'published',
  'filter[createdAt]': '>2025-01-01',
  'filter[updatedAt]': '<2025-03-01',
  'sort': '-updatedAt,urlKey',
}
headers = {
  'Authorization': 'Bearer {PERSONAL_ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "data": [
        {
            "id": "9e5489d2-9835-4002-9e9f-870ad16d2be6",
            "teamId": "9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8",
            "campaignId": "9e5489d0-5268-45d5-a79a-75e09a3e9422",
            "apiHash": "qHn4x3rZjTQ8egXbwfumFhW72taG9P",
            "urlKey": "qvy2R",
            "destinationUrl": "https://whatis.301.pro/pricing",
            "domainId": "9e522dff-8918-4dd7-a763-d8e4d7c4cefa",
            "domainHost": "demo.301.pro",
            "status": "published",
            "title": "Pricing | 301Pro",
            "description": "Explore our flexible plans and pricing options crafted to suit your specific needs. With 301 Pro, you can achieve powerful link redirection optimization at a",
            "destinationMetaName": {
                "robots": "follow, index, max-snippet:-1, max-video-preview:-1, max-image-preview:large",
                "viewport": "width=device-width, initial-scale=1, minimum-scale=1",
                "generator": "WordPress 6.7.2",
                "description": "Explore our flexible plans and pricing options crafted to suit your specific needs. With 301 Pro, you can achieve powerful link redirection optimization at a",
                "twitter:card": "summary_large_image",
                "twitter:site": "@301Prof",
                "twitter:data1": "2 minutes",
                "twitter:image": "https://301pro.com/wp-content/uploads/2024/12/301-Pro-.jpg",
                "twitter:title": "Pricing | 301Pro",
                "twitter:label1": "Time to read",
                "twitter:creator": "@301Prof",
                "twitter:description": "Explore our flexible plans and pricing options crafted to suit your specific needs. With 301 Pro, you can achieve powerful link redirection optimization at a",
                "msapplication-TileImage": "https://301pro.com/wp-content/uploads/2024/12/cropped-New-301-Logo-270x270.webp"
            },
            "destinationMetaProperty": {
                "og:url": "https://301pro.com/pricing/",
                "og:type": "article",
                "og:image": "https://301pro.com/wp-content/uploads/2024/12/301-Pro-.jpg",
                "og:title": "Pricing | 301Pro",
                "og:locale": "en_US",
                "og:image:alt": "Pricing",
                "og:site_name": "301 ProLink Redirection",
                "og:image:type": "image/jpeg",
                "og:description": "Explore our flexible plans and pricing options crafted to suit your specific needs. With 301 Pro, you can achieve powerful link redirection optimization at a",
                "og:image:width": "1024",
                "og:image:height": "575",
                "og:updated_time": "2025-02-18T14:08:24-07:00",
                "og:image:secure_url": "https://301pro.com/wp-content/uploads/2024/12/301-Pro-.jpg",
                "article:modified_time": "2025-02-18T14:08:24-07:00",
                "article:published_time": "2024-10-23T14:01:21-07:00"
            },
            "clicks": 0,
            "createdAt": "2025-03-01T20:01:07.000000Z",
            "updatedAt": "2025-03-01T20:01:09.000000Z"
        }
    ],
    "links": {
        "first": "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/prolinks?page=1",
        "last": "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/prolinks?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/prolinks?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/prolinks",
        "per_page": 15,
        "to": 1,
        "total": 1
    }
}
 

requires authentication

Creates a new ProLink for the specified team. A domain host must be provided.

Example request:
curl --request POST \
    "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/prolinks" \
    --header "Authorization: Bearer {PERSONAL_ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"domain\": \"example.com\",
    \"urlKey\": \"my-key\",
    \"destinationUrl\": \"https:\\/\\/example.com\\/destination\",
    \"title\": \"About Us\",
    \"description\": \"This is a description for the About Us section\",
    \"campaignId\": \"568afe18-1f03-4263-9ef6-c3054b6856bf\"
}"
const url = new URL(
    "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/prolinks"
);

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

let body = {
    "domain": "example.com",
    "urlKey": "my-key",
    "destinationUrl": "https:\/\/example.com\/destination",
    "title": "About Us",
    "description": "This is a description for the About Us section",
    "campaignId": "568afe18-1f03-4263-9ef6-c3054b6856bf"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/prolinks';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {PERSONAL_ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'domain' => 'example.com',
            'urlKey' => 'my-key',
            'destinationUrl' => 'https://example.com/destination',
            'title' => 'About Us',
            'description' => 'This is a description for the About Us section',
            'campaignId' => '568afe18-1f03-4263-9ef6-c3054b6856bf',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/prolinks'
payload = {
    "domain": "example.com",
    "urlKey": "my-key",
    "destinationUrl": "https:\/\/example.com\/destination",
    "title": "About Us",
    "description": "This is a description for the About Us section",
    "campaignId": "568afe18-1f03-4263-9ef6-c3054b6856bf"
}
headers = {
  'Authorization': 'Bearer {PERSONAL_ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (200):


{
    "id": "9e549072-952d-4c50-befa-90d9dc7167c9",
    "teamId": "9e522e02-f1c7-4c1e-ba56-bafdfa930a69",
    "campaignId": "9e523575-816f-4c80-8a8e-8884008befaf",
    "apiHash": "4JjvFcN2MtC7D6TBx5yfLReprmaPQZ",
    "urlKey": "XBujY",
    "destinationUrl": "https://yahoo.com/sports/",
    "domainId": "9e522dff-8918-4dd7-a763-d8e4d7c4cefa",
    "domainHost": "demo.301.pro",
    "status": "published",
    "title": "Yahoo Sports: News, Scores, Video, Fantasy Games, Schedules & More - Yahoo Sports",
    "description": "Sports News, Scores, Fantasy Games",
    "destinationMetaName": {
        "keywords": ", ",
        "viewport": "width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no",
        "description": "Sports News, Scores, Fantasy Games",
        "theme-color": "#400090",
        "twitter:card": "summary",
        "msvalidate.01": "A9862C0E6E1BE95BCE0BF3D0298FD58B",
        "twitter:title": "Yahoo Sports: News, Scores, Video, Fantasy Games, Schedules & More",
        "apple-itunes-app": "app-id=286058814,app-argument=ysportacular://,affiliate-data=ct=syc-web-smartbanner",
        "application-name": "Yahoo Sports: News, Scores, Video, Fantasy Games, Schedules & More - Yahoo Sports",
        "twitter:app:country": "US",
        "twitter:description": "Sports News, Scores, Fantasy Games",
        "twitter:app:id:iphone": "286058814",
        "oath:guce:consent-host": "guce.yahoo.com",
        "twitter:app:url:iphone": "ysportacular://",
        "msapplication-TileColor": "#6e329d",
        "msapplication-TileImage": "https://s.yimg.com/cv/apiv2/default/icons/sports-144.png",
        "twitter:app:name:iphone": "Yahoo Sports",
        "google-site-verification": "mTW0FtAbvsS0jRQoufwNkstxfraQV42XEm8bjebMtaI",
        "twitter:app:id:googleplay": "com.yahoo.mobile.client.android.sportacular",
        "twitter:app:url:googleplay": "https://play.google.com/store/apps/details?id=com.yahoo.mobile.client.android.sportacular",
        "twitter:app:name:googleplay": "Yahoo Sports"
    },
    "destinationMetaProperty": {
        "og:type": "website",
        "fb:pages": "37510781596, 115396848484203, 119530628062118, 116456261706731, 1516980071665393, 110394988999413, 112156825484904, 228108177528276, 126435880711",
        "og:image": "https://s.yimg.com/it/api/res/1.2/Nm.Q9ktBFq1bB8joIv0bCw--~A/YXBwaWQ9eW5ld3M7dz0xMjAwO2g9NjMwO3E9MTAw/https://s.yimg.com/cv/apiv2/social/images/yahoo_default_logo.png",
        "og:title": "Yahoo Sports: News, Scores, Video, Fantasy Games, Schedules & More",
        "fb:app_id": "90376669494",
        "al:ios:url": "ysportacular://",
        "al:web:url": "https://sports.yahoo.com/",
        "og:site_name": "Yahoo Sports",
        "twitter:site": "@YahooSports",
        "al:android:url": "ysportacular://",
        "og:description": "Sports News, Scores, Fantasy Games",
        "og:image:width": "630",
        "al:ios:app_name": "Yahoo Sports",
        "og:image:height": "1200",
        "al:android:package": "com.yahoo.mobile.client.android.sportacular",
        "al:android:app_name": "Yahoo Sports",
        "al:ios:app_store_id": "286058814"
    },
    "clicks": 0,
    "createdAt": "2025-03-01T20:19:38.000000Z",
    "updatedAt": "2025-03-01T20:19:42.000000Z"
}
 

requires authentication

Example request:
curl --request GET \
    --get "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/prolinks/9e549072-952d-4c50-befa-90d9dc7167c9" \
    --header "Authorization: Bearer {PERSONAL_ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/prolinks/9e549072-952d-4c50-befa-90d9dc7167c9"
);

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/prolinks/9e549072-952d-4c50-befa-90d9dc7167c9';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {PERSONAL_ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/prolinks/9e549072-952d-4c50-befa-90d9dc7167c9'
headers = {
  'Authorization': 'Bearer {PERSONAL_ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200):


{
    "id": "9e549072-952d-4c50-befa-90d9dc7167c9",
    "teamId": "9e522e02-f1c7-4c1e-ba56-bafdfa930a69",
    "campaignId": "9e523575-816f-4c80-8a8e-8884008befaf",
    "apiHash": "4JjvFcN2MtC7D6TBx5yfLReprmaPQZ",
    "urlKey": "XBujY",
    "destinationUrl": "https://yahoo.com/sports/",
    "domainId": "9e522dff-8918-4dd7-a763-d8e4d7c4cefa",
    "domainHost": "demo.301.pro",
    "status": "published",
    "title": "Yahoo Sports: News, Scores, Video, Fantasy Games, Schedules & More - Yahoo Sports",
    "description": "Sports News, Scores, Fantasy Games",
    "destinationMetaName": {
        "keywords": ", ",
        "viewport": "width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no",
        "description": "Sports News, Scores, Fantasy Games",
        "theme-color": "#400090",
        "twitter:card": "summary",
        "msvalidate.01": "A9862C0E6E1BE95BCE0BF3D0298FD58B",
        "twitter:title": "Yahoo Sports: News, Scores, Video, Fantasy Games, Schedules & More",
        "apple-itunes-app": "app-id=286058814,app-argument=ysportacular://,affiliate-data=ct=syc-web-smartbanner",
        "application-name": "Yahoo Sports: News, Scores, Video, Fantasy Games, Schedules & More - Yahoo Sports",
        "twitter:app:country": "US",
        "twitter:description": "Sports News, Scores, Fantasy Games",
        "twitter:app:id:iphone": "286058814",
        "oath:guce:consent-host": "guce.yahoo.com",
        "twitter:app:url:iphone": "ysportacular://",
        "msapplication-TileColor": "#6e329d",
        "msapplication-TileImage": "https://s.yimg.com/cv/apiv2/default/icons/sports-144.png",
        "twitter:app:name:iphone": "Yahoo Sports",
        "google-site-verification": "mTW0FtAbvsS0jRQoufwNkstxfraQV42XEm8bjebMtaI",
        "twitter:app:id:googleplay": "com.yahoo.mobile.client.android.sportacular",
        "twitter:app:url:googleplay": "https://play.google.com/store/apps/details?id=com.yahoo.mobile.client.android.sportacular",
        "twitter:app:name:googleplay": "Yahoo Sports"
    },
    "destinationMetaProperty": {
        "og:type": "website",
        "fb:pages": "37510781596, 115396848484203, 119530628062118, 116456261706731, 1516980071665393, 110394988999413, 112156825484904, 228108177528276, 126435880711",
        "og:image": "https://s.yimg.com/it/api/res/1.2/Nm.Q9ktBFq1bB8joIv0bCw--~A/YXBwaWQ9eW5ld3M7dz0xMjAwO2g9NjMwO3E9MTAw/https://s.yimg.com/cv/apiv2/social/images/yahoo_default_logo.png",
        "og:title": "Yahoo Sports: News, Scores, Video, Fantasy Games, Schedules & More",
        "fb:app_id": "90376669494",
        "al:ios:url": "ysportacular://",
        "al:web:url": "https://sports.yahoo.com/",
        "og:site_name": "Yahoo Sports",
        "twitter:site": "@YahooSports",
        "al:android:url": "ysportacular://",
        "og:description": "Sports News, Scores, Fantasy Games",
        "og:image:width": "630",
        "al:ios:app_name": "Yahoo Sports",
        "og:image:height": "1200",
        "al:android:package": "com.yahoo.mobile.client.android.sportacular",
        "al:android:app_name": "Yahoo Sports",
        "al:ios:app_store_id": "286058814"
    },
    "clicks": 0,
    "createdAt": "2025-03-01T20:19:38.000000Z",
    "updatedAt": "2025-03-01T20:19:42.000000Z"
}
 

requires authentication

Example request:
curl --request PUT \
    "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/prolinks/9e549072-952d-4c50-befa-90d9dc7167c9" \
    --header "Authorization: Bearer {PERSONAL_ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"domain\": \"example.com\",
    \"urlKey\": \"my-key\",
    \"destinationUrl\": \"https:\\/\\/example.com\\/destination\",
    \"title\": \"About Us\",
    \"description\": \"This is a description for the About Us section\",
    \"campaignId\": \"568afe18-1f03-4263-9ef6-c3054b6856bf\"
}"
const url = new URL(
    "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/prolinks/9e549072-952d-4c50-befa-90d9dc7167c9"
);

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

let body = {
    "domain": "example.com",
    "urlKey": "my-key",
    "destinationUrl": "https:\/\/example.com\/destination",
    "title": "About Us",
    "description": "This is a description for the About Us section",
    "campaignId": "568afe18-1f03-4263-9ef6-c3054b6856bf"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/prolinks/9e549072-952d-4c50-befa-90d9dc7167c9';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {PERSONAL_ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'domain' => 'example.com',
            'urlKey' => 'my-key',
            'destinationUrl' => 'https://example.com/destination',
            'title' => 'About Us',
            'description' => 'This is a description for the About Us section',
            'campaignId' => '568afe18-1f03-4263-9ef6-c3054b6856bf',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/prolinks/9e549072-952d-4c50-befa-90d9dc7167c9'
payload = {
    "domain": "example.com",
    "urlKey": "my-key",
    "destinationUrl": "https:\/\/example.com\/destination",
    "title": "About Us",
    "description": "This is a description for the About Us section",
    "campaignId": "568afe18-1f03-4263-9ef6-c3054b6856bf"
}
headers = {
  'Authorization': 'Bearer {PERSONAL_ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()

Example response (200):


{
    "id": "9e549072-952d-4c50-befa-90d9dc7167c9",
    "teamId": "9e522e02-f1c7-4c1e-ba56-bafdfa930a69",
    "campaignId": "9e523575-816f-4c80-8a8e-8884008befaf",
    "apiHash": "4JjvFcN2MtC7D6TBx5yfLReprmaPQZ",
    "urlKey": "XBujY",
    "destinationUrl": "https://yahoo.com/sports/",
    "domainId": "9e522dff-8918-4dd7-a763-d8e4d7c4cefa",
    "domainHost": "demo.301.pro",
    "status": "published",
    "title": "Yahoo Sports: News, Scores, Video, Fantasy Games, Schedules & More - Yahoo Sports",
    "description": "Sports News, Scores, Fantasy Games",
    "destinationMetaName": {
        "keywords": ", ",
        "viewport": "width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no",
        "description": "Sports News, Scores, Fantasy Games",
        "theme-color": "#400090",
        "twitter:card": "summary",
        "msvalidate.01": "A9862C0E6E1BE95BCE0BF3D0298FD58B",
        "twitter:title": "Yahoo Sports: News, Scores, Video, Fantasy Games, Schedules & More",
        "apple-itunes-app": "app-id=286058814,app-argument=ysportacular://,affiliate-data=ct=syc-web-smartbanner",
        "application-name": "Yahoo Sports: News, Scores, Video, Fantasy Games, Schedules & More - Yahoo Sports",
        "twitter:app:country": "US",
        "twitter:description": "Sports News, Scores, Fantasy Games",
        "twitter:app:id:iphone": "286058814",
        "oath:guce:consent-host": "guce.yahoo.com",
        "twitter:app:url:iphone": "ysportacular://",
        "msapplication-TileColor": "#6e329d",
        "msapplication-TileImage": "https://s.yimg.com/cv/apiv2/default/icons/sports-144.png",
        "twitter:app:name:iphone": "Yahoo Sports",
        "google-site-verification": "mTW0FtAbvsS0jRQoufwNkstxfraQV42XEm8bjebMtaI",
        "twitter:app:id:googleplay": "com.yahoo.mobile.client.android.sportacular",
        "twitter:app:url:googleplay": "https://play.google.com/store/apps/details?id=com.yahoo.mobile.client.android.sportacular",
        "twitter:app:name:googleplay": "Yahoo Sports"
    },
    "destinationMetaProperty": {
        "og:type": "website",
        "fb:pages": "37510781596, 115396848484203, 119530628062118, 116456261706731, 1516980071665393, 110394988999413, 112156825484904, 228108177528276, 126435880711",
        "og:image": "https://s.yimg.com/it/api/res/1.2/Nm.Q9ktBFq1bB8joIv0bCw--~A/YXBwaWQ9eW5ld3M7dz0xMjAwO2g9NjMwO3E9MTAw/https://s.yimg.com/cv/apiv2/social/images/yahoo_default_logo.png",
        "og:title": "Yahoo Sports: News, Scores, Video, Fantasy Games, Schedules & More",
        "fb:app_id": "90376669494",
        "al:ios:url": "ysportacular://",
        "al:web:url": "https://sports.yahoo.com/",
        "og:site_name": "Yahoo Sports",
        "twitter:site": "@YahooSports",
        "al:android:url": "ysportacular://",
        "og:description": "Sports News, Scores, Fantasy Games",
        "og:image:width": "630",
        "al:ios:app_name": "Yahoo Sports",
        "og:image:height": "1200",
        "al:android:package": "com.yahoo.mobile.client.android.sportacular",
        "al:android:app_name": "Yahoo Sports",
        "al:ios:app_store_id": "286058814"
    },
    "clicks": 0,
    "createdAt": "2025-03-01T20:19:38.000000Z",
    "updatedAt": "2025-03-01T20:19:42.000000Z"
}
 

requires authentication

Example request:
curl --request DELETE \
    "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/prolinks/9e549072-952d-4c50-befa-90d9dc7167c9" \
    --header "Authorization: Bearer {PERSONAL_ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/prolinks/9e549072-952d-4c50-befa-90d9dc7167c9"
);

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

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/prolinks/9e549072-952d-4c50-befa-90d9dc7167c9';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {PERSONAL_ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/prolinks/9e549072-952d-4c50-befa-90d9dc7167c9'
headers = {
  'Authorization': 'Bearer {PERSONAL_ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()

Example response (200):


{
    "status": "success"
}
 

requires authentication

Example request:
curl --request POST \
    "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/prolinks/archive" \
    --header "Authorization: Bearer {PERSONAL_ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"ids\": [
        \"f706b628-8412-4303-b4e1-74c197f1052d\",
        \"889dd662-d418-4c77-a2cd-78553553d6b8\",
        \"59b41355-9c68-473f-883c-0c950501c1da\"
    ]
}"
const url = new URL(
    "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/prolinks/archive"
);

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

let body = {
    "ids": [
        "f706b628-8412-4303-b4e1-74c197f1052d",
        "889dd662-d418-4c77-a2cd-78553553d6b8",
        "59b41355-9c68-473f-883c-0c950501c1da"
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/prolinks/archive';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {PERSONAL_ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'ids' => [
                'f706b628-8412-4303-b4e1-74c197f1052d',
                '889dd662-d418-4c77-a2cd-78553553d6b8',
                '59b41355-9c68-473f-883c-0c950501c1da',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/prolinks/archive'
payload = {
    "ids": [
        "f706b628-8412-4303-b4e1-74c197f1052d",
        "889dd662-d418-4c77-a2cd-78553553d6b8",
        "59b41355-9c68-473f-883c-0c950501c1da"
    ]
}
headers = {
  'Authorization': 'Bearer {PERSONAL_ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (200):


{
    "status": "success"
}
 

requires authentication

Example request:
curl --request POST \
    "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/prolinks/unarchive" \
    --header "Authorization: Bearer {PERSONAL_ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"ids\": [
        \"f706b628-8412-4303-b4e1-74c197f1052d\",
        \"889dd662-d418-4c77-a2cd-78553553d6b8\",
        \"59b41355-9c68-473f-883c-0c950501c1da\"
    ]
}"
const url = new URL(
    "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/prolinks/unarchive"
);

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

let body = {
    "ids": [
        "f706b628-8412-4303-b4e1-74c197f1052d",
        "889dd662-d418-4c77-a2cd-78553553d6b8",
        "59b41355-9c68-473f-883c-0c950501c1da"
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/prolinks/unarchive';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {PERSONAL_ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'ids' => [
                'f706b628-8412-4303-b4e1-74c197f1052d',
                '889dd662-d418-4c77-a2cd-78553553d6b8',
                '59b41355-9c68-473f-883c-0c950501c1da',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/prolinks/unarchive'
payload = {
    "ids": [
        "f706b628-8412-4303-b4e1-74c197f1052d",
        "889dd662-d418-4c77-a2cd-78553553d6b8",
        "59b41355-9c68-473f-883c-0c950501c1da"
    ]
}
headers = {
  'Authorization': 'Bearer {PERSONAL_ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (200):


{
    "status": "success"
}
 

requires authentication

Example request:
curl --request DELETE \
    "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/prolinks/9e549072-952d-4c50-befa-90d9dc7167c9/force" \
    --header "Authorization: Bearer {PERSONAL_ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/prolinks/9e549072-952d-4c50-befa-90d9dc7167c9/force"
);

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

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/prolinks/9e549072-952d-4c50-befa-90d9dc7167c9/force';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {PERSONAL_ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/prolinks/9e549072-952d-4c50-befa-90d9dc7167c9/force'
headers = {
  'Authorization': 'Bearer {PERSONAL_ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()

Example response (200):


{
    "status": "success"
}
 

requires authentication

Example request:
curl --request POST \
    "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/prolinks/9e549072-952d-4c50-befa-90d9dc7167c9/restore" \
    --header "Authorization: Bearer {PERSONAL_ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/prolinks/9e549072-952d-4c50-befa-90d9dc7167c9/restore"
);

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

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/prolinks/9e549072-952d-4c50-befa-90d9dc7167c9/restore';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {PERSONAL_ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/prolinks/9e549072-952d-4c50-befa-90d9dc7167c9/restore'
headers = {
  'Authorization': 'Bearer {PERSONAL_ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers)
response.json()

Example response (200):


{
    "status": "success"
}
 

requires authentication

Assign labels to a ProLink.

Example request:
curl --request POST \
    "https://api.301.pro/v1/team/000de240-990b-4a6b-be68-b0c178b11949/prolinks/a84fd40f-7e0c-4283-af84-069fd9c62b6b/labels/attach" \
    --header "Authorization: Bearer {PERSONAL_ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"ids\": [
        \"9e545a7c-864e-41f4-8f9a-6eeba429f35d\"
    ]
}"
const url = new URL(
    "https://api.301.pro/v1/team/000de240-990b-4a6b-be68-b0c178b11949/prolinks/a84fd40f-7e0c-4283-af84-069fd9c62b6b/labels/attach"
);

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

let body = {
    "ids": [
        "9e545a7c-864e-41f4-8f9a-6eeba429f35d"
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.301.pro/v1/team/000de240-990b-4a6b-be68-b0c178b11949/prolinks/a84fd40f-7e0c-4283-af84-069fd9c62b6b/labels/attach';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {PERSONAL_ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'ids' => [
                '9e545a7c-864e-41f4-8f9a-6eeba429f35d',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.301.pro/v1/team/000de240-990b-4a6b-be68-b0c178b11949/prolinks/a84fd40f-7e0c-4283-af84-069fd9c62b6b/labels/attach'
payload = {
    "ids": [
        "9e545a7c-864e-41f4-8f9a-6eeba429f35d"
    ]
}
headers = {
  'Authorization': 'Bearer {PERSONAL_ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (200):


{
    "status": "success"
}
 

requires authentication

Remove label assignment from a ProLink.

Example request:
curl --request POST \
    "https://api.301.pro/v1/team/000de240-990b-4a6b-be68-b0c178b11949/prolinks/db5e8819-0360-43ca-8743-c72c90f048b4/labels/detach" \
    --header "Authorization: Bearer {PERSONAL_ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"ids\": [
        \"9e545a7c-864e-41f4-8f9a-6eeba429f35d\"
    ]
}"
const url = new URL(
    "https://api.301.pro/v1/team/000de240-990b-4a6b-be68-b0c178b11949/prolinks/db5e8819-0360-43ca-8743-c72c90f048b4/labels/detach"
);

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

let body = {
    "ids": [
        "9e545a7c-864e-41f4-8f9a-6eeba429f35d"
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.301.pro/v1/team/000de240-990b-4a6b-be68-b0c178b11949/prolinks/db5e8819-0360-43ca-8743-c72c90f048b4/labels/detach';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {PERSONAL_ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'ids' => [
                '9e545a7c-864e-41f4-8f9a-6eeba429f35d',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.301.pro/v1/team/000de240-990b-4a6b-be68-b0c178b11949/prolinks/db5e8819-0360-43ca-8743-c72c90f048b4/labels/detach'
payload = {
    "ids": [
        "9e545a7c-864e-41f4-8f9a-6eeba429f35d"
    ]
}
headers = {
  'Authorization': 'Bearer {PERSONAL_ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (200):


{
    "status": "success"
}
 

requires authentication

Add or remove label assignments from a ProLink in a single request.

Example request:
curl --request POST \
    "https://api.301.pro/v1/team/000de240-990b-4a6b-be68-b0c178b11949/prolinks/be372a5b-a793-4d7d-b1f0-94d8fc4c3325/labels/sync" \
    --header "Authorization: Bearer {PERSONAL_ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"ids\": [
        \"9e545a7c-864e-41f4-8f9a-6eeba429f35d\"
    ]
}"
const url = new URL(
    "https://api.301.pro/v1/team/000de240-990b-4a6b-be68-b0c178b11949/prolinks/be372a5b-a793-4d7d-b1f0-94d8fc4c3325/labels/sync"
);

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

let body = {
    "ids": [
        "9e545a7c-864e-41f4-8f9a-6eeba429f35d"
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.301.pro/v1/team/000de240-990b-4a6b-be68-b0c178b11949/prolinks/be372a5b-a793-4d7d-b1f0-94d8fc4c3325/labels/sync';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {PERSONAL_ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'ids' => [
                '9e545a7c-864e-41f4-8f9a-6eeba429f35d',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.301.pro/v1/team/000de240-990b-4a6b-be68-b0c178b11949/prolinks/be372a5b-a793-4d7d-b1f0-94d8fc4c3325/labels/sync'
payload = {
    "ids": [
        "9e545a7c-864e-41f4-8f9a-6eeba429f35d"
    ]
}
headers = {
  'Authorization': 'Bearer {PERSONAL_ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (200):


{
    "status": "success"
}
 

Campaigns

Retrieve a list of Campaigns

requires authentication

Example request:
curl --request GET \
    --get "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/campaigns?filter%5Bstatus%5D=archived&filter%5Bname%5D=%22Email%22&filter%5Bdescription%5D=%22customer%22&filter%5BcreatedBy%5D=568afe18-1f03-4263-9ef6-c3054b6856bf&filter%5BupdatedBy%5D=568afe18-1f03-4263-9ef6-c3054b6856bf&filter%5BcreatedAt%5D=%3E2025-01-01&filter%5BupdatedAt%5D=%3C2025-06-01" \
    --header "Authorization: Bearer {PERSONAL_ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/campaigns"
);

const params = {
    "filter[status]": "archived",
    "filter[name]": ""Email"",
    "filter[description]": ""customer"",
    "filter[createdBy]": "568afe18-1f03-4263-9ef6-c3054b6856bf",
    "filter[updatedBy]": "568afe18-1f03-4263-9ef6-c3054b6856bf",
    "filter[createdAt]": ">2025-01-01",
    "filter[updatedAt]": "<2025-06-01",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/campaigns';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {PERSONAL_ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'filter[status]' => 'archived',
            'filter[name]' => '"Email"',
            'filter[description]' => '"customer"',
            'filter[createdBy]' => '568afe18-1f03-4263-9ef6-c3054b6856bf',
            'filter[updatedBy]' => '568afe18-1f03-4263-9ef6-c3054b6856bf',
            'filter[createdAt]' => '>2025-01-01',
            'filter[updatedAt]' => '<2025-06-01',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/campaigns'
params = {
  'filter[status]': 'archived',
  'filter[name]': '"Email"',
  'filter[description]': '"customer"',
  'filter[createdBy]': '568afe18-1f03-4263-9ef6-c3054b6856bf',
  'filter[updatedBy]': '568afe18-1f03-4263-9ef6-c3054b6856bf',
  'filter[createdAt]': '>2025-01-01',
  'filter[updatedAt]': '<2025-06-01',
}
headers = {
  'Authorization': 'Bearer {PERSONAL_ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "data": [
        {
            "id": "9e5489d0-5268-45d5-a79a-75e09a3e9422",
            "teamId": "9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8",
            "name": "CDE - Click Data Enrichment",
            "description": "Add CDE to each link",
            "status": "published",
            "createdAt": "2025-03-01T20:01:05.000000Z",
            "updatedAt": "2025-03-01T20:01:07.000000Z"
        }
    ],
    "links": {
        "first": "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/campaigns?page=1",
        "last": "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/campaigns?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/campaigns?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/campaigns",
        "per_page": 15,
        "to": 1,
        "total": 1
    }
}
 

Request      

GET v1/team/{team_id}/campaigns

Headers

Authorization      

Example: Bearer {PERSONAL_ACCESS_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

team_id   string   

The ID of the team. Example: 9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8

Query Parameters

filter[status]   string  optional  

Filter by Status. Defaults To published when not provided. Example: archived

Must be one of:
  • draft
  • published
  • deleted
filter[name]   string  optional  

Filter by Campaign name. Wildcards are not needed. Example: "Email"

filter[description]   string  optional  

Filter by Campaign Description. Wildcards are not needed. Example: "customer"

filter[createdBy]   string  optional  

Filter by User ID that created the Campaign. Example: 568afe18-1f03-4263-9ef6-c3054b6856bf

filter[updatedBy]   string  optional  

Filter by User ID that last updated the Campaign. Example: 568afe18-1f03-4263-9ef6-c3054b6856bf

filter[createdAt]   string  optional  

Filter by date the Campaign was created. You can filter for a specific date or before/after a certain date by prefixing with > or <. Example: >2025-01-01

filter[updatedAt]   string  optional  

Filter by date the Campaign was updated. You can filter for a specific date or before/after a certain date by prefixing with > or <. Example: <2025-06-01

Create a Campaign

requires authentication

Example request:
curl --request POST \
    "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/campaigns" \
    --header "Authorization: Bearer {PERSONAL_ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"Email Campaign\",
    \"description\": \"Followup technical support email\'s\"
}"
const url = new URL(
    "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/campaigns"
);

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

let body = {
    "name": "Email Campaign",
    "description": "Followup technical support email's"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/campaigns';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {PERSONAL_ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'name' => 'Email Campaign',
            'description' => 'Followup technical support email\'s',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/campaigns'
payload = {
    "name": "Email Campaign",
    "description": "Followup technical support email's"
}
headers = {
  'Authorization': 'Bearer {PERSONAL_ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (200):


{
    "id": "9e54c5fe-dbf5-4d06-8cef-781bf72b89eb",
    "teamId": "9e54c5e2-e868-4d37-9a0c-66dd0dc3073d",
    "name": "CDE - Click Data Enrichment",
    "description": "Add CDE to each link",
    "status": "published",
    "createdAt": "2025-03-01T22:49:22.000000Z",
    "updatedAt": "2025-03-01T22:49:23.000000Z"
}
 

Request      

POST v1/team/{team_id}/campaigns

Headers

Authorization      

Example: Bearer {PERSONAL_ACCESS_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

team_id   string   

The ID of the team. Example: 9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8

Body Parameters

name   string   

The name of the campaign. Example: Email Campaign

description   string  optional  

nullable The description of the campaign. Example: Followup technical support email's

Retrieve a Campaign

requires authentication

Example request:
curl --request GET \
    --get "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/campaigns/9e54c5fe-dbf5-4d06-8cef-781bf72b89eb" \
    --header "Authorization: Bearer {PERSONAL_ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/campaigns/9e54c5fe-dbf5-4d06-8cef-781bf72b89eb"
);

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/campaigns/9e54c5fe-dbf5-4d06-8cef-781bf72b89eb';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {PERSONAL_ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/campaigns/9e54c5fe-dbf5-4d06-8cef-781bf72b89eb'
headers = {
  'Authorization': 'Bearer {PERSONAL_ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200):


{
    "id": "9e54c5fe-dbf5-4d06-8cef-781bf72b89eb",
    "teamId": "9e54c5e2-e868-4d37-9a0c-66dd0dc3073d",
    "name": "CDE - Click Data Enrichment",
    "description": "Add CDE to each link",
    "status": "published",
    "createdAt": "2025-03-01T22:49:22.000000Z",
    "updatedAt": "2025-03-01T22:49:23.000000Z"
}
 

Request      

GET v1/team/{team_id}/campaigns/{id}

Headers

Authorization      

Example: Bearer {PERSONAL_ACCESS_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

team_id   string   

The ID of the team. Example: 9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8

id   string   

The ID of the campaign. Example: 9e54c5fe-dbf5-4d06-8cef-781bf72b89eb

Update a Campaign

requires authentication

Example request:
curl --request PUT \
    "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/campaigns/9e54c5fe-dbf5-4d06-8cef-781bf72b89eb" \
    --header "Authorization: Bearer {PERSONAL_ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"Email Campaign\",
    \"description\": \"Followup technical support email\'s\"
}"
const url = new URL(
    "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/campaigns/9e54c5fe-dbf5-4d06-8cef-781bf72b89eb"
);

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

let body = {
    "name": "Email Campaign",
    "description": "Followup technical support email's"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/campaigns/9e54c5fe-dbf5-4d06-8cef-781bf72b89eb';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {PERSONAL_ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'name' => 'Email Campaign',
            'description' => 'Followup technical support email\'s',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/campaigns/9e54c5fe-dbf5-4d06-8cef-781bf72b89eb'
payload = {
    "name": "Email Campaign",
    "description": "Followup technical support email's"
}
headers = {
  'Authorization': 'Bearer {PERSONAL_ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()

Example response (200):


{
    "id": "9e54c5fe-dbf5-4d06-8cef-781bf72b89eb",
    "teamId": "9e54c5e2-e868-4d37-9a0c-66dd0dc3073d",
    "name": "CDE - Click Data Enrichment",
    "description": "Add CDE to each link",
    "status": "published",
    "createdAt": "2025-03-01T22:49:22.000000Z",
    "updatedAt": "2025-03-01T22:49:23.000000Z"
}
 

Request      

PUT v1/team/{team_id}/campaigns/{id}

PATCH v1/team/{team_id}/campaigns/{id}

Headers

Authorization      

Example: Bearer {PERSONAL_ACCESS_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

team_id   string   

The ID of the team. Example: 9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8

id   string   

The ID of the campaign. Example: 9e54c5fe-dbf5-4d06-8cef-781bf72b89eb

Body Parameters

name   string   

The name of the campaign. Example: Email Campaign

description   string  optional  

nullable The description of the campaign. Example: Followup technical support email's

Delete a Campaign

requires authentication

Example request:
curl --request DELETE \
    "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/campaigns/9e54c5fe-dbf5-4d06-8cef-781bf72b89eb" \
    --header "Authorization: Bearer {PERSONAL_ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/campaigns/9e54c5fe-dbf5-4d06-8cef-781bf72b89eb"
);

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

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/campaigns/9e54c5fe-dbf5-4d06-8cef-781bf72b89eb';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {PERSONAL_ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/campaigns/9e54c5fe-dbf5-4d06-8cef-781bf72b89eb'
headers = {
  'Authorization': 'Bearer {PERSONAL_ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()

Example response (200):


{
    "status": "success"
}
 

Request      

DELETE v1/team/{team_id}/campaigns/{id}

Headers

Authorization      

Example: Bearer {PERSONAL_ACCESS_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

team_id   string   

The ID of the team. Example: 9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8

id   string   

The ID of the campaign. Example: 9e54c5fe-dbf5-4d06-8cef-781bf72b89eb

Permanently delete a Campaign

requires authentication

Example request:
curl --request DELETE \
    "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/campaigns/9e54c5fe-dbf5-4d06-8cef-781bf72b89eb/force" \
    --header "Authorization: Bearer {PERSONAL_ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/campaigns/9e54c5fe-dbf5-4d06-8cef-781bf72b89eb/force"
);

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

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/campaigns/9e54c5fe-dbf5-4d06-8cef-781bf72b89eb/force';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {PERSONAL_ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/campaigns/9e54c5fe-dbf5-4d06-8cef-781bf72b89eb/force'
headers = {
  'Authorization': 'Bearer {PERSONAL_ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()

Example response (200):


{
    "status": "success"
}
 

Request      

DELETE v1/team/{team_id}/campaigns/{campaign_id}/force

Headers

Authorization      

Example: Bearer {PERSONAL_ACCESS_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

team_id   string   

The ID of the team. Example: 9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8

campaign_id   string   

The ID of the campaign. Example: 9e54c5fe-dbf5-4d06-8cef-781bf72b89eb

Undelete a Campaign

requires authentication

Example request:
curl --request POST \
    "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/campaigns/9e54c5fe-dbf5-4d06-8cef-781bf72b89eb/restore" \
    --header "Authorization: Bearer {PERSONAL_ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/campaigns/9e54c5fe-dbf5-4d06-8cef-781bf72b89eb/restore"
);

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

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/campaigns/9e54c5fe-dbf5-4d06-8cef-781bf72b89eb/restore';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {PERSONAL_ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/campaigns/9e54c5fe-dbf5-4d06-8cef-781bf72b89eb/restore'
headers = {
  'Authorization': 'Bearer {PERSONAL_ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers)
response.json()

Example response (200):


{
    "status": "success"
}
 

Request      

POST v1/team/{team_id}/campaigns/{campaign_id}/restore

Headers

Authorization      

Example: Bearer {PERSONAL_ACCESS_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

team_id   string   

The ID of the team. Example: 9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8

campaign_id   string   

The ID of the campaign. Example: 9e54c5fe-dbf5-4d06-8cef-781bf72b89eb

Campaign Pixels

Retrieve a list of Campaign Pixel

requires authentication

Example request:
curl --request GET \
    --get "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/campaigns/9e54c5fe-dbf5-4d06-8cef-781bf72b89eb/pixels?filter%5BpixelType%5D=FacebookPixel&filter%5BcreatedAt%5D=%3E2025-01-01&filter%5BupdatedAt%5D=%3C2025-06-01" \
    --header "Authorization: Bearer {PERSONAL_ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/campaigns/9e54c5fe-dbf5-4d06-8cef-781bf72b89eb/pixels"
);

const params = {
    "filter[pixelType]": "FacebookPixel",
    "filter[createdAt]": ">2025-01-01",
    "filter[updatedAt]": "<2025-06-01",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/campaigns/9e54c5fe-dbf5-4d06-8cef-781bf72b89eb/pixels';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {PERSONAL_ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'filter[pixelType]' => 'FacebookPixel',
            'filter[createdAt]' => '>2025-01-01',
            'filter[updatedAt]' => '<2025-06-01',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/campaigns/9e54c5fe-dbf5-4d06-8cef-781bf72b89eb/pixels'
params = {
  'filter[pixelType]': 'FacebookPixel',
  'filter[createdAt]': '>2025-01-01',
  'filter[updatedAt]': '<2025-06-01',
}
headers = {
  'Authorization': 'Bearer {PERSONAL_ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()

Example response (200):


{
    "data": [
        {
            "id": "9e5c7b08-b278-4450-9bb3-2f4537518919",
            "subjectType": "campaign",
            "subjectId": "9e522e02-f1c7-4c1e-ba56-bafdfa930a69",
            "pixelType": "FacebookPixel",
            "pixelTypeDisplay": "Facebook Pixel",
            "pixelTrackingId": "5884321354687987",
            "description": "Team Facebook Pixel",
            "createdAt": "2025-03-05T18:46:23.000000Z",
            "updatedAt": "2025-03-05T18:46:23.000000Z",
            "createdBy": "9e522e02-f0fb-494f-976b-c10ccb498a8b",
            "updatedBy": "9e522e02-f0fb-494f-976b-c10ccb498a8b"
        }
    ],
    "links": {
        "first": "https://api.301.pro/v1/team/9e522e02-f1c7-4c1e-ba56-bafdfa930a69/pixels?page=1",
        "last": "https://api.301.pro/v1/team/9e522e02-f1c7-4c1e-ba56-bafdfa930a69/pixels?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "https://api.301.pro/v1/team/9e522e02-f1c7-4c1e-ba56-bafdfa930a69/pixels?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "https://api.301.pro/v1/team/9e522e02-f1c7-4c1e-ba56-bafdfa930a69/pixels",
        "per_page": 15,
        "to": 1,
        "total": 1
    }
}
 

Request      

GET v1/team/{team_id}/campaigns/{campaign_id}/pixels

Headers

Authorization      

Example: Bearer {PERSONAL_ACCESS_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

team_id   string   

The ID of the team. Example: 9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8

campaign_id   string   

The ID of the campaign. Example: 9e54c5fe-dbf5-4d06-8cef-781bf72b89eb

Query Parameters

filter[pixelType]   string  optional  

Pixel Type Example: FacebookPixel

filter[pixelTrackingId]   string  optional  

Pixel Tracking Id

filter[createdBy]   string  optional  

ID of the user that created the Campaign Pixel.

filter[updatedBy]   string  optional  

ID of the user that recently the Campaign Pixel.

filter[createdAt]   string  optional  

Filter by date of creation Campaign Pixel. You can filter for a specific date or before/after a certain date by prefixing with > or < Example: >2025-01-01

filter[updatedAt]   string  optional  

Filter by last updated date Campaign Pixel. You can filter for a specific date or before/after a certain date by prefixing with > or < Example: <2025-06-01

Create Campaign Pixel

requires authentication

Create a new Campaign Pixel.

Example request:
curl --request POST \
    "https://api.301.pro/v1/team/5fbc5b68-720d-4cf6-92dd-1c012ad1b5af/campaigns/9e54c5fe-dbf5-4d06-8cef-781bf72b89eb/pixels" \
    --header "Authorization: Bearer {PERSONAL_ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"pixelType\": \"FacebookPixel\",
    \"pixelTrackingId\": \"282987392888293\"
}"
const url = new URL(
    "https://api.301.pro/v1/team/5fbc5b68-720d-4cf6-92dd-1c012ad1b5af/campaigns/9e54c5fe-dbf5-4d06-8cef-781bf72b89eb/pixels"
);

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

let body = {
    "pixelType": "FacebookPixel",
    "pixelTrackingId": "282987392888293"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.301.pro/v1/team/5fbc5b68-720d-4cf6-92dd-1c012ad1b5af/campaigns/9e54c5fe-dbf5-4d06-8cef-781bf72b89eb/pixels';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {PERSONAL_ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'pixelType' => 'FacebookPixel',
            'pixelTrackingId' => '282987392888293',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.301.pro/v1/team/5fbc5b68-720d-4cf6-92dd-1c012ad1b5af/campaigns/9e54c5fe-dbf5-4d06-8cef-781bf72b89eb/pixels'
payload = {
    "pixelType": "FacebookPixel",
    "pixelTrackingId": "282987392888293"
}
headers = {
  'Authorization': 'Bearer {PERSONAL_ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (200):


{
    "id": "9e5c7b08-b278-4450-9bb3-2f4537518919",
    "subjectType": "campaign",
    "subjectId": "9e522e02-f1c7-4c1e-ba56-bafdfa930a69",
    "pixelType": "FacebookPixel",
    "pixelTypeDisplay": "Facebook Pixel",
    "pixelTrackingId": "5884321354687987",
    "description": "Facebook Pixel",
    "createdAt": "2025-03-05T18:46:23.000000Z",
    "updatedAt": "2025-03-05T18:46:23.000000Z",
    "createdBy": "9e522e02-f0fb-494f-976b-c10ccb498a8b",
    "updatedBy": "9e522e02-f0fb-494f-976b-c10ccb498a8b"
}
 

Request      

POST v1/team/{team_id}/campaigns/{campaign_id}/pixels

Headers

Authorization      

Example: Bearer {PERSONAL_ACCESS_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

team_id   string   

The uuid of the team Example: 5fbc5b68-720d-4cf6-92dd-1c012ad1b5af

campaign_id   string   

The ID of the campaign. Example: 9e54c5fe-dbf5-4d06-8cef-781bf72b89eb

Body Parameters

pixelType   string   

The Type Of Pixel Example: FacebookPixel

pixelTrackingId   string   

The Pixel Tracking Id Example: 282987392888293

description   string  optional  

The description of the Campaign Pixel

Retrieve a Campaign Pixel

requires authentication

Example request:
curl --request GET \
    --get "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/campaigns/9e54c5fe-dbf5-4d06-8cef-781bf72b89eb/pixels/9e56b73b-06ce-48fd-ab99-d740ebff34d0" \
    --header "Authorization: Bearer {PERSONAL_ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/campaigns/9e54c5fe-dbf5-4d06-8cef-781bf72b89eb/pixels/9e56b73b-06ce-48fd-ab99-d740ebff34d0"
);

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/campaigns/9e54c5fe-dbf5-4d06-8cef-781bf72b89eb/pixels/9e56b73b-06ce-48fd-ab99-d740ebff34d0';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {PERSONAL_ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/campaigns/9e54c5fe-dbf5-4d06-8cef-781bf72b89eb/pixels/9e56b73b-06ce-48fd-ab99-d740ebff34d0'
headers = {
  'Authorization': 'Bearer {PERSONAL_ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200):


{
    "id": "9e5c7b08-b278-4450-9bb3-2f4537518919",
    "subjectType": "campaign",
    "subjectId": "9e522e02-f1c7-4c1e-ba56-bafdfa930a69",
    "pixelType": "FacebookPixel",
    "pixelTypeDisplay": "Facebook Pixel",
    "pixelTrackingId": "5884321354687987",
    "description": "Facebook Pixel",
    "createdAt": "2025-03-05T18:46:23.000000Z",
    "updatedAt": "2025-03-05T18:46:23.000000Z",
    "createdBy": "9e522e02-f0fb-494f-976b-c10ccb498a8b",
    "updatedBy": "9e522e02-f0fb-494f-976b-c10ccb498a8b"
}
 

Request      

GET v1/team/{team_id}/campaigns/{campaign_id}/pixels/{id}

Headers

Authorization      

Example: Bearer {PERSONAL_ACCESS_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

team_id   string   

The ID of the team. Example: 9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8

campaign_id   string   

The ID of the campaign. Example: 9e54c5fe-dbf5-4d06-8cef-781bf72b89eb

id   string   

The ID of the pixel. Example: 9e56b73b-06ce-48fd-ab99-d740ebff34d0

Update Campaign Pixel

requires authentication

Update an existing Campaign Pixel.

Example request:
curl --request PUT \
    "https://api.301.pro/v1/team/15017e70-44df-4828-b751-e19cffd9b506/campaigns/9e54c5fe-dbf5-4d06-8cef-781bf72b89eb/pixels/4da280dc-26a7-4048-bd4c-167c10245b79" \
    --header "Authorization: Bearer {PERSONAL_ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"pixelType\": null,
    \"pixelTrackingId\": null
}"
const url = new URL(
    "https://api.301.pro/v1/team/15017e70-44df-4828-b751-e19cffd9b506/campaigns/9e54c5fe-dbf5-4d06-8cef-781bf72b89eb/pixels/4da280dc-26a7-4048-bd4c-167c10245b79"
);

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

let body = {
    "pixelType": null,
    "pixelTrackingId": null
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.301.pro/v1/team/15017e70-44df-4828-b751-e19cffd9b506/campaigns/9e54c5fe-dbf5-4d06-8cef-781bf72b89eb/pixels/4da280dc-26a7-4048-bd4c-167c10245b79';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {PERSONAL_ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'pixelType' => null,
            'pixelTrackingId' => null,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.301.pro/v1/team/15017e70-44df-4828-b751-e19cffd9b506/campaigns/9e54c5fe-dbf5-4d06-8cef-781bf72b89eb/pixels/4da280dc-26a7-4048-bd4c-167c10245b79'
payload = {
    "pixelType": null,
    "pixelTrackingId": null
}
headers = {
  'Authorization': 'Bearer {PERSONAL_ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()

Example response (200):


{
    "id": "9e5c7b08-b278-4450-9bb3-2f4537518919",
    "subjectType": "campaign",
    "subjectId": "9e522e02-f1c7-4c1e-ba56-bafdfa930a69",
    "pixelType": "FacebookPixel",
    "pixelTypeDisplay": "Facebook Pixel",
    "pixelTrackingId": "5884321354687987",
    "description": "Facebook Pixel",
    "createdAt": "2025-03-05T18:46:23.000000Z",
    "updatedAt": "2025-03-05T18:46:23.000000Z",
    "createdBy": "9e522e02-f0fb-494f-976b-c10ccb498a8b",
    "updatedBy": "9e522e02-f0fb-494f-976b-c10ccb498a8b"
}
 

Request      

PUT v1/team/{team_id}/campaigns/{campaign_id}/pixels/{id}

PATCH v1/team/{team_id}/campaigns/{campaign_id}/pixels/{id}

Headers

Authorization      

Example: Bearer {PERSONAL_ACCESS_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

team_id   string   

The uuid of the team Example: 15017e70-44df-4828-b751-e19cffd9b506

campaign_id   string   

The ID of the campaign. Example: 9e54c5fe-dbf5-4d06-8cef-781bf72b89eb

id   string   

The uuid of the Campaign Pixel Example: 4da280dc-26a7-4048-bd4c-167c10245b79

Body Parameters

pixelType   string   

The Type Of Pixel

pixelTrackingId   string   

The Pixel Tracking Id

description   string  optional  

Description of the Pixel

Delete a Campaign Pixel

requires authentication

Delete a Campaign Pixel.

Example request:
curl --request DELETE \
    "https://api.301.pro/v1/team/a021268c-0d2c-4fd0-be14-809228d4c178/campaigns/9e54c5fe-dbf5-4d06-8cef-781bf72b89eb/pixels/b990cb93-84f7-4b0e-ba66-a0c34b070ebe" \
    --header "Authorization: Bearer {PERSONAL_ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.301.pro/v1/team/a021268c-0d2c-4fd0-be14-809228d4c178/campaigns/9e54c5fe-dbf5-4d06-8cef-781bf72b89eb/pixels/b990cb93-84f7-4b0e-ba66-a0c34b070ebe"
);

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

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.301.pro/v1/team/a021268c-0d2c-4fd0-be14-809228d4c178/campaigns/9e54c5fe-dbf5-4d06-8cef-781bf72b89eb/pixels/b990cb93-84f7-4b0e-ba66-a0c34b070ebe';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {PERSONAL_ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.301.pro/v1/team/a021268c-0d2c-4fd0-be14-809228d4c178/campaigns/9e54c5fe-dbf5-4d06-8cef-781bf72b89eb/pixels/b990cb93-84f7-4b0e-ba66-a0c34b070ebe'
headers = {
  'Authorization': 'Bearer {PERSONAL_ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()

Example response (200):


{
    "status": "success"
}
 

Request      

DELETE v1/team/{team_id}/campaigns/{campaign_id}/pixels/{id}

Headers

Authorization      

Example: Bearer {PERSONAL_ACCESS_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

team_id   string   

The uuid of the team Example: a021268c-0d2c-4fd0-be14-809228d4c178

campaign_id   string   

The ID of the campaign. Example: 9e54c5fe-dbf5-4d06-8cef-781bf72b89eb

id   string   

The uuid of the Campaign Pixel Example: b990cb93-84f7-4b0e-ba66-a0c34b070ebe

Permanently Delete Campaign Pixel

requires authentication

Permanently delete a Campaign Pixel

Example request:
curl --request DELETE \
    "https://api.301.pro/v1/team/f5d52349-4a64-419c-9afa-13b0cc7dbc82/campaigns/9e54c5fe-dbf5-4d06-8cef-781bf72b89eb/pixels/f6f03f41-fcb1-4f98-8911-262ddecd31e7/force" \
    --header "Authorization: Bearer {PERSONAL_ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.301.pro/v1/team/f5d52349-4a64-419c-9afa-13b0cc7dbc82/campaigns/9e54c5fe-dbf5-4d06-8cef-781bf72b89eb/pixels/f6f03f41-fcb1-4f98-8911-262ddecd31e7/force"
);

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

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.301.pro/v1/team/f5d52349-4a64-419c-9afa-13b0cc7dbc82/campaigns/9e54c5fe-dbf5-4d06-8cef-781bf72b89eb/pixels/f6f03f41-fcb1-4f98-8911-262ddecd31e7/force';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {PERSONAL_ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.301.pro/v1/team/f5d52349-4a64-419c-9afa-13b0cc7dbc82/campaigns/9e54c5fe-dbf5-4d06-8cef-781bf72b89eb/pixels/f6f03f41-fcb1-4f98-8911-262ddecd31e7/force'
headers = {
  'Authorization': 'Bearer {PERSONAL_ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()

Example response (200):


{
    "status": "success"
}
 

Request      

DELETE v1/team/{team_id}/campaigns/{campaign_id}/pixels/{pixel_id}/force

Headers

Authorization      

Example: Bearer {PERSONAL_ACCESS_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

team_id   string   

The uuid of the team Example: f5d52349-4a64-419c-9afa-13b0cc7dbc82

campaign_id   string   

The ID of the campaign. Example: 9e54c5fe-dbf5-4d06-8cef-781bf72b89eb

pixel_id   string   

The uuid of the Campaign Pixel Example: f6f03f41-fcb1-4f98-8911-262ddecd31e7

Campaign Labels

Assign labels to a Campaign.

requires authentication

Example request:
curl --request POST \
    "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/campaigns/9e54c5fe-dbf5-4d06-8cef-781bf72b89eb/labels/attach" \
    --header "Authorization: Bearer {PERSONAL_ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"ids\": [
        \"9e545a7c-864e-41f4-8f9a-6eeba429f35d\"
    ]
}"
const url = new URL(
    "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/campaigns/9e54c5fe-dbf5-4d06-8cef-781bf72b89eb/labels/attach"
);

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

let body = {
    "ids": [
        "9e545a7c-864e-41f4-8f9a-6eeba429f35d"
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/campaigns/9e54c5fe-dbf5-4d06-8cef-781bf72b89eb/labels/attach';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {PERSONAL_ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'ids' => [
                '9e545a7c-864e-41f4-8f9a-6eeba429f35d',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/campaigns/9e54c5fe-dbf5-4d06-8cef-781bf72b89eb/labels/attach'
payload = {
    "ids": [
        "9e545a7c-864e-41f4-8f9a-6eeba429f35d"
    ]
}
headers = {
  'Authorization': 'Bearer {PERSONAL_ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (200):


{
    "status": "success"
}
 

Request      

POST v1/team/{team_id}/campaigns/{campaign_id}/labels/attach

Headers

Authorization      

Example: Bearer {PERSONAL_ACCESS_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

team_id   string   

The ID of the team. Example: 9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8

campaign_id   string   

The ID of the campaign. Example: 9e54c5fe-dbf5-4d06-8cef-781bf72b89eb

Body Parameters

ids   string[]   

The uuid's of the label to assign to the Campaign

Remove label assignment from a Campaign.

requires authentication

Example request:
curl --request POST \
    "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/campaigns/9e54c5fe-dbf5-4d06-8cef-781bf72b89eb/labels/detach" \
    --header "Authorization: Bearer {PERSONAL_ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"ids\": [
        \"9e545a7c-864e-41f4-8f9a-6eeba429f35d\"
    ]
}"
const url = new URL(
    "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/campaigns/9e54c5fe-dbf5-4d06-8cef-781bf72b89eb/labels/detach"
);

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

let body = {
    "ids": [
        "9e545a7c-864e-41f4-8f9a-6eeba429f35d"
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/campaigns/9e54c5fe-dbf5-4d06-8cef-781bf72b89eb/labels/detach';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {PERSONAL_ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'ids' => [
                '9e545a7c-864e-41f4-8f9a-6eeba429f35d',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/campaigns/9e54c5fe-dbf5-4d06-8cef-781bf72b89eb/labels/detach'
payload = {
    "ids": [
        "9e545a7c-864e-41f4-8f9a-6eeba429f35d"
    ]
}
headers = {
  'Authorization': 'Bearer {PERSONAL_ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (200):


{
    "status": "success"
}
 

Request      

POST v1/team/{team_id}/campaigns/{campaign_id}/labels/detach

Headers

Authorization      

Example: Bearer {PERSONAL_ACCESS_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

team_id   string   

The ID of the team. Example: 9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8

campaign_id   string   

The ID of the campaign. Example: 9e54c5fe-dbf5-4d06-8cef-781bf72b89eb

Body Parameters

ids   string[]   

The uuid's of the label to remove from the Campaign

Add or remove label assignments from a Campaign in a single request.

requires authentication

Example request:
curl --request POST \
    "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/campaigns/9e54c5fe-dbf5-4d06-8cef-781bf72b89eb/labels/sync" \
    --header "Authorization: Bearer {PERSONAL_ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"ids\": [
        \"9e545a7c-864e-41f4-8f9a-6eeba429f35d\"
    ]
}"
const url = new URL(
    "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/campaigns/9e54c5fe-dbf5-4d06-8cef-781bf72b89eb/labels/sync"
);

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

let body = {
    "ids": [
        "9e545a7c-864e-41f4-8f9a-6eeba429f35d"
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/campaigns/9e54c5fe-dbf5-4d06-8cef-781bf72b89eb/labels/sync';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {PERSONAL_ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'ids' => [
                '9e545a7c-864e-41f4-8f9a-6eeba429f35d',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/campaigns/9e54c5fe-dbf5-4d06-8cef-781bf72b89eb/labels/sync'
payload = {
    "ids": [
        "9e545a7c-864e-41f4-8f9a-6eeba429f35d"
    ]
}
headers = {
  'Authorization': 'Bearer {PERSONAL_ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (200):


{
    "status": "success"
}
 

Request      

POST v1/team/{team_id}/campaigns/{campaign_id}/labels/sync

Headers

Authorization      

Example: Bearer {PERSONAL_ACCESS_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

team_id   string   

The ID of the team. Example: 9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8

campaign_id   string   

The ID of the campaign. Example: 9e54c5fe-dbf5-4d06-8cef-781bf72b89eb

Body Parameters

ids   string[]   

The uuid's of the label to assign and or remove from the Campaign

Utilities

Utilities

requires authentication

This endpoint is designed to handle the encoding and sanitization of customer IDs within a specific team context. It accepts an array of customer IDs and processes each ID to generate a sanitized version and an encoded version, returning these transformations in a structured format.

Example request:
curl --request POST \
    "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/utils/customer-id-encode" \
    --header "Authorization: Bearer {PERSONAL_ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"customerNumbers\": [
        \"555-555-4567\",
        \"(555) 555-7894\"
    ]
}"
const url = new URL(
    "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/utils/customer-id-encode"
);

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

let body = {
    "customerNumbers": [
        "555-555-4567",
        "(555) 555-7894"
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/utils/customer-id-encode';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {PERSONAL_ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'customerNumbers' => [
                '555-555-4567',
                '(555) 555-7894',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/utils/customer-id-encode'
payload = {
    "customerNumbers": [
        "555-555-4567",
        "(555) 555-7894"
    ]
}
headers = {
  'Authorization': 'Bearer {PERSONAL_ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (200):


{
    "status": "success",
    "data": [
        {
            "customerNumber": "402-456-7777",
            "sanitized": "4024567777",
            "encoded": "aBcdEf"
        }
    ]
}
 

Request      

POST v1/team/{team_id}/utils/customer-id-encode

Headers

Authorization      

Example: Bearer {PERSONAL_ACCESS_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

team_id   string   

The ID of the team. Example: 9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8

Body Parameters

customerNumbers   string[]   

The customer numbers to encode.

*   string  optional  

string[] The customer numbers to encode.

Response

Response Fields

status   string   
data   object   
customerNumber   string   

The Original Customer Number Provided To Encode. Example: (555) - 555-9844

sanitized   string   

The sanitized version of the customer number Example: 55555598944

encoded   string   

The encoded version of the customer number Example: h3Fa

Webhook Events

Endpoints for handling webhook events from Prolink. Visit https://301.pro/developer/v1/webhooks for more information

Click Events

Prolink Click Event

This endpoint receives click events for Prolink URLs.

Example request:
curl --request POST \
    "https://api.301.pro/your-defined-custom-domain-endpoint/" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.301.pro/your-defined-custom-domain-endpoint/"
);

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

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.301.pro/your-defined-custom-domain-endpoint/';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.301.pro//your-defined-custom-domain-endpoint/'
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers)
response.json()

Example response (200, Event received successfully.):


{
    "event": "prolink.click",
    "version": "1.0.0",
    "docs": "https://app.301.pro/developer/v1/webhooks/prolink.click",
    "clickId": "afe5dbee-54a8-4662-837e-88f50b1acbc7",
    "data": {
        "proLink": {
            "apiHash": "N5nVFPJvzQuA4egfxyL6EMctYqBmXh",
            "id": "9d725436-19d9-4320-b8b7-6ccf0d60f104",
            "teamId": "9d71a317-0320-4d96-affc-580457cee454",
            "campaignId": null,
            "url": "https://301.pro/meeting/abcdef",
            "destination": "https://hello.301.pro/meetings/301pro/schedule",
            "host": "301.pro",
            "deepLink": "https://app.301.pro/teams/9d71a317-0320-4d96-affc-580457cee454/pro-links/9d725436-19d9-4320-b8b7-6ccf0d60f104/show"
        },
        "click": {
            "ipAddress": "68.227.226.150",
            "utcDatetime": "2024-12-16T17:58:38.000Z",
            "utcEpoch": 1735689918,
            "timezone": "America/Phoenix",
            "variant": "abcdef",
            "variantDecoded": "6025551234",
            "datetime": "2024-12-16T10:58:38",
            "day": "Mon",
            "hour": 10,
            "minute": 58,
            "second": 38,
            "botScore": 96,
            "acceptLanguage": "en-US,en;q=0.9",
            "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0",
            "latitude": "33.39810",
            "longitude": "-111.78500",
            "continent": "NA",
            "country": "US",
            "city": "Mesa",
            "region": "Arizona",
            "regionCode": "AZ",
            "postalCode": "85204",
            "referrerUrl": "https://x.pro/userid/tweetId",
            "destination": "https://hello.301.pro/meetings/301pro/schedule"
        }
    }
}
 

Request      

POST /your-defined-custom-domain-endpoint/

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Response

Response Fields

event   string   

The type of the event 'prolink.click'. Example: prolink.click

version   string   

The version of the API for this event. Example: 1.0.0

docs   string   

URL for documentation related to this event. Example: https://app.301.pro/developer/v1/webhooks/prolink.click

clickId   string   

Unique identifier for this click event. Example: afe5dbee-54a8-4662-837e-88f50b1acbc7

data   object   

Contains detailed information about the click and the Prolink.

proLink   object   

Details about the Prolink that was clicked.

apiHash   string   

An API hash for the Prolink. Example: N5nVFPJvzQuA4egfxyL6EMctYqBmXh

id   string   

ID of the Prolink in 301.pro. Example: 9d725436-19d9-4320-b8b7-6ccf0d60f104

teamId   string   

Team ID associated with the Prolink. Example: 9d71a317-0320-4d96-affc-580457cee454

campaignId   string | null   

Campaign ID associated with the Prolink, if applicable, can be null.

url   string   

The URL of the Prolink. Example: https://301.pro/meeting/abcdef

destination   string   

The original destination URL where the Prolink leads. Example: https://hello.301.pro/meetings/301pro/schedule

host   string   

Hostname assigned to the Prolink. Example: 301.pro

deepLink   string   

A deep link associated with the Prolink to manage through the 301.pro application. Example: https://app.301.pro/teams/9d71a317-0320-4d96-affc-580457cee454/pro-links/9d725436-19d9-4320-b8b7-6ccf0d60f104/show

click   object   

Details about the click event.

ipAddress   string   

Originating IP address of the click event. Example: 68.227.226.150

utcDatetime   string   

ISO Date in UTC when the click occurred. Example: 2024-12-16T17:58:38.000Z

utcEpoch   integer   

Epoch time of the click event in UTC. Example: 1735689918

timezone   string   

Timezone where the click event occurred. Example: America/Phoenix

variant   string   

Variant code of the Prolink. This is path segment following the ProLink Key (https://demo.301pro.com/proLinkKey/variantCode). Example: abcdef

variantDecoded   string   

The Decoded Variant Code value. Example: 6025551234

datetime   string   

Local date and time when the click occurred. Example: 2024-12-16T10:58:38

day   string   

Day of the week when the click occurred. Example: Mon

hour   integer   

Hour of the day when the click occurred. Example: 10

minute   integer   

Minute when the click occurred. Example: 58

second   integer   

Second when the click occurred. Example: 38

botScore   integer   

Bot detection score for the click event. Example: 96

acceptLanguage   string   

Language preferences sent by the client's browser. Example: en-US,en;q=0.9

userAgent   string   

User agent string of the client's browser. Example: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0

latitude   string   

Latitude of the click event location. Example: 33.39810

longitude   string   

Longitude of the click event location. Example: -111.78500

continent   string   

Continent where the click event occurred. Example: NA

country   string   

Country where the click event occurred. Example: US

city   string   

City where the click event occurred. Example: Mesa

region   string   

Region or state where the click event occurred. Example: Arizona

regionCode   string   

Region Abbreviation for the region or state which the click occurred. Example: AZ

postalCode   string   

Postal code of the location which the click occurred. Example: 85204

referrerUrl   string   

URL of the page from which the click occurred. Example: https://x.pro/userid/tweetId

destination   string   

The final URL to which the click was redirected. Example: https://hello.301.pro/meetings/301pro/schedule