Generation API
Generate complete staffing packs programmatically. One authenticated POST returns a job description, onboarding checklist and HR policy as JSON — the same engine the app uses.
The API is available on the Pro plan. Manage keys and see usage in your dashboard.
Authentication
Every request needs an API key, sent as a Bearer token. Create a key from the API keys section of your dashboard — the raw key (prefixed sg_live_) is shown once at creation; store it securely.
Authorization: Bearer sg_live_your_api_key
Endpoint
POST https://staffgenerator.com/api/v1/generate
Request body (JSON)
role(required) — the job title, e.g."Senior Backend Engineer". Seniority and function are inferred from it.department(required) — the industry/department context, e.g."fintech".seniority(optional) — one ofintern, junior, mid, senior, lead, manager, director. Overrides detection.company(optional) — company name, woven into the copy.count(optional) — number of profiles to generate,1–10(default1). Each counts as one metered generation.locale(optional) — currently only"en"is supported.
Response (200)
A JSON object with the generated profiles array. Each profile is a full document pack:
{
"count": 1,
"locale": "en",
"profiles": [
{
"role": "Senior Backend Engineer",
"department": "fintech",
"seniority": "senior",
"meta": { "roleFamily": "engineering", "seniority": "senior", ... },
"jobDescription": { "title": "...", "summary": "...", "responsibilities": ["..."], ... },
"onboardingChecklist": [ { "heading": "Before day one", "items": ["..."] }, ... ],
"hrPolicy": { "title": "...", "body": "..." }
}
]
}Rate limits
Every response carries standard rate-limit headers. The Pro daily cap is configurable; when it is reached, further calls return 429 until the window resets at 00:00 UTC.
X-RateLimit-Limit— your daily generation cap.X-RateLimit-Remaining— generations left in the current window.X-RateLimit-Reset— Unix timestamp (seconds) when the window resets.
Error codes
| Status | Meaning |
|---|---|
400 | Invalid JSON, or missing/invalid role/department/locale. |
401 | Missing Authorization header, or an invalid/revoked API key. |
402 | The key belongs to a free-plan user. The body includes an upgrade_url. |
429 | Daily rate limit reached — retry after X-RateLimit-Reset. |
200 | Success — the profiles array is returned and one usage event is recorded. |
Example (cURL)
curl -X POST https://staffgenerator.com/api/v1/generate \
-H "Authorization: Bearer sg_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"role": "Senior Backend Engineer",
"department": "fintech",
"seniority": "senior",
"company": "Acme Inc.",
"count": 1
}'Need on-demand screenshots of the pages you build with this data? Our sister tool Screencap.site turns any URL into an image via a similar simple API.