apyhub
HR · SMART GENERATION

Job Description Generator API

What it does

Job Description Generator creates structured job description content from a role title and optional hiring details. Send a job name, and include fields like remote, context, country, language, voice_tone, company_name, visa_sponsored, employment_type, optional_skills, required_skills, minimum_education, and minimum_work_experience when you need the output tailored to a specific opening.

Use it when you need a fast first draft for a vacancy page, ATS posting, or internal hiring brief. The service submits the job, returns a job_id and a status_url, then lets you poll for the final result.

When the job finishes successfully, the status response includes a structured result with job_requirements, job_responsibilities, and job_short_description. That makes it easy to feed the output into recruitment workflows, job boards, or HR tools without rewriting the core content by hand.

Job Description Generator is a good fit when you want consistent, repeatable job copy from the same input shape across many openings.

▣ ENDPOINT 01 / 02
POST
Job Description Generator - Submit Job
https://api.eu.apyverse.com/sharpapi/job-description-generator

QUICKSTART

GUIDE

Quickstart

Create a job description generation task by sending the required job title.

curl -X POST "https://api.eu.apyverse.com/sharpapi/job-description-generator" \
  -H "apy-token: $APY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Senior PHP Software Engineer"
  }'

What you'll get back

Returns a JSON object with optional job_id and status_url fields. job_id is a UUID for the submitted job, and status_url is a URI you can poll for status and results.

{
  "job_id": "550e8400-e29b-41d4-a716-446655440000",
  "status_url": "https://example.com/status/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*
The job title for the position (e.g., Senior PHP Software Engineer).
Specifies if the job is remote.
Additional context or requirements (e.g., add requirement of C-class driving license).
The country where the job is located (e.g., United Kingdom).
The language for the job description (e.g., English).
The tone of voice for the description (e.g., neutral, professional).
The name of the company offering the position (e.g., Apple Inc).
Specifies if visa sponsorship is available.
Type of employment (e.g., full time, part time, contract).
optional_skills
A list of optional skills for the position.
required_skills
A list of required skills for the position.
The minimum required education level (e.g., Bachelor Degree).
The minimum required work experience (e.g., 5 years).

About this endpoint

What it does

Submits a job description generation request and returns identifiers for tracking the asynchronous job. The request body contains the job details to generate from, and the response provides a job ID plus a status URL.

Request Body

ParameterTypeMandatoryDescription
nameStringYesThe job title for the position.
remoteBooleanNoSpecifies if the job is remote.
contextStringNoAdditional context or requirements.
countryStringNoThe country where the job is located.
languageStringNoThe language for the job description.
voice_toneStringNoThe tone of voice for the description.
company_nameStringNoThe name of the company offering the position.
visa_sponsoredBooleanNoSpecifies if visa sponsorship is available.
employment_typeStringNoType of employment.
optional_skillsString ArrayNoA list of optional skills for the position.
required_skillsString ArrayNoA list of required skills for the position.
minimum_educationStringNoThe minimum required education level.
minimum_work_experienceStringNoThe minimum required work experience.

Response

Returns a JSON object with a job_id string field formatted as a UUID and a status_url string field formatted as a URI. job_id is the unique identifier for the submitted job, and status_url is the URL used to poll for the job's status and result.

ParameterTypeMandatoryDescription
job_idStringNoThe unique identifier of the submitted job. Format: UUID.
status_urlStringNoURL to poll for the job's status and result. 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 returned job_id to track the job, and poll the status_url for updates.

Body

Name
Type
Description
bodyREQUIRED
object
▣ ENDPOINT 02 / 02
GET
Job Description Generator - Check Job Status
https://api.eu.apyverse.com/sharpapi/job-description-generator/job/status/:job_id

QUICKSTART

GUIDE

Quickstart

Check the status of a job by its job_id. Replace the UUID in the path with your job’s ID.

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

What you'll get back

Returns a JSON object with a data object. Inside data, id is a UUID string, type is the response type, and attributes contains type, status, and result.

{
  "data": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "type": "api_job_result",
    "attributes": {
      "type": "hr_job_description",
      "status": "success",
      "result": {
        "job_requirements": "• 3+ years of experience...\n• Strong communication skills...",
        "job_responsibilities": "• Write job descriptions...\n• Collaborate with hiring managers...",
        "job_short_description": "A concise summary of the role and its core expectations."
      }
    }
  }
}
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 a job description generation job by its job_id and returns the job result payload when it is available.

Path Parameter(s)

AttributeTypeMandatoryDescription
job_idStringYesJob identifier in UUID format.

Response

Returns a JSON object with a data object field. The data object contains the job id as a UUID string, a type string, and an attributes object with its own type string, status string, and result object. Success status: 200.

AttributeTypeMandatoryDescription
dataObjectYesContainer for the job status payload.
data.idStringYesJob identifier in UUID format.
data.typeStringYesType of the API job result object.
data.attributesObjectYesContainer for status metadata and generated content.
data.attributes.typeStringYesType of the generated result object.
data.attributes.statusENUMYesJob status. Allowed values: running, failed, queued, success.
data.attributes.resultObjectYes (if status is success)Generated job description content.
data.attributes.result.job_requirementsStringNoThe generated list of job requirements, formatted as a bullet list.
data.attributes.result.job_responsibilitiesStringNoThe generated list of job responsibilities, formatted as a bullet list.
data.attributes.result.job_short_descriptionStringNoA short, narrative summary of the job description.

Notes

Poll this endpoint with the job_id returned by the submit call. The data.attributes.status field cycles through transitional values (queued, running) before reaching a terminal state (success, failed). The result fields under data.attributes.result are only populated once data.attributes.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.