API Reference

API Reference

Complete documentation for all REST endpoints.

The AI Interview System exposes a RESTful HTTP API with a global prefix of /api/v1. All endpoints return JSON and follow consistent error format. Interactive documentation is available via Swagger UI at https://mayaapi.teamcast.ai/api/docs.

Base URL

text
https://mayaapi.teamcast.ai/api/v1
EnvironmentBase URL
Developmenthttps://mayaapi.teamcast.ai/api/v1
Swagger UIhttps://mayaapi.teamcast.ai/api/docs
OpenAPI JSONhttps://mayaapi.teamcast.ai/api/docs-json
Agent Cardhttps://mayaapi.teamcast.ai/.well-known/agent.json

Guides

Authentication

All endpoints (except health checks and agent card) require one of three authentication methods:

MethodHeaderUse Case
JWT BearerAuthorization: Bearer <token>Admin UI, recruiter operations
API KeyX-API-Key: <key>External integrations, server-to-server calls
OAuth 2.0Authorization: Bearer <token>Scoped client credentials

Endpoint Summary

ModuleEndpointsAuth
AuthenticationPOST /auth/login, POST /oauth/tokenNone
InterviewsGET/POST /interviews, GET/PUT/DELETE /interviews/:id, POST /:id/conduct, POST /:id/assessJWT
Integration APIPOST /integration/interviews, GET /integration/interviews/:runId, ...API Key / OAuth2
Candidate AccessGET /candidate-access/:token/info, POST .../request-otp, ...Token-based
WorkflowPOST /workflow/interviews/:id/transition, GET .../state, GET .../history, ...JWT
UsersGET/POST /users, GET/PUT/DELETE /users/:id, POST /:id/change-passwordJWT
TenantsGET/POST /tenants, GET/PUT/DELETE /tenants/:idJWT
API KeysGET/POST /api-keys, GET/DELETE /api-keys/:idJWT
OAuth ClientsGET/POST /oauth-clients, GET/DELETE /oauth-clients/:idJWT
MCP SkillsPOST /mcp/skills/validate, GET/POST /mcp/skills, DELETE /mcp/skills/:idJWT
TTSPOST /tts/synthesizeNone
InvitationsPOST /invitations/tenants/:id, POST /invitations/platforms/:id, GET/POST /:tokenJWT / Public
RecordingGET /recording/:sessionId/chunks, GET /recording/:sessionId/streamJWT
Admin MonitoringGET /admin/metrics/system|agents|workflows, GET /admin/dashboard/interviewsJWT
HealthGET /health/live, GET /health/readyNone

Error Format

All errors follow a consistent JSON structure:

json
{
  "statusCode": 400,
  "message": "Validation failed",
  "error": "Bad Request",
  "details": [
    {
      "field": "candidateEmail",
      "message": "Must be a valid email address"
    }
  ]
}
Status CodeMeaning
200Success
201Created
400Bad Request — validation error
401Unauthorized — missing or invalid auth
403Forbidden — insufficient permissions
404Not Found
429Too Many Requests — rate limit (100 req/min)
500Internal Server Error
The Swagger UI at /api/docs provides interactive documentation where you can test endpoints directly. Use the “Authorize” button to add your JWT token or API key.
Was this page helpful?