apyhub
MARKETING · SMART GENERATION

Generate Product Introduction API

What it does

Product Introduction Generator turns your source content into a short product introduction and returns it asynchronously. Send content, and you can also set language, max_length, and voice_tone in the request body. The service returns a job_id and a status_url so you can poll for completion without blocking your workflow.

Use Product Introduction Generator when you need a concise intro for a landing page, app store listing, internal launch brief, or marketing draft. It is built for teams that already have product details and want a polished introduction in a chosen language and tone, constrained to the length you specify.

Because the response is job-based, it fits batch pipelines and background processing well. Submit the text once, check job status with the job ID, and read the generated product_intro from the completed job result when the status reaches success.

If you need to standardise how product copy is drafted across tools or services, this endpoint gives you a simple asynchronous way to generate a ready-to-use introduction from plain text.

▣ ENDPOINT 01 / 02
POST
Generate Product Introduction
https://api.eu.apyverse.com/sharpapi/generate-product-introduction

QUICKSTART

GUIDE

Quickstart

Submit a product introduction job by sending the required content in a JSON body.

curl -X POST "https://api.eu.apyverse.com/sharpapi/generate-product-introduction" \
  -H "apy-token: $APY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"content":"Write a compelling introduction for a new wireless noise-cancelling headphone for online shoppers."}'

What you'll get back

Returns a JSON object with job_id and status_url string fields. job_id is the unique identifier for the submitted job, and status_url is the URL to poll for job status.

{
  "job_id": "job_123456789",
  "status_url": "https://api.example.com/jobs/job_123456789"
}
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*

About this endpoint

What it does

Submits content to generate a product introduction and returns identifiers for tracking the asynchronous job. The response includes a job ID and a status URL for polling progress.

Request Body

ParameterTypeMandatoryDescription
contentStringYesThe content to base the product introduction on.
languageStringNoLanguage for the generated introduction. Default: English.
max_lengthIntegerNoMaximum length for the generated introduction.
voice_toneStringNoDesired voice tone for the generated introduction.

Response

Returns a JSON object with a job_id string field and a status_url string field. Use job_id to identify the submitted job and status_url to poll for its status.

ParameterTypeMandatoryDescription
job_idStringNoThe unique identifier for the submitted job.
status_urlStringNoThe URL to poll for job status.

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 job_id to track the job, and poll the URL returned in status_url.

Body

Name
Type
Description
bodyREQUIRED
object
▣ ENDPOINT 02 / 02
GET
Check Product Intro Status
https://api.eu.apyverse.com/sharpapi/generate-product-introduction/job/status/:job_id

QUICKSTART

GUIDE

Quickstart

Check the status of a product introduction job by its job ID.

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

What you'll get back

Returns a JSON object with a data object. data includes the job id and type, plus an attributes object with status (running, failed, queued, or success). When available, attributes.result.product_intro contains the generated product introduction text.

{
  "data": {
    "id": "2f3c2e8d-8f3b-4a6d-9d2a-1c2f7b7f9f2a",
    "type": "api_job_result",
    "attributes": {
      "status": "success",
      "result": {
        "product_intro": "A sleek, lightweight smartwatch designed to keep you connected, active, and on schedule all day."
      }
    }
  }
}
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

Checks the status of an asynchronous product-introduction generation job by job ID and returns the job record in a JSON object. When the job has completed successfully, the response includes the generated product_intro under the job result.

Path Parameter(s)

AttributeTypeMandatoryDescription
job_idStringYesThe job's unique UUID.

Response

Returns a JSON object with a data object field. The data object contains the job id string and an attributes object with a status string; when the job succeeds, attributes also includes a result object containing product_intro as a string. Success status code is not declared in the schema.

AttributeTypeMandatoryDescription
dataObjectYesJob record object. Contains id, attributes.status, and, on success, attributes.result.product_intro.
data.idStringNoThe job's unique UUID.
data.typeStringNoPresent in the schema as api_job_result.
data.attributesObjectNoJob attributes object. Contains status; when the job succeeds, it also contains result.
data.attributes.statusENUMNoCurrent status of the asynchronous job. Allowed values: running, failed, queued, success.
data.attributes.resultObjectNoResult object returned when the job status is success.
data.attributes.result.product_introStringNoGenerated product introduction text.

Notes

Poll this endpoint with the job_id returned by the submit call. The status field cycles through transitional values (queued, running) before reaching a terminal state (success, failed). The result fields are only populated once status is success; treat them as absent otherwise.

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.