Agentic AI + Python SDK

Resume parsing, job search and tailoring — one career API

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 resumly

Download the test-drive notebook — free cells only by default; every priced call is commented out.

quickstart.py
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']}")
45+API Endpoints
12Pay-Per-Use Operations
$5Free Trial Credit
100%Prepaid — No Surprise Bills
Built For You

Who Uses the Resumly API?

Whether you're a solo developer, a startup, or a global institution — the API scales to fit your use case.

🚀

Startup Founders

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
🎓

Universities & Bootcamps

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
🏛️

Career Centers & Workforce Agencies

Automate resume workshops, job placement pipelines, and outcome tracking. Help more clients land jobs with fewer staff hours.

Contact Sales
🌍

Immigration & Settlement NGOs

Help newcomers create locally-optimized resumes, navigate job markets, and apply to relevant opportunities in their new country.

Contact Sales
🤖

AI Agent Developers

Give your autonomous agents career superpowers. Every SDK method is a tool call — ready for LangChain, CrewAI, AutoGen, OpenClaw, or MCP.

Read the Docs
🏢

Staffing & Recruiting Firms

Use resume parsing, match scoring, and company research inside your internal tools — per-operation pricing with no platform fee.

Contact Sales

What Will You Build?

From single-purpose scripts to fully autonomous career agents — the API adapts to your architecture.

🤖

Autonomous Career Agent

Build end-to-end career agents that run searches, evaluate match scores, tailor resumes, and apply — paying only for the operations they actually complete.

🔌

MCP Tool Server

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.

👥

Multi-Agent Crew

Assign specialized roles: one agent researches companies, another tailors resumes, a third tracks applications. CrewAI + Resumly.

Resume Pipeline

Create tailored resumes and cover letters programmatically at $0.25 and $0.10 per document — no subscription, no minimum volume.

🏢

HR & Recruiting Automation

Use resume parsing, match scoring, and company research inside your recruiting workflows via API.

🔗

Career Platform Integration

Embed Resumly's job matching, tailoring, and application tracking into job boards, career coaches, and workforce tools.

Up and Running in Minutes

Three steps from zero to your first API call.

01

Create Your API Key

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 → API
02

Install the SDK

One command. Python 3.8+, zero config.

pip install resumly
03

Build

45+ endpoints, 12 pay-per-use operations, free reads. Ship in minutes, not weeks.

resumly = Resumly(api_key="rly_...")

Long-Running Work, One Poll Loop

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.

OperationTypical duration
POST /jobs/{id}/tailor20–60 seconds
POST /jobs/{id}/applyminutes — a worker drives the ATS
POST /queries/{id}/refreshseconds
POST /resumes/{id}/export-pdfseconds
POST /applications/{id}/retryminutes
  • 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.
wait_for_it.py
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"])

45+ Endpoints. One SDK.

Twelve pay-per-use operations plus free reads for everything else. No UI required.

Jobs & Search

  • Matched-jobs board with match scores (free)
  • Salary + applicability on every job (free)
  • Saved-search CRUD + supply check (free)
  • Plain-English query builder (free)
  • Refresh jobs — run a search ($0.05)
  • Import a job by URL ($0.05)

Resumes & Documents

  • Parse base resume ($0.05)
  • AI-tailored resume per job ($0.25)
  • Full resume rewrite ($0.50)
  • Cover letter generation ($0.10)
  • Translate to 40+ languages ($0.10)
  • PDF export ($0.02) · DOCX free

Applications

  • Server-side application submission ($0.50)
  • Billed only on confirmed submission
  • Applications tracker (free)
  • Autopilot controls (free)
  • Classified employer inbox + replies (free)

Interview & Research

  • Company research per job ($0.25)
  • Interview questions per job ($0.10)
  • Answer feedback & scoring ($0.05)
  • Balance + usage ledger (free)

Code That Speaks for Itself

Clean, Pythonic methods. No boilerplate. Every operation is a single function call with full type hints and docstrings.

  • Automatic rate-limit retry with backoff
  • Idempotency keys — safe retries never double-bill
  • Free reads: jobs, applications, balance, usage ledger
  • File upload helpers for PDF/DOCX resumes
quickstart.py
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']}")
Agentic Workflow

How AI Agents Use Resumly

Your agent handles the entire career pipeline through a sequence of API calls.

📩Agent receives task
🔍Runs job searches via API
🎯Reads match scores (free)
📝Tailors resume + cover letter
Submits application
Tracks outcomes (free)
Save Months of Work

Build It Yourself vs. One API Call

Every feature you'd spend weeks building is already a single endpoint.

FeatureBuild from ScratchWith Resumly API
Job search + match scoring2-4 weeksFree reads · $0.05 per search run
Tailored resume (ATS-optimized)3-6 weeks1 call · $0.25
Cover letter generation1-2 weeks1 call · $0.10
Server-side application submission4-8 weeks1 call · $0.50 on confirmation
Company research1-2 weeks1 call · $0.25
Interview questions + answer feedback1-3 weeks$0.10 + $0.05 per answer
Resume parsing2-4 weeks1 call · $0.05
Application tracking + employer inbox2-3 weeksFree reads
Framework Integrations

Works With Every Agentic Framework

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.

LangChain

Wrap SDK methods as @tool-decorated functions for any LangChain agent.

CrewAI

Create BaseTool subclasses with typed Pydantic schemas for role-based crews.

AutoGen

Register tools on ConversableAgent for multi-agent conversations.

OpenClaw

Add career tools to your OpenClaw character with async tool functions.

MCP

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.

OpenAI Agents

Use function tools with the OpenAI Agents SDK for GPT-powered workflows.

langchain_tools.py
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"])
New — Remote MCP Server

