Parse a resume from PDF or DOCX for $0.05, then search jobs, score matches, tailor documents and run interview prep from the same pay-per-use API. Priced per operation, with a $5 trial credit on your first key. Works with LangChain, CrewAI, AutoGen, OpenClaw, and MCP.
pip install resumlyDownload the test-drive notebook — free cells only by default; every priced call is commented out.
from resumly import Resumly
resumly = Resumly(api_key="rly_...")
# Refresh a saved search, then read the matched-jobs board
searches = resumly.queries()["queries"]
resumly.refresh(searches[0]["_id"]) # $0.05 per search run
board = resumly.jobs(min_match_score=0.75) # reading is free
best_match = board["result"][0]
# Tailor a resume for the best match
tailored = resumly.tailor(job_id=best_match["_id"]) # $0.25
print(f"Tailored resume ready: {tailored['resume_id']}")Whether you're a solo developer, a startup, or a global institution — the API scales to fit your use case.
Build a career-tech product without building career infrastructure. Launch a job board, resume optimizer, or career coaching tool using Resumly as your backend — and pay only for what your users actually run.
See Use Cases →Embed AI resume reviews, job matching, and interview prep directly into your career services portal. Pay-per-use pricing scales down to a single student.
Contact Sales →Automate resume workshops, job placement pipelines, and outcome tracking. Help more clients land jobs with fewer staff hours.
Contact Sales →Help newcomers create locally-optimized resumes, navigate job markets, and apply to relevant opportunities in their new country.
Contact Sales →Give your autonomous agents career superpowers. Every SDK method is a tool call — ready for LangChain, CrewAI, AutoGen, OpenClaw, or MCP.
Read the Docs →Use resume parsing, match scoring, and company research inside your internal tools — per-operation pricing with no platform fee.
Contact Sales →From single-purpose scripts to fully autonomous career agents — the API adapts to your architecture.
Build end-to-end career agents that run searches, evaluate match scores, tailor resumes, and apply — paying only for the operations they actually complete.
Expose Resumly as an MCP server so header-capable clients — including Cursor, Claude Code, and VS Code — can use career tools natively. Hosted Claude and ChatGPT require Resumly's separate OAuth rollout.
Assign specialized roles: one agent researches companies, another tailors resumes, a third tracks applications. CrewAI + Resumly.
Create tailored resumes and cover letters programmatically at $0.25 and $0.10 per document — no subscription, no minimum volume.
Use resume parsing, match scoring, and company research inside your recruiting workflows via API.
Embed Resumly's job matching, tailoring, and application tracking into job boards, career coaches, and workforce tools.
Three steps from zero to your first API call.
In the Resumly app, open Settings → API. Any plan works — including Free — with a verified email. Your first key includes a one-time $5 trial credit.
# app.resumly.ai → Settings → APIOne command. Python 3.8+, zero config.
pip install resumly45+ endpoints, 12 pay-per-use operations, free reads. Ship in minutes, not weeks.
resumly = Resumly(api_key="rly_...")Tailoring takes under a minute. An application takes several — a worker is driving a real ATS. Those return 202 with an operation_id; poll one endpoint and read one status vocabulary.
| Operation | Typical duration |
|---|---|
POST /jobs/{id}/tailor | 20–60 seconds |
POST /jobs/{id}/apply | minutes — a worker drives the ATS |
POST /queries/{id}/refresh | seconds |
POST /resumes/{id}/export-pdf | seconds |
POST /applications/{id}/retry | minutes |
queuedAccepted, not started yet.runningIn progress.succeededDone — read result.failedDone — read error. Never billed.needs_attentionAn application a human must finish. Not a failure — your reservation stays open.from resumly import Resumly
resumly = Resumly(api_key="rly_...")
# Anything that returns 202 gives you an operation_id.
queued = resumly.tailor(job_id=job["_id"]) # $0.25
# One wait loop works for tailoring, applying, refreshing and exports.
done = resumly.wait(queued["operation_id"], timeout=300)
print(done["status"]) # succeeded
print(done["result"]["download_url"])
# Applications take minutes, so give them a longer budget.
app = resumly.apply(job["_id"], done["result"]["resume_id"]) # $0.50
final = resumly.wait(app["operation_id"], timeout=900)
if final["status"] == "needs_attention":
# Still live: a human is finishing it and the money stays reserved.
print(final["error"]["message"])Twelve pay-per-use operations plus free reads for everything else. No UI required.
Clean, Pythonic methods. No boilerplate. Every operation is a single function call with full type hints and docstrings.
from resumly import Resumly
resumly = Resumly(api_key="rly_...")
# Refresh a saved search, then read the matched-jobs board
searches = resumly.queries()["queries"]
resumly.refresh(searches[0]["_id"]) # $0.05 per search run
board = resumly.jobs(min_match_score=0.75) # reading is free
best_match = board["result"][0]
# Tailor a resume for the best match
tailored = resumly.tailor(job_id=best_match["_id"]) # $0.25
print(f"Tailored resume ready: {tailored['resume_id']}")Your agent handles the entire career pipeline through a sequence of API calls.
Every feature you'd spend weeks building is already a single endpoint.
| Feature | Build from Scratch | With Resumly API |
|---|---|---|
| Job search + match scoring | 2-4 weeks | Free reads · $0.05 per search run |
| Tailored resume (ATS-optimized) | 3-6 weeks | 1 call · $0.25 |
| Cover letter generation | 1-2 weeks | 1 call · $0.10 |
| Server-side application submission | 4-8 weeks | 1 call · $0.50 on confirmation |
| Company research | 1-2 weeks | 1 call · $0.25 |
| Interview questions + answer feedback | 1-3 weeks | $0.10 + $0.05 per answer |
| Resume parsing | 2-4 weeks | 1 call · $0.05 |
| Application tracking + employer inbox | 2-3 weeks | Free reads |
Resumly is designed for the agentic era. Every SDK method is a stateless, atomic API call — a natural fit as a tool in any agent framework.
Wrap SDK methods as @tool-decorated functions for any LangChain agent.
Create BaseTool subclasses with typed Pydantic schemas for role-based crews.
Register tools on ConversableAgent for multi-agent conversations.
Add career tools to your OpenClaw character with async tool functions.
Expose Resumly as an MCP server for header-capable clients such as Cursor, Claude Code, and VS Code. Hosted Claude and ChatGPT require Resumly's separate OAuth rollout.
Use function tools with the OpenAI Agents SDK for GPT-powered workflows.
from langchain_core.tools import tool
from resumly import Resumly
resumly = Resumly(api_key="rly_...")
@tool
def find_jobs() -> str:
"""Return the user's top matched jobs (free read)."""
board = resumly.jobs(min_match_score=0.75)
return str(board["result"][:5])
@tool
def tailor_resume(job_id: str) -> str:
"""Create an ATS-optimized resume tailored to a matched job."""
tailored = resumly.tailor(job_id=job_id)
return f"Resume created: {tailored['resume_id']}"
@tool
def research_company(job_id: str) -> str:
"""Research the employer behind a matched job."""
brief = resumly.company_research(job_id)
return str(brief["research"])Connect Cursor, Claude Code, VS Code, or another header-capable client to Resumly's hosted MCP server and drive your job search in plain English. Hosted Claude and ChatGPT remain unavailable until Resumly activates and verifies OAuth.
https://mcp.resumly.ai/mcpEvery design decision in the API was made with autonomous agents in mind.
from resumly import Resumly
resumly = Resumly(api_key="rly_...")
# Full pipeline: refresh -> match -> tailor -> apply
for search in resumly.queries()["queries"]:
resumly.refresh(search["_id"]) # $0.05 / search run
board = resumly.jobs(min_match_score=0.75, auto_apply=True)
for job in board["result"][:3]:
tailored = resumly.tailor(job_id=job["_id"]) # $0.25
resumly.apply(job["_id"], tailored["resume_id"]) # $0.50 on confirmed
print(f"Applied: {job['title']}") # submission
# Reads are free — check outcomes any time
print(resumly.applications(status="interview"))Production-grade infrastructure you can trust with your users' career data.
Public-scope keys are valid only on /api/v1 — they can never touch your account or billing settings. Rotate or revoke instantly from the app.
All traffic is encrypted in transit with TLS. Keys are stored as SHA-256 hashes and shown exactly once at creation — we can't read them either.
Free: 10/min · 200/day. Starter: 20/min · 500/day. Professional: 60/min · 2,000/day. Max: 120/min · 5,000/day. The SDK retries 429s with backoff.
Your balance is your spend cap. When it hits zero the API returns 402 — nothing runs on credit, and failed operations are never billed.
No subscriptions, no minimums. Every plan — including Free — can create an API key and pay per successful operation from a prepaid balance. Your balance is your spend cap.
API access is included on every Resumly plan — including Free. Create a key in the app and pay only for what you run.
Twelve pay-per-use operations, each billed per successful call. Failures are never billed.
For agencies, recruiters, and career services running job search & auto-apply for their clients. Priced per successful application — unlimited client profiles.
Per successful operation. Failed operations are never billed.
| Operation | Price |
|---|---|
| Refresh jobs (run a search) | $0.05 |
| Import a job | $0.05 |
| Parse base resume | $0.05 |
| Tailored resume | $0.25 |
| Cover letter | $0.10 |
| PDF export | $0.02 |
| Submitted applicationBilled only when the application is confirmed submitted | $0.50 |
| Company research | $0.25 |
| Interview questions | $0.10 |
| Interview answer feedback | $0.05 |
| Resume rewrite | $0.50 |
| Translate | $0.10 |
Free with your key: matched-jobs board with match scores, salary, and applicability · saved-search crud, supply check, and plain-english query builder · applications tracker · classified employer inbox and replies · autopilot controls · docx downloads · balance and usage ledger.
Every plan includes API access. $5 trial credit on your first key. Install the SDK and ship your first agentic integration in minutes.
Common questions about the Resumly API, Python SDK, and agentic framework integrations.