Interview League API
Connect your personal agent
Use your personal agent—such as Muse, GrokBot, or Instinct—to research companies, jobs, networking connections, and confirmed interviewers. If it supports web research and authenticated HTTP requests, send it straight into Interview League. The API creates the opportunity with its job description and your resume, adds each confirmed interviewer, and returns a link you can open to prepare and practice in Interview League.
The API is available on every plan. Your plan's limits apply exactly as they do in the app: Free personalizes the hiring manager on one opportunity (set roundType to hiring_manager); Pro covers ten active opportunities with up to ten interviewers each in any round, plus the paid intelligence sections. Recruiter rounds are never personalized.
1. Create a token
Go to Settings → API Access, choose a name and an expiry (7, 30, or 90 days), and copy the token. It starts with il_pat_ and is shown only once.
export INTERVIEWLEAGUE_TOKEN="il_pat_..."
export IL_API="https://interview-prep-backend-production-3b9c.up.railway.app/api/v1"2. Check who you are and what you can do
curl -s "$IL_API/me" -H "Authorization: Bearer $INTERVIEWLEAGUE_TOKEN"The response includes your plan (entitlements.plan.tier and status), the token's expiry, and remaining usage, such as how many personalized interviewers you have left.
3. Save your default resume once
curl -s -X PUT "$IL_API/profile/resume" \
-H "Authorization: Bearer $INTERVIEWLEAGUE_TOKEN" -H "Content-Type: application/json" \
-d '{"resumeText": "…your resume…"}'Opportunities created without a resumeText use it automatically. Send resumeText on an opportunity to use a tailored resume for that role instead.
4. Check you haven't saved the role already, then create it
curl -s "$IL_API/opportunities?postingUrl=https://jobs.acme.com/vp-product" \
-H "Authorization: Bearer $INTERVIEWLEAGUE_TOKEN"curl -s -X POST "$IL_API/opportunities" \
-H "Authorization: Bearer $INTERVIEWLEAGUE_TOKEN" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"company": "Acme",
"role": "VP Product",
"postingUrl": "https://jobs.acme.com/vp-product",
"jobDescription": "…full JD text…",
"researchNotes": "Series C, 400 people, moving upmarket",
"sources": ["https://acme.com/about"]
}'Prefer files? Send multipart/form-data with jdFile and/or resumeFile (PDF, up to 5MB).
To be explicit about where each input comes from, send jdSource (url, pdf, or text) and resumeSource (profile, pdf, or text). Only that input may be filled in. With jdSource: "url" we read postingUrl for you, unless you send the text as jobDescription. Leave both out and the API behaves as before.
Saving the same postingUrl twice returns 409 OPPORTUNITY_EXISTS with the existing opportunity's id. Tracking parameters (utm_*, gclid, ref…), www., and trailing slashes are ignored; other query parameters, such as a job ID, are kept.
5. Add or update confirmed interviewer profiles
List the opportunity's interviewers first. Update the matching profile with PATCHwhen it already exists; create one only for a newly confirmed interviewer. Save relevant public background in profileText and source links and research context in notes. Keep potential networking contacts in the opportunity's research notes instead.
curl -s "$IL_API/opportunities/$OPP_ID/interviewers" \
-H "Authorization: Bearer $INTERVIEWLEAGUE_TOKEN"
curl -s -X PATCH "$IL_API/opportunities/$OPP_ID/interviewers/$IV_ID" \
-H "Authorization: Bearer $INTERVIEWLEAGUE_TOKEN" -H "Content-Type: application/json" \
-d '{"profileText": "…verified public background…", "notes": "…existing notes plus sourced research…"}'6. Return to Interview League to prepare
curl -s "$IL_API/opportunities/$OPP_ID" \
-H "Authorization: Bearer $INTERVIEWLEAGUE_TOKEN"Return the opportunity's webUrl after confirming the updates succeeded. Open it to review the interviewer profile, generate AI prep where your plan allows, and practice in Interview League. The agent's research task ends with that handoff.
Next
- Prepare for interviews: example instructions to adapt for your agent.
- Authentication
- Errors & limits
- API reference