Purpose-built intelligence

QuillBio API

AI hiring intelligence, delivered through your product.

Integrate QuillBio's hiring intelligence directly into your platform with resumeQ and interviewQ.

Your platform
QuillBio API
resumeQ
interviewQ
Your users

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.

resumeQ

Resume intelligence for your hiring workflow.

Match scoring, parsed profiles, skill gaps, strengths and risk signals.

View API

interviewQ

Complete AI-powered interviews for your users.

Session lifecycle, hosted experiences, reports, voice and coding.

View API

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.

Never expose your API key in client-side code. Store it in a protected server environment.
Authentication · http
X-API-Key: YOUR_API_KEY

From access to integration.

  1. 1Request API access.
  2. 2Receive an API key from QuillBio.
  3. 3Store the API key securely on your backend.
  4. 4Call the QuillBio API.
  5. 5Render the returned intelligence inside your product.

Make your first request.

Use the metadata endpoint to confirm access and discover current capabilities and limits.

Example · bash
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.

Resume + Job DescriptionresumeQScore · Profile · Gaps · RisksYour platform

Discover resumeQ capabilities.

GET/resumeiq/meta

Retrieve current resumeQ limits and metadata. Use this response as the source of truth.

Evaluate a resume.

POST/resumeiq/evaluate

Send a PDF or DOCX—or pre-extracted text—with a required job description using multipart/form-data.

FieldRequirementDescription
resumeOne of resume / resume_textPDF or DOCX, maximum 5 MB
resume_textOne of resume / resume_textPre-extracted resume text
jd_textRequiredJob description
role_categoryOptionalRole category context
use_llmOptionalDefaults to true
Request · bash
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
Response · json
{
  "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.

POST/resumeiq/evaluate/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.

Accepted response · json
{
  "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.

GET/resumeiq/evaluate/batch/{batch_id}

Poll the returned URL to follow progress and retrieve results when complete.

Current behavior: resumeQ batch processing does not currently provide a webhook.

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.

GET/interviewiq/v1/meta

Returns available interview types, difficulties, scopes, limits, usage and branding.

Example · bash
curl https://api.quillbio.example/interviewiq/v1/meta \
  -H "X-API-Key: $KEY"

Create an interview session.

POST/interviewiq/v1/sessions

Creating a session is free. candidate.external_id is your candidate identifier. Resume context can ground behavioral and resume-based interviews.

Request · json
{
  "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.

POST/interviewiq/v1/sessions/{id}/start

Starts the interview and returns the first question.

Response · json
{
  "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.

POST/interviewiq/v1/sessions/{id}/answer

Returns the next question. Use is_complete to determine when the sequence has finished.

Request · json
{
  "question_id": "a93f...",
  "answer_text": "I led the migration..."
}

End and evaluate.

POST/interviewiq/v1/sessions/{id}/end

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.

Some scores may be null when there is insufficient evidence.

Retrieve the report.

GET/interviewiq/v1/sessions/{id}/report

Retrieve the evaluation after completion.

Representative response · json
{
  "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.

POST/interviewiq/v1/sessions/{id}/transcribe

For spoken interviews, send audio to this session-scoped endpoint and feed the resulting text into /answer.

Request · json
{
  "audio": "<base64-encoded-audio>"
}
Response · json
{
  "text": "I built and shipped a billing service..."
}

Support coding interview interactions.

POST/interviewiq/v1/sessions/{id}/code/run

Requests a model-simulated run for the current code.

POST/interviewiq/v1/sessions/{id}/code/submit

Submits code as the completed answer.

POST/interviewiq/v1/sessions/{id}/code/save

Saves in-progress code for the session.

Current limitation: Execution is simulated by a model rather than run in a code sandbox, and the current question bank does not provide real test cases.

Choose hosted or headless interviews.

POST/interviewiq/v1/sessions/{id}/launch

Headless integration

Build the UI and drive session endpoints.

Hosted integration

Call /launch, then redirect or embed the short-lived interview URL.

Launch response · json
{
  "url": "...",
  "token": "...",
  "expires_at": "...",
  "embeddable": true
}
Browser security: Only the short-lived session token should reach the candidate browser.
Your backend → Create session
Hosted or headless → Candidate completes
QuillBio evaluates → Backend receives report
Your platform → Displays results

Reference

Errors.

400Bad request / invalid state
401Missing, unknown or revoked API key
402Monthly quota exhausted
403Client suspended / missing permission
404Resource not found
413Payload or file too large
422Validation error
429Rate limit exceeded

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

API keys belong on the server.
Never put API keys in frontend JavaScript.
Never commit keys to Git.
Rotate or revoke compromised keys.
Hosted interview tokens are short-lived.
Candidate browsers receive session tokens, not API keys.

Powered by QuillBio.

QuillBio-powered integrations include Powered by QuillBio attribution.

Powered by QuillBio

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

Build with QuillBio

Bring hiring intelligence into your product.

Bring resume intelligence and AI-powered interviews directly into your product.