QuickResume API · v5.0.0

QuickResume API Reference

The QuickResume API lets you manage resumes, users, and AI features programmatically. Build integrations, automate workflows, or extend the platform for your use case.

Base URLProduction
https://www.quickresume.online

Use the www host. The apex domain quickresume.online 301-redirects to it, and a POST to the apex can lose its body. Self-hosted deployments use their own domain.

Two ways to call the API

Every procedure is reachable through two mounts. Pick the one that matches the endpoint — the method badge and the callout on each endpoint tell you which.

REST/api/openapi

Standard REST. Uses the HTTP method and path shown (with {id} path params and query strings). Send and receive bare JSON — no wrapper. Covers resume, auth, printer, chatbot, API keys, flags, statistics, and feedback.

RPC/api/rpc

oRPC protocol. Always POST to /api/rpc/<namespace>/<procedure>, with the body wrapped as { "json": { … } } and responses wrapped in { "json": … }. The only way to reach AI, payments, subscriptions, and storage (they have no REST route).

REST example

bash
# Get a resume by id (bare JSON, no envelope)
curl https://www.quickresume.online/api/openapi/resume/550e8400-e29b-41d4-a716-446655440000 \
  -H "Authorization: Bearer qr_abc123..."

RPC example

bash
# Generate a summary (POST + { "json": … } envelope)
curl -X POST https://www.quickresume.online/api/rpc/ai/generateSkills \
  -H "Authorization: Bearer qr_abc123..." \
  -H "Content-Type: application/json" \
  -d '{"json":{"jobTarget":"Frontend Engineer","experience":[]}}'

Authentication

Protected endpoints require one of two authentication methods:

Method 1API Key

Pass your API key in the Authorization header as a Bearer token. Keys are prefixed with qr_.

Authorization: Bearer qr_...
Method 2Session Cookie

Browser sessions use the Supabase auth cookie automatically — no header needed.

Cookie: sb-... (set automatically)

Data Model — ResumeData

The data field on create (via import) and update is a single ResumeData object. It is strictly validated — when you send data, the whole object and all of its fields are required. There is no partial-data merge.

ResumeData (top level)
ResumeData {
  picture:        { hidden, url, size, rotation, aspectRatio, borderRadius, ... }
  basics:         { name, headline, email, phone, location, website, customFields[] }
  summary:        { title, columns, hidden, content }   // content is HTML
  sections:       { ...13 built-in sections, see below }
  customSections: [ { id, type, items[], title, columns, hidden } ]
  metadata:       { template, layout, css, page, design, typography, notes }
}

Built-in section keys (13)

profilesexperienceeducationprojectsskillslanguagesinterestsawardscertificationspublicationsvolunteerinternshipsreferences

Each section has { title, columns, hidden, items[] }; every item has at least { id, hidden } plus type-specific fields. name, slug, and id live on the resume record, not inside ResumeData.

HTTP Status Codes

The API uses standard HTTP codes. Error responses include a JSON body with a message field.

StatusMeaning
200Success
400Bad Request — validation error or missing fields
401Unauthorized — missing or invalid credentials
402Payment Required — quota exceeded or plan restriction
403Forbidden — insufficient permissions
404Not Found — resource doesn't exist
500Internal Server Error — unexpected server failure

Quick Start

Create an API key in Settings → API Keys, then make your first request:

bash
# 1. List your resumes (REST — bare JSON)
curl https://www.quickresume.online/api/openapi/resume/list \
  -H "Authorization: Bearer YOUR_API_KEY"

# 2. Get a specific resume by id
curl https://www.quickresume.online/api/openapi/resume/YOUR_RESUME_ID \
  -H "Authorization: Bearer YOUR_API_KEY"

# 3. Render it to a PDF (returns { url })
curl https://www.quickresume.online/api/openapi/printer/resume/YOUR_RESUME_ID/pdf \
  -H "Authorization: Bearer YOUR_API_KEY"

Builder Command Palette

Type a command or search...