Integration API

Integration API

REST endpoints and webhook notifications for connecting your ATS or HR platform to the AI Interview System.

The Integration API gives external systems — ATS platforms, HR tools, and hiring portals — a clean REST interface to create and manage AI-powered interviews. Teamcast acts as a targeted qualification validation layer: you send recruiter intent as natural-language qualification statements; Teamcast maps them internally to skills, generates the interview plan, conducts the session, and delivers a structured assessment back via webhooks.

Base URLAuthFormat
https://mayaapi.teamcast.ai/api/v1/integrationX-API-Key + X-Tenant-ID headersapplication/json
Webhook URL is registered once per tenant in your account settings — not passed per-request. Set autoApprovePlans: true in your tenant config to skip the manual plan approval gate.

Guides

Complete Workflow

A typical integration flows from interview creation to candidate link delivery:

text
Your System                        AI Interview System
      |                                    |
      |-- POST /integration/interviews --->|  (qualifications[], candidateRef)
      |                                    |-- Validate data
      |                                    |
      |   IF data is complete:             |
      |<-- 201 { state: VALIDATING } ------|
      |<-- webhook: plan_generated --------|  (plan ready)
      |                                    |
      |   IF data is incomplete:           |
      |<-- 201 { state: INFO_NEEDED } -----|
      |<-- webhook: info_needed ----------|
      |                                    |
      |   [Supply missing fields]          |
      |-- PATCH .../info ----------------->|
      |<-- webhook: info_completed --------|
      |<-- webhook: plan_generated --------|
      |                                    |
      |   [Recruiter reviews plan]         |
      |   OR autoApprovePlans=true ------->|  (no manual step)
      |-- POST .../plan/approve ---------->|
      |<-- 200 { interviewLink: ... } -----|
      |<-- webhook: interview.approved ----|

Endpoints at a Glance

MethodEndpointDescription
POST/integration/interviewsSubmit an interview request
GET/integration/interviews/:runIdGet current status, plan, and assessment
DELETE/integration/interviews/:runIdCancel an interview
PATCH/integration/interviews/:runId/infoSupply missing data (state: INFO_NEEDED)
POST/integration/interviews/:runId/plan/approveApprove the AI-generated plan
POST/integration/interviews/:runId/plan/rejectReject the plan with feedback
PATCH/integration/interviews/:runId/plan/reviseRequest targeted revisions
POST/integration/interviews/:runId/assessment/approveApprove the AI assessment
POST/integration/interviews/:runId/assessment/rejectReject the assessment
POST/integration/interviews/:runId/assessment/chatAsk questions about an assessment
DELETE/integration/interviews/:runId/candidate-dataPurge candidate PII from a record
GET/integration/rankingsCandidate rankings by assessment score

Quick Start — Qualification-First

bash
# Submit an interview using qualification statements — no PII required
curl -X POST https://mayaapi.teamcast.ai/api/v1/integration/interviews \
  -H "X-API-Key: your_api_key" \
  -H "X-Tenant-ID: your_tenant_id" \
  -H "Content-Type: application/json" \
  -d '{
    "candidateRef": "li_app_a1b2c3d4",
    "position": "Senior Software Engineer",
    "level": "SENIOR",
    "qualifications": [
      "5+ years production TypeScript experience",
      "Demonstrated distributed systems design",
      "Strong async/concurrency patterns knowledge"
    ],
    "companyName": "Acme Corp"
  }'
Response 201
{
  "runId": "run_1749123456_a1b2c3d4",
  "interviewId": "interview-uuid",
  "state": "VALIDATING_SKILLS",
  "message": "Interview request accepted. Skill validation in progress.",
  "dataQuality": "EXCELLENT"
}

Workflow States

StateDescription
RECEIVEDRequest received, data validation running
INFO_NEEDEDCritical data is missing — supply via PATCH .../info
VALIDATING_SKILLSQualifications validated, plan generation started
GENERATING_PLANPlan regenerating (after revision request)
PENDINGPlan ready — awaiting recruiter approval (skipped if autoApprovePlans)
APPROVEDPlan approved, candidate interview link generated
REJECTEDPlan rejected by recruiter
SCHEDULEDInterview scheduled
IN_PROGRESSInterview currently running
COMPLETEDInterview complete, assessment available
ASSESSMENT_PENDINGAwaiting recruiter assessment verdict
ASSESSMENT_APPROVEDAssessment approved
CANCELLEDInterview cancelled
Webhook notifications are sent to the URL registered in your tenant settings. See the Webhooks guide for event schemas and HMAC signature verification.
Was this page helpful?