Flag keywords as saved.
curl --request POST \
--url https://api.parallellabs.app/api/v0/seo/keywords/saved \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"companyId": "<string>",
"keywords": [
"<string>"
],
"saved": true,
"tags": [
"<string>"
],
"notes": "<string>",
"country": "<string>",
"language": "<string>"
}
'import requests
url = "https://api.parallellabs.app/api/v0/seo/keywords/saved"
payload = {
"companyId": "<string>",
"keywords": ["<string>"],
"saved": True,
"tags": ["<string>"],
"notes": "<string>",
"country": "<string>",
"language": "<string>"
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
companyId: '<string>',
keywords: ['<string>'],
saved: true,
tags: ['<string>'],
notes: '<string>',
country: '<string>',
language: '<string>'
})
};
fetch('https://api.parallellabs.app/api/v0/seo/keywords/saved', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.parallellabs.app/api/v0/seo/keywords/saved",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'companyId' => '<string>',
'keywords' => [
'<string>'
],
'saved' => true,
'tags' => [
'<string>'
],
'notes' => '<string>',
'country' => '<string>',
'language' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.parallellabs.app/api/v0/seo/keywords/saved"
payload := strings.NewReader("{\n \"companyId\": \"<string>\",\n \"keywords\": [\n \"<string>\"\n ],\n \"saved\": true,\n \"tags\": [\n \"<string>\"\n ],\n \"notes\": \"<string>\",\n \"country\": \"<string>\",\n \"language\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.parallellabs.app/api/v0/seo/keywords/saved")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"companyId\": \"<string>\",\n \"keywords\": [\n \"<string>\"\n ],\n \"saved\": true,\n \"tags\": [\n \"<string>\"\n ],\n \"notes\": \"<string>\",\n \"country\": \"<string>\",\n \"language\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.parallellabs.app/api/v0/seo/keywords/saved")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"companyId\": \"<string>\",\n \"keywords\": [\n \"<string>\"\n ],\n \"saved\": true,\n \"tags\": [\n \"<string>\"\n ],\n \"notes\": \"<string>\",\n \"country\": \"<string>\",\n \"language\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"saved": 123,
"missing": 123
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}SEO
Flag keywords as saved.
Sets the saved flag on keywords the company already has metrics for. Saving the same set twice is a no-op rather than a duplicate.
POST
/
api
/
v0
/
seo
/
keywords
/
saved
Flag keywords as saved.
curl --request POST \
--url https://api.parallellabs.app/api/v0/seo/keywords/saved \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"companyId": "<string>",
"keywords": [
"<string>"
],
"saved": true,
"tags": [
"<string>"
],
"notes": "<string>",
"country": "<string>",
"language": "<string>"
}
'import requests
url = "https://api.parallellabs.app/api/v0/seo/keywords/saved"
payload = {
"companyId": "<string>",
"keywords": ["<string>"],
"saved": True,
"tags": ["<string>"],
"notes": "<string>",
"country": "<string>",
"language": "<string>"
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
companyId: '<string>',
keywords: ['<string>'],
saved: true,
tags: ['<string>'],
notes: '<string>',
country: '<string>',
language: '<string>'
})
};
fetch('https://api.parallellabs.app/api/v0/seo/keywords/saved', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.parallellabs.app/api/v0/seo/keywords/saved",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'companyId' => '<string>',
'keywords' => [
'<string>'
],
'saved' => true,
'tags' => [
'<string>'
],
'notes' => '<string>',
'country' => '<string>',
'language' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.parallellabs.app/api/v0/seo/keywords/saved"
payload := strings.NewReader("{\n \"companyId\": \"<string>\",\n \"keywords\": [\n \"<string>\"\n ],\n \"saved\": true,\n \"tags\": [\n \"<string>\"\n ],\n \"notes\": \"<string>\",\n \"country\": \"<string>\",\n \"language\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.parallellabs.app/api/v0/seo/keywords/saved")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"companyId\": \"<string>\",\n \"keywords\": [\n \"<string>\"\n ],\n \"saved\": true,\n \"tags\": [\n \"<string>\"\n ],\n \"notes\": \"<string>\",\n \"country\": \"<string>\",\n \"language\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.parallellabs.app/api/v0/seo/keywords/saved")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"companyId\": \"<string>\",\n \"keywords\": [\n \"<string>\"\n ],\n \"saved\": true,\n \"tags\": [\n \"<string>\"\n ],\n \"notes\": \"<string>\",\n \"country\": \"<string>\",\n \"language\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"saved": 123,
"missing": 123
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}Authorizations
CompanyApiKeyBearerAuth & CompanyId
Company API key - scoped to a specific company. Generate from the Integrations page in your dashboard.
Body
application/json
Keywords to save
Flag keywords as saved. Operates on existing keyword rows; a keyword with no metrics yet is reported as missing rather than created blank.
Company ID
Keywords to save. Lowercased and deduped automatically.
Set false to unsave instead. Defaults to true.
Labels to apply to all of these keywords
Note to attach to all of these keywords
Country code. Defaults to "us".
Language code. Defaults to "en".
⌘I

