apyhub
ARTIFICIAL INTELLIGENCE · MARKETING

Generate Keywords/Tags API

What it does

Keyword Generator turns a piece of content into a list of keywords you can use for tagging, indexing, or content analysis. Send content, and you can also provide optional context, language, voice_tone, and max_quantity to guide the output.

Use it when you need topic labels for articles, product pages, social posts, or internal knowledge bases. The service submits the request as an asynchronous job and returns a job_id plus a status_url so you can check progress without blocking your app.

When the job completes, you get back a response object with the job id, type, status, and a result array of strings. That makes it easy to store keywords, feed them into search or categorisation workflows, or attach them to records for later retrieval.

Keyword Generator is a good fit for content pipelines that need lightweight AI-assisted tagging without building your own extraction model.

▣ ENDPOINT 01 / 02
POST
Submit Generate Keywords Tags job
https://api.eu.apyverse.com/sharpapi/generate-keywords-tags

QUICKSTART

GUIDE

Quickstart

Submit content to generate keywords and tags asynchronously.

curl -X POST "https://api.eu.apyverse.com/sharpapi/generate-keywords-tags" \
  -H "apy-token: $APY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "A practical guide to remote team productivity and communication",
    "language": "en",
    "max_quantity": 10
  }'

What you'll get back

Returns a JSON object with two top-level string fields: job_id is the UUID of the submitted asynchronous job, and status_url is the URL to check its status.

{
  "job_id": "550e8400-e29b-41d4-a716-446655440000",
  "status_url": "https://example.com/jobs/550e8400-e29b-41d4-a716-446655440000"
}
TRY ITLIVE · 50 ATOMS
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.
body*
Provide the content to generate keywords.
An optional context parameter is also available. It can be used to add additional processing instructions for the content.
Specify the language of the output, defaults to English
Specify the voice tone of the output. It can be adjectives like funny or joyous, or even the name of a famous writer.
Maximum number of keywords to generate.

About this endpoint

What it does

Submits an asynchronous job to generate keywords and tags from the provided content. The request body includes the content to analyze and optional parameters for context, language, voice tone, and maximum quantity.

Request Body

ParameterTypeMandatoryDescription
contentStringYesProvide the content to generate keywords.
contextStringNoOptional context used to add additional processing instructions for the content.
languageStringNoSpecify the language of the output; defaults to English.
voice_toneStringNoSpecify the voice tone of the output, such as adjectives like funny or joyous, or the name of a famous writer.
max_quantityNumberNoMaximum number of keywords to generate.

Response

Returns a JSON object with a job_id string field and a status_url string field. job_id is the identifier of the submitted asynchronous job, and status_url is the URL used to check the job status.

ParameterTypeMandatoryDescription
job_idStringYesIdentifier of the submitted asynchronous job. Format: UUID.
status_urlStringYesURL used to check the submitted job status. Format: URI.

Notes

This endpoint kicks off an async job and returns immediately with a job identifier; the actual work runs in the background. Pair this call with the corresponding job_check endpoint — poll that until the status reaches a terminal state to retrieve the result. Use the job_id returned in the response to track the job, and the status_url to check its status.

Body

Name
Type
Description
bodyREQUIRED
object
▣ ENDPOINT 02 / 02
GET
Get Generate Keywords Tags job status
https://api.eu.apyverse.com/sharpapi/generate-keywords-tags/job/status/:job_id

QUICKSTART

GUIDE

Quickstart

Check the status of a keyword-tag generation job by its job ID.

curl -X GET "https://api.eu.apyverse.com/sharpapi/generate-keywords-tags/job/status/:job_id" \
  -H "apy-token: $APY_TOKEN"

What you'll get back

Returns a JSON object with a data object. The data object includes id and type strings, plus an attributes object containing type and status strings and a result array of strings.

{
  "data": {
    "id": "job-123",
    "type": "job",
    "attributes": {
      "type": "generate-keywords-tags",
      "result": ["keyword1", "keyword2"],
      "status": "completed"
    }
  }
}
TRY ITLIVE · 1 ATOM
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.

About this endpoint

What it does

Returns the current status of a Generate Keywords Tags job identified by its job ID. The response contains a data object with the job identifier, job type, and job attributes including the job status and result array.

Path Parameter(s)

AttributeTypeMandatoryDescription
job_idStringYesJob identifier in UUID format.

Response

Returns a JSON object with a data object field. The data object contains id and type string fields, plus an attributes object with type string, result string array, and status string fields. Status is returned under the attributes object.

AttributeTypeMandatoryDescription
dataObjectNoJob record wrapper containing the response payload.
data.idStringNoJob identifier.
data.typeStringNoJob type.
data.attributesObjectNoJob attributes wrapper containing the status and result fields.
data.attributes.typeStringNoAttribute type.
data.attributes.resultString ArrayNoResult strings for the job.
data.attributes.statusStringNoCurrent job status.

Path parameters

Name
Type
Description
job_idREQUIRED
string
▣ COMMON ERRORS

Errors any endpoint can return

400bad_request

Required parameter missing or malformed body.

401unauthorized

API key missing, revoked, or not authorized for this service.

429rate_limited

Your plan's per-second rate exceeded. Retry with exponential backoff.

503upstream_busy

Backend temporarily unavailable. Try again in a few seconds.