Kong Resume API
Documentation

Build ATS-ready resumes through one clean API.

Kong Resume API lets approved clients fetch a user’s previous resumes and generate a fresh compiled PDF from either a LinkedIn job URL or a pasted job description. The server uses the API key to resolve the user, load their stored profile context, tailor the resume, compile LaTeX, and return the finished PDF.

Base api.Kongresume.com Production API domain
Auth Bearer key Uses the user’s developer API key
Output PDF Compiled resume file with metadata headers

Security

Authentication

Every request must include a developer API key. Keep this key server-side. The API key maps to a user profile in Supabase, which is then used for resume generation and credit enforcement.

Required headers

Authorization
Bearer kr_live_xxx
Accept
application/json for JSON endpoints, application/pdf for PDF generation.
Idempotency-Key
Optional but recommended for generation requests that may be retried.
curl https://api.Kongresume.com/v1/resumes \
  -H "Authorization: Bearer kr_live_your_api_key" \
  -H "Accept: application/json"

Start

Quickstart

01

Create an API key

Generate the user’s developer key from the Kong Resume profile developer section.

02

Send job context

Submit either linkedin_job_url or job_description. One is required.

03

Receive PDF

The API returns a compiled PDF and response headers with the generation ID.

Endpoints

API reference

GET /v1/resumes

Fetch all generated resumes for the authenticated user.

POST /v1/resumes/generate

Generate a tailored resume PDF from a LinkedIn job URL or job description.

GET

/v1/resumes

Returns the resumes already created by the authenticated user. Use this endpoint to show history, open a previous generation, or download a stored PDF.

Query parameters

limit
Optional integer. Defaults to 25, maximum 100.
cursor
Optional pagination cursor returned by a previous request.
curl "https://api.Kongresume.com/v1/resumes?limit=25" \
  -H "Authorization: Bearer kr_live_your_api_key"

JSON response

{
  "items": [
    {
      "id": "gen_01JZP7G5YW8V0EJ9D2V8N7A2K4",
      "title": "Senior Product Analyst at Linear",
      "template_id": "template1",
      "source_type": "job_description",
      "status": "completed",
      "created_at": "2026-06-10T09:30:00Z",
      "download_url": "https://api.Kongresume.com/v1/resumes/gen_01JZ.../pdf"
    }
  ],
  "next_cursor": null
}
POST

/v1/resumes/generate

Generates a new ATS-optimized resume and returns a compiled PDF. Send either linkedin_job_url or job_description. Both fields are optional individually, but the request must contain at least one of them. If both are sent, linkedin_job_url is treated as the primary source and job_description is used as supplemental context.

Request body

linkedin_job_url
Optional string. Public LinkedIn job URL, for example https://www.linkedin.com/jobs/view/4416743017/.
job_description
Optional string. Full pasted job text. Required when linkedin_job_url is not supplied.
template_id
Optional string. One of template1, template2, or template3. Defaults to template1.
response_format
Optional string. Defaults to pdf. Later versions may support json for LaTeX + metadata.
curl https://api.Kongresume.com/v1/resumes/generate \
  -X POST \
  -H "Authorization: Bearer kr_live_your_api_key" \
  -H "Content-Type: application/json" \
  -H "Accept: application/pdf" \
  --output resume.pdf \
  -d '{
    "linkedin_job_url": "https://www.linkedin.com/jobs/view/4416743017/",
    "template_id": "template1"
  }'
curl https://api.Kongresume.com/v1/resumes/generate \
  -X POST \
  -H "Authorization: Bearer kr_live_your_api_key" \
  -H "Content-Type: application/json" \
  -H "Accept: application/pdf" \
  --output resume.pdf \
  -d '{
    "job_description": "We are hiring a Senior Data Analyst with SQL, Python, dashboarding, stakeholder management, and experimentation experience.",
    "template_id": "template1"
  }'

PDF response

Status
200 OK
Content-Type
application/pdf
X-Generation-Id
Unique resume generation ID for later history lookup.
Content-Disposition
Attachment filename generated from the target role and company.

System flow

How generation works

1

Validate API key

The API key identifies the user and checks plan credits before work begins.

2

Load profile context

The server fetches the user profile, profile description, skills, niche, and resume history from the database.

3

Resolve job source

LinkedIn URLs are scraped into structured job details. Text descriptions are normalized directly.

4

Generate LaTeX

The AI agent merges profile + job details into the selected LaTeX template.

5

Compile and store

The server compiles a PDF, stores the generation record, decrements credits, and returns the file.

Reliability

Error handling

Code Reason Action
400 Missing both job fields or invalid template. Send either linkedin_job_url or job_description.
401 Missing or invalid API key. Regenerate the developer API key from profile settings.
402 User has no remaining generation credits. Upgrade the plan or wait for monthly reset.
422 Request body could not be validated. Check JSON shape and field names.
500 Internal compile or provider failure. Retry with the same Idempotency-Key or contact support.