https://app.keupera.com/api/v1
List keywords
| Parameter | Type | Default | Description |
|---|---|---|---|
website_id | UUID | API key’s website | Target website |
limit | integer | 100 | Results per page |
page | integer | 1 | Page number |
status | string | — | Filter by status (active, planned, ignored) |
group_id | UUID | — | Filter by keyword group |
Response
Add keywords
Request body
| Field | Type | Required | Description |
|---|---|---|---|
keywords | array | Yes | Array of keyword objects |
keywords[].term (or keyword) | string | Yes | The keyword term |
keywords[].keyword_group (or group) | string | No | Group name (auto-created if new) |
keywords[].volume | integer | No | Search volume (auto-filled if enrich: true) |
keywords[].difficulty | integer | No | Keyword difficulty |
keywords[].cpc | number | No | Cost per click |
keywords[].intent | string | No | Search intent |
keywords[].opportunity | string | No | Opportunity level (High, Medium, Low) |
keywords[].funnel_stage | string | No | Funnel stage (awareness, consideration, decision) |
keywords[].language | string | No | Language code |
enrich | boolean | No | Auto-enrich keywords with volume/difficulty data |
Response (201)
Delete keywords
Request body
Response
Toggle keyword star
Request body
Response
Bulk update status
Request body
Response
Trigger keyword research
"sync": true to wait inline (not recommended; subject to gateway timeouts).
Request body
| Field | Type | Required | Description |
|---|---|---|---|
seed_keywords | array | Yes | Seed terms to expand from |
language | string | No | Language code (e.g. en) |
country | string | No | Country code (e.g. US) |
sync | boolean | No | true to wait for inline result (not recommended) |
Response (202 Accepted)
Poll a research job
Response
status is one of pending, processing, completed, or failed.
List keyword groups
| Parameter | Type | Description |
|---|---|---|
website_id | UUID | Target website |