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 http://localhost:3009/api/docs.

Base URL

text
http://localhost:3009/api/v1
EnvironmentBase URL
Developmenthttp://localhost:3009/api/v1
Swagger UIhttp://localhost:3009/api/docs
OpenAPI JSONhttp://localhost:3009/api/docs-json
Agent Cardhttp://localhost:3009/.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, A2A protocol
OAuth 2.0Authorization: Bearer <token>Scoped client credentials

Endpoint Summary

ModuleEndpointsAuth
AuthenticationPOST /auth/login, POST /auth/oauth/tokenNone
InterviewsGET/POST /interviews, GET/PUT/DELETE /interviews/:idJWT
A2A ProtocolPOST /a2a/interview, GET /a2a/interview/:runId/status, ...API Key / OAuth2
Candidate AccessGET /candidate-access/:token/info, POST .../request-otp, ...Token-based
WorkflowPOST /workflow/interviews/:id/transition, GET .../state, ...JWT
UsersGET/POST /users, GET/PUT/DELETE /users/:idJWT
TenantsGET/POST /tenants, GET/PUT/DELETE /tenants/:idJWT
API KeysGET/POST /api-keys, DELETE /api-keys/:idJWT
OAuth ClientsGET/POST /oauth-clientsJWT
MCP SkillsPOST /mcp/skills/validate, GET/POST /mcp/skillsJWT
Admin MonitoringGET /admin/metrics/system, .../agents, .../workflowsJWT
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?