curl --request POST \
--url https://wisepim.com/api/public/v1/keywords \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"term": "<string>"
}
'import requests
url = "https://wisepim.com/api/public/v1/keywords"
payload = { "term": "<string>" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({term: '<string>'})
};
fetch('https://wisepim.com/api/public/v1/keywords', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"term": "<string>",
"intent": "<string>",
"kw_type": "<string>",
"locale": "<string>",
"target_fields": "<unknown>",
"priority": 123,
"notes": "<string>",
"categories": [
123
],
"id": 123
}{
"error": "<string>",
"request_id": "<string>",
"code": "<string>"
}{
"error": "<string>",
"request_id": "<string>",
"code": "<string>"
}{
"error": "<string>",
"request_id": "<string>",
"code": "<string>"
}{
"error": "<string>",
"request_id": "<string>",
"code": "<string>"
}{
"error": "<string>",
"request_id": "<string>",
"code": "<string>"
}{
"error": "<string>",
"request_id": "<string>",
"code": "<string>",
"detail": [
{}
]
}{
"error": "<string>",
"request_id": "<string>",
"code": "<string>"
}{
"error": "<string>",
"request_id": "<string>",
"code": "<string>"
}Create keywords
POST /keywords. Required scopes: keywords:write.
curl --request POST \
--url https://wisepim.com/api/public/v1/keywords \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"term": "<string>"
}
'import requests
url = "https://wisepim.com/api/public/v1/keywords"
payload = { "term": "<string>" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({term: '<string>'})
};
fetch('https://wisepim.com/api/public/v1/keywords', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"term": "<string>",
"intent": "<string>",
"kw_type": "<string>",
"locale": "<string>",
"target_fields": "<unknown>",
"priority": 123,
"notes": "<string>",
"categories": [
123
],
"id": 123
}{
"error": "<string>",
"request_id": "<string>",
"code": "<string>"
}{
"error": "<string>",
"request_id": "<string>",
"code": "<string>"
}{
"error": "<string>",
"request_id": "<string>",
"code": "<string>"
}{
"error": "<string>",
"request_id": "<string>",
"code": "<string>"
}{
"error": "<string>",
"request_id": "<string>",
"code": "<string>"
}{
"error": "<string>",
"request_id": "<string>",
"code": "<string>",
"detail": [
{}
]
}{
"error": "<string>",
"request_id": "<string>",
"code": "<string>"
}{
"error": "<string>",
"request_id": "<string>",
"code": "<string>"
}Authorizations
Use a project API key from Settings > API Access. Send it as Authorization: Bearer wpk_.... See authentication and scopes for setup and permissions.
Headers
Reuse this key for retries of the same write. Scoped to this API key; retained until key deletion. Different requests with the same key return 409.
1 - 128^[!-~]+$Body
255Classified search intent (from GSC query analysis).
16Positive = a term to target/include. Negative = a term to AVOID in generated content.
16Locale code this keyword applies to (e.g. 'nl', 'en-US'). Empty = applies to all locales.
16Subset of content fields this keyword applies to (title/description/short_description/seo_meta/attributes). Empty list = applies to all fields.
Relative importance; higher sorts first and weighs more.
100000If set, the keyword only applies to products in any of these categories. Empty = applies to every product.
500Response
Created
255Classified search intent (from GSC query analysis).
16Positive = a term to target/include. Negative = a term to AVOID in generated content.
16Locale code this keyword applies to (e.g. 'nl', 'en-US'). Empty = applies to all locales.
16Subset of content fields this keyword applies to (title/description/short_description/seo_meta/attributes). Empty list = applies to all fields.
Relative importance; higher sorts first and weighs more.
If set, the keyword only applies to products in any of these categories. Empty = applies to every product.

