Bisibility Saved Keywords API
Save keywords for later without putting them under rank tracking.
Save keywords for later without putting them under rank tracking.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/bisibility-com:bisibility-com-saved-keywords-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Bisibility Com Saved Keywords API
version: 1.0.0
description: 'Operations tagged saved-keywords across 2 of this provider''s published API definitions: eu.bisibility.com_v1_openapi.json, bisibility-com-openapi.json. Each path carries the servers of the definition it was published in.'
servers:
- url: /api/v1
tags:
- name: saved-keywords
description: Save keywords for later without putting them under rank tracking.
x-group: Saved Keywords
paths:
/projects/{project_id}/saved-keywords:
get:
operationId: listSavedKeywords
parameters:
- description: API contract version requested by the client. Omit this header to use the current backward-compatible behavior.
in: header
name: Bisibility-API-Version
required: false
schema:
enum:
- v1
type: string
x-bisibility-enum: open
x-bisibility-name: ApiVersion
- in: path
name: project_id
required: true
schema:
example: prj_a00000000000000000000000
pattern: ^prj_[a-z][a-z0-9]{23}$
type: string
description: Public project ID; membership and token scope are enforced.
x-bisibility-public-id: prj
- $ref: '#/components/parameters/Cursor'
- $ref: '#/components/parameters/Limit'
- $ref: '#/components/parameters/SourceHeader'
responses:
'200':
content:
application/json:
schema:
properties:
data:
items:
x-bisibility-name: SavedKeyword
properties:
cpc:
type:
- number
- 'null'
x-bisibility-money: usd_number
difficulty:
type:
- integer
- 'null'
id:
example: svkw_a00000000000000000000000
pattern: ^svkw_[a-z][a-z0-9]{23}$
type: string
x-bisibility-public-id: svkw
intent:
type:
- string
- 'null'
location:
type: string
saved_at:
format: date-time
type: string
source_seed:
type:
- string
- 'null'
text:
type: string
trend:
items:
x-bisibility-name: SavedKeywordTrendPoint
properties:
month:
maximum: 12
minimum: 1
type: integer
search_volume:
type:
- integer
- 'null'
year:
type: integer
required:
- month
- search_volume
- year
type: object
type: array
variant_count:
type: integer
volume:
type:
- integer
- 'null'
required:
- id
- location
- saved_at
- text
- trend
- variant_count
type: object
type: array
meta:
properties:
next_cursor:
type:
- string
- 'null'
required:
- next_cursor
type: object
x-bisibility-name: PageMeta
required:
- data
- meta
type: object
x-bisibility-name: SavedKeywordList
description: JSON response
'400':
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
description: Bad request
'401':
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
description: Unauthorized
'403':
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
description: Forbidden
'404':
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
description: Not found
'409':
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
description: Unsupported API version
'429':
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
description: Rate limited
security:
- ProjectApiKey: []
- PersonalAccessToken: []
- AppOAuth:
- api:read
summary: List saved keywords
x-bisibility-sdk:
group: keywords.saved
method: list
legacy:
ts:
- listSavedKeywords
python:
- list_saved_keywords
go:
- ListSavedKeywords
x-bisibility-idempotency: none
x-bisibility-pagination:
style: cursor
items: data
next: meta.next_cursor
max_limit: 200
tags:
- saved-keywords
x-bisibility-cost:
kind: free
post:
operationId: createSavedKeywords
requestBody:
content:
application/json:
schema:
x-bisibility-name: SavedKeywordsInput
properties:
keywords:
items:
x-bisibility-name: SavedKeywordInputItem
x-bisibility-union:
style: shorthand
canonical: SavedKeywordInput
oneOf:
- maxLength: 180
minLength: 1
type: string
- x-bisibility-name: SavedKeywordInput
properties:
cpc_cents:
type:
- integer
- 'null'
minimum: 0
x-bisibility-money: usd_cents
difficulty:
maximum: 100
minimum: 0
type:
- integer
- 'null'
intent:
type:
- string
- 'null'
minLength: 1
maxLength: 80
keyword:
maxLength: 180
minLength: 1
type: string
location:
$schema: https://json-schema.org/draft/2020-12/schema
type: string
maxLength: 260
search_volume:
type:
- integer
- 'null'
minimum: 0
source_seed:
type:
- string
- 'null'
minLength: 1
maxLength: 180
variant_count:
minimum: 0
type: integer
required:
- keyword
type: object
maxItems: 500
minItems: 1
type: array
required:
- keywords
type: object
required: true
responses:
'201':
content:
application/json:
schema:
x-bisibility-name: SavedKeywordsCreateResult
properties:
duplicate_count:
type: integer
results:
items:
x-bisibility-name: SavedKeywordCreateItemResult
properties:
keyword:
type: string
status:
enum:
- created
- skipped
type: string
x-bisibility-enum: open
x-bisibility-name: SavedKeywordCreateStatus
required:
- keyword
- status
type: object
type: array
saved_count:
type: integer
required:
- duplicate_count
- results
- saved_count
type: object
description: Created
'400':
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
description: Bad request
'401':
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
description: Unauthorized
'403':
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
description: Forbidden
'404':
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
description: Not found
'409':
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
description: Unsupported API version
'429':
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
description: Rate limited
security:
- ProjectApiKey: []
- PersonalAccessToken: []
- AppOAuth:
- api:write
summary: Save keywords without tracking them
parameters:
- description: API contract version requested by the client. Omit this header to use the current backward-compatible behavior.
in: header
name: Bisibility-API-Version
required: false
schema:
enum:
- v1
type: string
x-bisibility-enum: open
x-bisibility-name: ApiVersion
- in: path
name: project_id
required: true
schema:
example: prj_a00000000000000000000000
pattern: ^prj_[a-z][a-z0-9]{23}$
type: string
description: Public project ID; membership and token scope are enforced.
x-bisibility-public-id: prj
- $ref: '#/components/parameters/IdempotencyKey'
- $ref: '#/components/parameters/SourceHeader'
x-bisibility-sdk:
group: keywords.saved
method: create
legacy:
ts:
- createSavedKeywords
python:
- create_saved_keywords
go:
- CreateSavedKeywords
x-bisibility-idempotency: optional
x-bisibility-pagination:
style: none
tags:
- saved-keywords
x-bisibility-cost:
kind: free
servers:
- url: /api/v1
/projects/{project_id}/saved-keywords/{saved_keyword_id}:
delete:
operationId: deleteProjectSavedKeyword
parameters:
- description: API contract version requested by the client. Omit this header to use the current backward-compatible behavior.
in: header
name: Bisibility-API-Version
required: false
schema:
enum:
- v1
type: string
x-bisibility-enum: open
x-bisibility-name: ApiVersion
- in: path
name: project_id
required: true
schema:
example: prj_a00000000000000000000000
pattern: ^prj_[a-z][a-z0-9]{23}$
type: string
description: Public project ID; membership and token scope are enforced.
x-bisibility-public-id: prj
- in: path
name: saved_keyword_id
required: true
schema:
example: svkw_a00000000000000000000000
pattern: ^svkw_[a-z][a-z0-9]{23}$
type: string
x-bisibility-public-id: svkw
- $ref: '#/components/parameters/IdempotencyKey'
- $ref: '#/components/parameters/SourceHeader'
responses:
'200':
content:
application/json:
schema:
x-bisibility-name: SavedKeywordDeleteResult
type: object
properties:
removed_count:
type: integer
minimum: 0
required:
- removed_count
description: JSON response
'400':
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
description: Bad request
'401':
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
description: Unauthorized
'403':
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
description: Forbidden
'404':
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
description: Not found
'409':
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
description: Unsupported API version
'429':
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
description: Rate limited
security:
- ProjectApiKey: []
- PersonalAccessToken: []
- AppOAuth:
- api:write
summary: Delete a saved keyword
x-bisibility-sdk:
group: keywords.saved
method: delete
legacy:
ts:
- deleteSavedKeyword
python:
- delete_saved_keyword
go:
- DeleteProjectSavedKeyword
x-bisibility-idempotency: optional
x-bisibility-pagination:
style: none
tags:
- saved-keywords
x-bisibility-cost:
kind: free
servers:
- url: /api/v1
components:
parameters:
IdempotencyKey:
description: Optional key that makes a retry of this request return the first response instead of running it again. Replays last 24 hours and are scoped to the credential, method and path.
in: header
name: Idempotency-Key
required: false
schema:
maxLength: 200
type: string
SourceHeader:
description: 'Declares the client that produced the request for usage reporting: sdk, cli or mcp. Optional; any other value counts as api. It never changes authentication or which budget applies (every bearer-authenticated request counts against the API, MCP and SDK budget).'
in: header
name: X-Bisibility-Source
required: false
schema:
enum:
- sdk
- cli
- mcp
type: string
x-bisibility-enum: open
x-bisibility-name: RequestSource
Cursor:
description: Opaque v3 cursor returned as meta.next_cursor from the previous page.
in: query
name: cursor
schema:
type: string
Limit:
description: Maximum items to return. Defaults to 50.
in: query
name: limit
schema:
default: 50
maximum: 200
minimum: 1
type: integer
schemas:
Problem:
properties:
detail:
type: string
details:
additionalProperties: true
type: object
docs_url:
type: string
errors: {}
instance:
type: string
status:
type: integer
title:
type: string
type:
type: string
required:
- type
- title
- status
- detail
- instance
- docs_url
type: object
securitySchemes:
PersonalAccessToken:
bearerFormat: bsb_pat_live_...
description: Personal access token for account routes and projects visible to the authenticated user.
scheme: bearer
type: http
ProjectApiKey:
bearerFormat: bsb_key_live_...
description: Project-scoped API key. It cannot access account routes or create additional projects.
scheme: bearer
type: http
MigrationToken:
bearerFormat: mig_...
description: 'Migration token sent as `Authorization: Bearer mig_...`.'
scheme: bearer
type: http
AppOAuth:
description: 'OAuth 2.0 for the first-party Bisibility apps only; other clients cannot obtain these scopes. Use the authorization code flow with PKCE (S256) and no client secret, and do not send a `resource` parameter: `/api/v1` accepts only the opaque access tokens issued without one. Access tokens expire after 15 minutes. Refresh tokens rotate on every use, and replaying a used refresh token revokes the whole grant. To sign out, POST the refresh token with `token_type_hint=refresh_token` and the `client_id` to `/api/auth/oauth2/revoke`. Account deletion additionally requires a sign-in from the last 10 minutes (authorize again with `prompt=login`); otherwise it fails with 403 and `details.code` `reauthentication_required`. Admin operations are not available to app tokens.'
flows:
authorizationCode:
authorizationUrl: /api/auth/oauth2/authorize
refreshUrl: /api/auth/oauth2/token
scopes:
api:read: Read the account and projects visible to the user.
api:write: Read, and change projects within the user's role. Implies api:read.
tokenUrl: /api/auth/oauth2/token
type: oauth2
x-refined-from:
- eu.bisibility.com_v1_openapi.json
- bisibility-com-openapi.json