Use Resumly from your MCP client

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/mcp
Built for Agents

Why Agents Choose Resumly

Every design decision in the API was made with autonomous agents in mind.

Tool-ready — Each method is an atomic operation agents call independently.
Stateless — API-key auth on every request. Perfect for serverless agents.
Composable — Chain search, tailor, apply, and track in any order.
MCP-native — Expose as an MCP server for header-capable clients; hosted clients require OAuth.
career_agent.py
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"))
Enterprise Ready

Security & Reliability

Production-grade infrastructure you can trust with your users' career data.

🔑

Scoped API Keys

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.

🔒

Encrypted & Hashed

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.

🛡️

Per-Plan Rate Limits

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.

💳

Prepaid Spend Safety

Your balance is your spend cap. When it hits zero the API returns 402 — nothing runs on credit, and failed operations are never billed.

Pricing

Simple, Transparent API Pricing

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.

Start here

Every Plan

API access is included on every Resumly plan — including Free. Create a key in the app and pay only for what you run.

Pay per use
  • Self-serve API key — Settings → API in the app
  • $5 one-time trial credit on your first key
  • Pay only for successful operations
  • Prepaid top-ups from $10 to $100
  • Free reads: jobs board, tracker, inbox, ledger
  • No subscription, no minimums

Rate Card

Twelve pay-per-use operations, each billed per successful call. Failures are never billed.

$0.02–$0.50/operation
  • Tailored resume $0.25 · Cover letter $0.10
  • Submitted application $0.50 — billed only on confirmed submission
  • Search refresh, job import, resume parse $0.05 each
  • Company research $0.25 · Resume rewrite $0.50
  • Interview questions $0.10 · Answer feedback $0.05
  • Translate $0.10 · PDF export $0.02

Agency

For agencies, recruiters, and career services running job search & auto-apply for their clients. Priced per successful application — unlimited client profiles.

Usage-based
  • Pay per successful application (volume tiers)
  • Unlimited client profiles under your tenant
  • Dedicated applicant inbox per client
  • AI-tailored resume per application
  • Application webhooks (submitted / completed)
  • White-label — your clients never see Resumly
  • Dedicated support channel

The Full Rate Card

Per successful operation. Failed operations are never billed.

OperationPrice
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.

Start Building Your Career Agent Today

Every plan includes API access. $5 trial credit on your first key. Install the SDK and ship your first agentic integration in minutes.

Developer FAQ

Common questions about the Resumly API, Python SDK, and agentic framework integrations.

Tailoring, applying, refreshing a saved search, exporting a PDF and retrying an application all return 202 with an operation_id, because they cannot finish inside one HTTP request — an application takes minutes, since a worker drives a real ATS on your behalf. Poll GET /api/v1/operations/{operation_id} until terminal is true, or call resumly.wait(operation_id) in the SDK. Polling is free. Status is queued, running, succeeded, failed, or needs_attention — the last means an application a human has to finish, which is not a failure and keeps your reservation open.

The API is prepaid pay-per-use. You add credit to a wallet (top-ups from $10 to $100), and each successful operation deducts its listed price — for example $0.25 for a tailored resume or $0.05 to run a search. Failed operations are not billed, and a submitted application ($0.50) is billed only when the application is confirmed submitted. Retrying a request that already produced a result returns the stored result for free rather than charging twice. There is no subscription and no minimum spend.

Every plan — including Free — can create an API key. In the Resumly app, open Settings → API and generate a key (a verified email is required). Your first key includes a one-time $5 trial credit so you can try every operation before adding funds.

Yes — your prepaid balance is the spend cap. The API can never charge beyond what you have loaded. When your balance reaches zero, billable operations return HTTP 402 until you top up; free reads keep working. You can watch spending in real time via the balance and usage-ledger endpoints.

All reads and controls: the matched-jobs board with match scores, salary, and applicability; saved-search CRUD plus supply check and the plain-English query builder; the applications tracker; the classified employer inbox and replies; autopilot controls; DOCX downloads; and your balance and usage ledger. You only pay for the 12 operations on the rate card.

Rate limits follow your Resumly plan: Free 10 requests/min and 200/day, Starter 20/min and 500/day, Professional 60/min and 2,000/day, Max 120/min and 5,000/day. The SDK automatically retries 429 responses with exponential backoff.

Yes. Send an X-Idempotency-Key header on billable operations and safe retries will never double-bill you — a repeated key returns the original result instead of running (and charging for) the operation again.

All requests use an API key passed via the X-API-Key header. Keys are public-scope: they are valid only on /api/v1 endpoints and cannot modify your account or billing settings. Keys are stored as SHA-256 hashes and shown exactly once at creation. The Python SDK handles auth automatically when you pass your key to Resumly().

Resumly works with any framework that supports function/tool calling. We have tested integrations with LangChain, CrewAI, AutoGen, OpenClaw, the OpenAI Agents SDK, and the Model Context Protocol (MCP). Every SDK method is a single stateless call, making it trivial to wrap as a tool.

Yes. You can build an MCP server that exposes Resumly's capabilities as typed tools. Header-capable clients such as Cursor, Claude Code, VS Code, Windsurf, and custom agents can use those career tools today. Hosted Claude and ChatGPT require an OAuth-enabled deployment and client verification.

Yes. An agent can call resumly.queries(), resumly.refresh(), resumly.jobs(), resumly.tailor(), resumly.apply(), and resumly.applications() in sequence — fully autonomously. The API is stateless and composable, and because billing is per successful operation, an agent's cost maps directly to the work it completed.

Base resume parsing accepts PDF and DOCX ($0.05 per parse). Generated resumes can be exported as PDF ($0.02) or downloaded as DOCX for free.