QuillBio API
AI hiring intelligence, delivered through your product.
Integrate QuillBio's hiring intelligence directly into your platform. resumeQ brings structured resume analysis and job matching into your workflow, while interviewQ powers complete AI-conducted interviews and evaluation.
Getting started
Authenticate from your backend.
QuillBio's team issues API keys after access is approved. Send your key using the X-API-Key header.
X-API-Key: YOUR_API_KEYFrom access to integration.
- 1Request API access.
- 2Receive an API key from QuillBio.
- 3Store the API key securely on your backend.
- 4Call the QuillBio API.
- 5Render the returned intelligence inside your product.
Make your first request.
Use the metadata endpoint to confirm access and discover current capabilities and limits.
curl https://api.quillbio.example/resumeiq/meta \
-H "X-API-Key: $KEY"resumeQ
Resume intelligence for your hiring workflow.
resumeQ evaluates a resume against a job description and returns a 0–100 match score, structured candidate profile, education, experience, projects, skills, technical stack, domain skills, keyword coverage and gaps, strengths, missing skills, risk flags, score explanation, resume score, parse confidence and warnings.
Discover resumeQ capabilities.
Retrieve current resumeQ limits and metadata. Use this response as the source of truth.
Evaluate a resume.
Send a PDF or DOCX—or pre-extracted text—with a required job description using multipart/form-data.
| Field | Requirement | Description |
|---|---|---|
| resume | One of resume / resume_text | PDF or DOCX, maximum 5 MB |
| resume_text | One of resume / resume_text | Pre-extracted resume text |
| jd_text | Required | Job description |
| role_category | Optional | Role category context |
| use_llm | Optional | Defaults to true |
curl -X POST https://api.quillbio.example/resumeiq/evaluate \
-H "X-API-Key: $KEY" \
-F resume=@candidate.pdf \
-F jd_text="Backend Engineer. Required: Python, FastAPI, PostgreSQL, Kubernetes." \
-F use_llm=true{
"match_score": 71,
"parsed_profile": {
"name": "Priya Raghavan", "email": "priya@example.com",
"education": [], "experience": [], "projects": [], "skills": [],
"technical_stack": [], "domain_skills": []
},
"keyword_gaps": {
"jd_keywords": [], "matched_keywords": [], "missing_keywords": [],
"coverage_pct": 75
},
"explanation": {
"strengths": [], "missing_skills": [], "risk_flags": [],
"score_explanation": ""
},
"meta": {
"match_score_source": "llm", "rubric_version": "1.5.0",
"domain": "software", "resume_overall_score": 68.4,
"parse_confidence": 0.94, "warnings": []
}
}Evaluate resumes in a batch.
Evaluate many resumes against a single job description. Processing is asynchronous and supports up to 500 resumes, 5 MB each and 500 MB combined.
{
"batch_id": "batch_7fe2...",
"status": "queued",
"total_items": 120,
"skipped": 0,
"use_llm": true,
"poll_url": "/resumeiq/evaluate/batch/batch_7fe2..."
}Poll batch progress and results.
Poll the returned URL to follow progress and retrieve results when complete.
interviewQ
Run complete AI-powered interviews inside your product.
interviewQ supports: Create → Start → Ask / Answer → End & Evaluate → Report.
Current types include coding, system_design, full_stack, ai_specialized, ai_engineering, behavioral and resume_based. Difficulty examples are standard, beginner, intermediate and advanced.
Do not hard-code these values. Use the metadata endpoint as the source of truth.
Discover interviewQ capabilities.
Returns available interview types, difficulties, scopes, limits, usage and branding.
curl https://api.quillbio.example/interviewiq/v1/meta \
-H "X-API-Key: $KEY"Create an interview session.
Creating a session is free. candidate.external_id is your candidate identifier. Resume context can ground behavioral and resume-based interviews.
{
"interview_type": "behavioral",
"difficulty": "intermediate",
"duration": 30,
"candidate": {
"external_id": "user-4821",
"name": "Priya R",
"email": "priya@example.com"
},
"resume": {
"skills": "Python, FastAPI, PostgreSQL",
"projects": "Billing service migration",
"education": "B.Tech CS, 2021"
}
}Start the interview.
Starts the interview and returns the first question.
{
"session_id": "6f1c...",
"status": "in_progress",
"question": {
"id": "a93f...",
"text": "Tell me about a project you owned end to end.",
"format": "text",
"question_number": 1
}
}Submit an answer.
Returns the next question. Use is_complete to determine when the sequence has finished.
{
"question_id": "a93f...",
"answer_text": "I led the migration..."
}End and evaluate.
Concludes the interview and generates a report. It can include overall, communication, technical, problem-solving, leadership and dimension scores; feedback, strengths, weaknesses, recommendations, improvement areas, question feedback and transcript; plus coding or supplied proctoring information where applicable.
null when there is insufficient evidence.Retrieve the report.
Retrieve the evaluation after completion.
{
"session_id": "6f1c...",
"status": "completed",
"overall_score": 82,
"communication_score": 86,
"technical_score": null,
"problem_solving_score": 78,
"leadership_score": 81,
"feedback": "Strong, structured behavioral evidence.",
"strengths": ["Clear ownership and measurable impact"],
"weaknesses": ["Limited detail on technical trade-offs"],
"recommendations": ["Probe architecture decisions"],
"areas_for_improvement": ["Explain alternatives considered"],
"question_feedback": [],
"transcript": []
}Use voice in a session.
For spoken interviews, send audio to this session-scoped endpoint and feed the resulting text into /answer.
{
"audio": "<base64-encoded-audio>"
}{
"text": "I built and shipped a billing service..."
}Support coding interview interactions.
Requests a model-simulated run for the current code.
Submits code as the completed answer.
Saves in-progress code for the session.
Choose hosted or headless interviews.
Headless integration
Build the UI and drive session endpoints.
Hosted integration
Call /launch, then redirect or embed the short-lived interview URL.
{
"url": "...",
"token": "...",
"expires_at": "...",
"embeddable": true
}Reference
Errors.
400Bad request / invalid state401Missing, unknown or revoked API key402Monthly quota exhausted403Client suspended / missing permission404Resource not found413Payload or file too large422Validation error429Rate limit exceededRate limits and quotas.
Obtain actual client limits from the relevant /meta endpoint.
resumeQ
- 60 requests/minute
- Monthly evaluation quota per client
- 5 MB resume limit
- 500 resumes per batch
- 500 MB batch limit
interviewQ
- 60 requests/minute
- Monthly interview quota per client
- 5–120 minute duration
- 15-question hard cap
Keep credentials and candidates secure.
Powered by QuillBio.
QuillBio-powered integrations include Powered by QuillBio attribution.
Talk to a human.
Integration questions, quota increases, scope changes and key issuance all go to the same inbox — a real person reads it.
quillBio@algouniversity.com