dynamic:resumes

API Reference

Build your own candidate platform on the Dynamic Resumes pipeline: submit a candidate, get back an AI screening interview, a scored talkable resume, a consented avatar twin, and per-recipient tracked links. Your webhook hears every stage.

Base URL https://www.dynamicresumes.ai · Authenticate every request with Authorization: Bearer dr_live_… (issued at purchase; view, rotate, or revoke keys any time in your client portal). Limits follow your plan's monthly candidate quota.

POST/v1/candidates — submit a candidate

{
  "name": "Jordan Ellis",
  "email": "jordan@example.com",
  "resume_text": "…full resume text…",
  "job_description": "…the JD to screen against…",
  "webhook_url": "https://yourats.com/hooks/dr"   // optional
}
→ 201 { "interview_token": "…", "interview_link": "https://…/interview/…", "status": "awaiting_interview" }

Send the candidate the interview_link. They consent on camera, complete the AI screen, and the pipeline publishes their Dynamic Resume automatically — scorecard, avatar twin, the lot. The interview_token is your candidate id for every call below.

GET/v1/candidates — list your candidates

→ 200 { "candidates": [{ "slug", "name", "title", "avatar_status", "overall", "revoked", "created_at" }] }

GET/v1/candidates/{token} — status

→ 200 { "status": "created|in_progress|scored|published", "resume_url", "scorecard", "avatar_status" }

GET/v1/candidates/{token}/resume — full structured resume

The complete candidate record (experience, skills, scorecard, education…) as JSON, for rendering in your own UI instead of ours.

POST/v1/candidates/{token}/twin-session — live avatar session

→ 200 { "provider": "simli", "agentId", "sessionToken" }
   or { "provider": "tavus", "conversationUrl" }

Mint a real-time conversation with the candidate's twin for embedding in your own pages. Pass {"link_token": "…"} to attribute the session to a tracked link.

POST/v1/candidates/{token}/links — create a tracked link

{ "label": "Sarah Chen @ Google" }
→ 201 { "link_token", "url", "label" }

One link per recipient. Opens, last-seen, and every question they ask the avatar attribute to that recipient.

GET/v1/candidates/{token}/links — link analytics

→ 200 { "links": [{ "label", "url", "opens", "last_seen", "questions": [{"t","q"}] }] }

DELETE/v1/candidates/{token} — revoke

The candidate kill switch: takes the resume page, twin, and every tracked link offline immediately. Honors the likeness license.

Webhooks

If you set webhook_url, we POST signed events (X-DR-Signature: HMAC-SHA256 of the body with your API secret): interview.completed (with scorecard) and resume.published (with resume_url). Three retries with backoff.

Questions or higher limits: contact us. · Terms · Privacy