Skip to content

Getting Started

This guide walks through the typical Resumly SDK workflow.

1. Install and Authenticate

pip install resumly
from resumly import ResumlyClient

client = ResumlyClient(api_key="rly_your_api_key")

2. Upload Your Base Resume

result = client.upload_base_resume("my_resume.pdf")
base = client.get_base_resume()
print(base["base_resume"]["name"])

3. Search for Jobs

# AI-generate a search query and run it
client.embed_base_resume()
search = client.generate_and_run_search()

# Browse results
jobs = client.get_relevant_jobs()
for job in jobs["jobs"][:5]:
    print(f"{job['title']} @ {job['company']}")

4. Create a Tailored Resume

result = client.create_resume(
    job_description="Senior Engineer at Acme. Python, AWS.",
    cover_letter=True,
    interview_question=True,
)
job_id = result["job_id"]

5. Review and Export

# View comparison
comparison = client.get_resume_comparison(job_id)

# Get insights
insights = client.get_resume_insights(job_id)

# Export PDF
client.export_resume_pdf(job_id, path="tailored.pdf")

6. Cover Letter and Interview Prep

# Cover letter
cl = client.get_cover_letter(job_id)
print(cl["cover_letter_text"])

# Interview questions
questions = client.get_interview_questions(job_id)
for q in questions["questions"][:3]:
    print(f"  Q: {q}")

# Evaluate an answer
score = client.check_interview_answer(
    job_id,
    question="Tell me about a challenging project.",
    answer="I led the migration of our monolith to microservices...",
)

7. Auto-Apply, Autopilot, Inbox, and Leads

# Auto-apply (backend + browser extension helpers)
cfg = client.get_auto_apply_ats_config()
eligible = client.get_auto_apply_eligible_jobs(
    remote_only=True,
    min_match_score=0.65,
    work_arrangement=["remote"],
)
client.queue_auto_apply(job_id="JOB_DATABASE_ID", resume_id="RESUME_ID")
status = client.get_auto_apply_status()

# Autopilot (uses your saved job-search query IDs)
ap = client.get_autopilot_config()
# client.enable_autopilot(["query_id_1", "query_id_2"], min_match_score=70)

# JupyterMail inbox (create once, then list / reply)
inbox = client.get_inbox_status()

# Leads — may return 403 if workspace beta is off for your environment
# client.search_leads_for_job("RESUME_OBJECT_ID")

8. Build AI Agents

Every SDK method maps to a single API call, making it easy to use Resumly as a tool in AI agent frameworks:

# LangChain / CrewAI / custom agents
tools = {
    "search_jobs": lambda: client.generate_and_run_search(),
    "create_resume": lambda desc: client.create_resume(job_description=desc),
    "apply": lambda jid, rid: client.queue_auto_apply(jid, rid),
}

Error Handling

from resumly import ResumlyError, AuthenticationError, RateLimitError

try:
    client.create_resume(job_url="https://example.com/job")
except AuthenticationError:
    print("Check your API key")
except RateLimitError as e:
    print(f"Rate limited. Retry after {e.retry_after}s")
except ResumlyError as e:
    print(f"API error: {e}")