SoftSolzSoftSolz
HomeAPI GuideAPI ReferenceWidget Tester

Track up to 100 keywords at once, with your research figures.

Use it after keyword research with your own tools. Every keyword gets its own result: added, already_tracked, invalid (with a message) or cap_reached when the per-site cap is full. The call answers 200 even when some keywords were skipped. their_monthly_searches and their_difficulty are kept as your tool estimate, labelled with source_label, and never mixed with Search Console numbers. Spends no SoftSolz AI credits.

POSThttps://app.softsolz.uk/api/v1/services/seo/sites/{site_id}/keywords/bulk

Recent Requests

Kept only in this browser
TimeStatusTook
Send a request with Try it to see it here.

Path Params

site_idstringrequired

Headers

Authorizationstringrequired

Bearer token: `Bearer sk_live_...` (or `sk_test_...` for sandbox). A login token will not work here.

Idempotency-Keystring

Optional idempotency key for safe retries.

Body Params

keywordsarray of objectsrequired

1 to 100 keywords.

Response

Response Body

resultsarray of objectsOne result per keyword sent, in the same order.
addedintegerHow many were added.
skippedintegerHow many were not added.

Request

curl --request POST \
--url https://app.softsolz.uk/api/v1/services/seo/sites/{site_id}/keywords/bulk \
--header 'Authorization: Bearer sk_live_your_key' \
--header 'Content-Type: application/json' \
--data '{
"keywords": [
{
"query_text": "sourdough starter",
"source_label": "Ahrefs via Claude",
"their_monthly_searches": 2400,
"their_difficulty": 35,
"target_url": "/sourdough-starter",
"notes": "Main money keyword."
}
]
}'

Credentials

Sent as a Bearer token and used in the samples above and in Try it. Kept only in this browser tab until you close it. Use an sk_test_ key to stay in your sandbox.

Response · 200

{
"data": {
"results": [
{
"query_text": "sourdough starter",
"status": "added",
"id": "3f2b9c44-8f4e-4d0a-9c1b-2a7d6e5f1a23",
"message": null
}
],
"added": 1,
"skipped": 0
}
}