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": "« Previous",
"active": false
},
{
"url": "https://api.301.pro/v1/teams?page=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "Next »",
"active": false
}
],
"path": "https://api.301.pro/v1/teams",
"per_page": 15,
"to": 5,
"total": 5
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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": "« 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 »",
"active": false
}
],
"path": "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/labels",
"per_page": 30,
"to": 7,
"total": 7
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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": "« 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 »",
"active": false
}
],
"path": "https://api.301.pro/v1/team/9e522e02-f1c7-4c1e-ba56-bafdfa930a69/pixels",
"per_page": 15,
"to": 1,
"total": 1
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
ProLinks
Retrieve a list of 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": "« 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 »",
"active": false
}
],
"path": "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/prolinks",
"per_page": 15,
"to": 1,
"total": 1
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Create a ProLink
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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Retrieve a ProLink
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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update a ProLink
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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete ProLink
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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Archive a collection of ProLinks
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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Remove archive status from a collection of ProLinks
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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Permanently delete the specified ProLink
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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Undelete a ProLink
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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
ProLink Labels
Assign Labels
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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Unassign Labels
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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Sync Labels
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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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": "« 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 »",
"active": false
}
],
"path": "https://api.301.pro/v1/team/9e5489a4-fa7c-4cf7-9a18-9a5b620e58e8/campaigns",
"per_page": 15,
"to": 1,
"total": 1
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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": "« 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 »",
"active": false
}
],
"path": "https://api.301.pro/v1/team/9e522e02-f1c7-4c1e-ba56-bafdfa930a69/pixels",
"per_page": 15,
"to": 1,
"total": 1
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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"
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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"
}
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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