EnthaLabs

Resume API

Programmatic access

Automate resume.enthalabs.com with account-scoped API keys.

Use the same saved jobs, base CV profile, and async generation pipeline that power the dashboard, now from your own scripts and backend services.

At a glance

Base URL: https://resume.enthalabs.com

Authorization: Bearer <your_api_key>

X-API-Key: <your_api_key>

Keep API keys in server-side code or local CLI tooling. Do not expose them in shipped browser apps.

Recommended flow

This is the cleanest path if you want repeatable automation with saved account state.

Step 1

Create an API key

Sign in to the dashboard, open Developer API, and issue a key for your account.

Step 2

Save a reusable base CV

Upload or post CV text once with POST /api/profile/cv so future generations can omit direct CV input.

Step 3

Create a generation job

Send job text or a saved job id to POST /api/generate, then poll the returned generation job id.

Step 4

Poll until completed

Read GET /api/generate/jobs/:id until status is completed or failed. Stage and statusMessage explain progress.

Authentication model

Most endpoints accept an API key. API-key issuance and revocation stay behind the dashboard session on purpose.

Accepted auth headers

Authorization: Bearer <your_api_key>

X-API-Key: <your_api_key>

Operational notes

Keys are scoped to the owning user account.

Revocation takes effect immediately for future requests.

Async generation polling exposes both `stage` and `statusMessage`.

Copy-ready examples

Start with cURL for quick validation, then switch to Node or your own backend client.

cURL quickstart

Copy-ready example

export RESUME_API_KEY="rsm_your_generated_key"

# Save a reusable base CV once
curl -sS https://resume.enthalabs.com/api/profile/cv \
  -H "Authorization: Bearer $RESUME_API_KEY" \
  -F "cvFile=@./resume.pdf"

# Queue a new generation run using direct job text
curl -sS https://resume.enthalabs.com/api/generate \
  -H "Authorization: Bearer $RESUME_API_KEY" \
  -F "jobText=Paste the full job description here"

# Poll the returned generation job id until status=completed
curl -sS https://resume.enthalabs.com/api/generate/jobs/123 \
  -H "Authorization: Bearer $RESUME_API_KEY"

Endpoint reference

The main programmatic surface is the saved jobs, base CV, generation queue, and regeneration flow.

GET/api/auth/me

Inspect the currently authenticated user and auth mode.

Auth API key or dashboard sessionapplication/json
GET/api/jobs

List the authenticated user's saved jobs.

Auth API keyapplication/json
POST/api/jobs

Create a saved job record with role, company, URL, and description.

Auth API keyapplication/json
PATCH/api/jobs/:jobId

Update saved job fields such as title, company, URL, description, or applied state.

Auth API keyapplication/json
PATCH/api/jobs/:jobId/applied

Mark a saved job as applied or not applied.

Auth API keyapplication/json
DELETE/api/jobs/:jobId

Delete a saved job record.

Auth API keyapplication/json
GET/api/jobs/:jobId/latest-generation

Fetch the latest saved generation associated with a specific job.

Auth API keyapplication/json
GET/api/profile/cv

Fetch the reusable base CV profile for the account.

Auth API keyapplication/json
POST/api/profile/cv

Upload CV text or a file and save it as the account's base CV profile.

Auth API keymultipart/form-data
POST/api/generate

Queue an async resume and cover-letter generation job.

Auth API keymultipart/form-data
GET/api/generate/jobs/:generationJobId

Poll a queued generation job until completed or failed.

Auth API keyapplication/json
POST/api/regenerate

Regenerate just the resume or cover letter for an existing saved generation.

Auth API keyapplication/json
GET/api/auth/api-keys

List API keys for the signed-in user inside the dashboard UI.

Auth Dashboard session onlyapplication/json

Generation job lifecycle

`POST /api/generate` is asynchronous. Poll the returned generation job id until the status is terminal.

queued

Accepted and waiting for the next worker slot.

structuring_job

Normalizing the job posting into role, company, and requirement data.

generating_documents

Drafting the tailored resume and cover letter.

running_html_qa

Reviewing document layout and formatting quality.

saving_results

Persisting the final generation payload.

completed

The result payload is ready to fetch.

failed

The job stopped with an errorMessage.

Manage keys in the dashboard, run everything else from code.

Sign in with your magic link, generate an API key, and keep the key in your own backend or terminal environment.