Skip to main content
The JobMojito API is a set of HTTPS endpoints. Calls are simple: POST a JSON body, get a JSON response.

Base URL

https://cool.jobmojito.com/functions/v1
A full endpoint URL is the base URL plus the endpoint path, e.g. https://cool.jobmojito.com/functions/v1/job-interview-create.

Conventions

  • Method: all endpoints use POST.
  • Auth: every request needs Authorization: Bearer <token> - see Authentication.
  • Request body: application/json (one endpoint, the binary resume upload, uses multipart/form-data).
  • Response body: application/json.
  • IDs: resources are identified by UUIDs.
curl https://cool.jobmojito.com/functions/v1/job-interview-create \
  -H "Authorization: Bearer <your-token>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Project manager",
    "location": "remote",
    "interview_template_id": "…",
    "mojito_language_code": "en",
    "status": "active",
    "type": "interview",
    "visibility": "merchant_public"
  }'

Environments

Resources (interviews, results, webhooks) are scoped to an environment so you can keep test data separate from live data. Your token determines the environment it operates in. Webhooks are also configured per environment, so a staging endpoint never receives production events. Talk to your account contact if you need a separate test environment.

Errors

When a request fails, you get a non-2xx status and a JSON error envelope:
{ "error": "Field is required.", "name": "interview_template_id" }
  • error - a human-readable message.
  • name - present for field-level validation problems; the name of the offending field.

Status codes

StatusMeaning
200Success.
401Missing or invalid authentication.
403Authenticated but not permitted.
404Resource not found.
409Conflict - the request can’t be applied in the current state.
422Validation error (a field is missing or invalid).
500Unexpected server error.

Batch endpoints return per-row results

Endpoints that act on a list - invite-users and job-interview-register-users - process each row independently and always return HTTP 200 with a results array. A bad row doesn’t fail the whole request; instead that row carries an error while the others succeed:
[
  { "email": "ok@example.com", "result": "ok", "interview_url": "https://…" },
  { "email": "bad", "result": "Error: Email address is not valid" }
]
Always inspect each row’s result field rather than relying on the HTTP status alone.

Credits

Some actions consume your account’s credits - for example creating an interview, running a pre-screen, or generating a PDF report. A few options add cost on top (e.g. translating a report to another language, or enabling full-session recording). Your current balance and usage are visible in the admin. See How credits work for per-action costs, plans and top-ups.

OpenAPI specification & MCP

The entire API is described by a machine-readable OpenAPI 3.1 document, which powers this reference and can be imported into your own tooling:
https://cool.jobmojito.com/functions/v1/openapi
Webhooks have their own spec:
https://cool.jobmojito.com/functions/v1/openapi-webhooks
Because the spec is OpenAPI, the API is also MCP-friendly - AI agents can discover and call the endpoints from the same definition. Each endpoint and field includes a description to guide automated use.

Endpoints

Interviews & assessments

EndpointPurpose
POST /job-interview-createCreate a new interview (AI-generated questions from a job description).
POST /job-interview-create-from-arrayCreate an interview from your own array of questions.
POST /job-interview-create-for-candidate-with-tokenCreate an interview for a candidate and get a ready-to-use access URL.
POST /job-interview-getFetch an interview definition.
POST /job-interview-set-stateChange an interview’s lifecycle state and/or manage its iframe embed key.
POST /job-interview-tokenGenerate a signed interview URL.
POST /job-interview-result-request-another-attemptAllow a candidate another attempt.

Candidates & invitations

EndpointPurpose
POST /invite-usersInvite users / candidates (batch, per-row results).
POST /job-interview-register-usersRegister candidates for an interview and get their links (batch, per-row results).

Results & reports

EndpointPurpose
POST /job-interview-detailsGet an interview result with full transcript and AI analysis.
POST /job-interview-pdfGenerate a branded PDF / HTML / JSON interview report.

Pre-screening

EndpointPurpose
POST /pre-screening-createCreate or update a pre-screening position.
POST /job-interview-pre-screening-api-resume-textPre-screen a candidate from a plaintext resume.
POST /job-interview-pre-screening-api-resume-binaryPre-screen a candidate from an uploaded resume file.

Knowledge base

EndpointPurpose
POST /knowledge-base-document-uploadUpload a document the AI can draw questions/context from.
See the API Reference for each endpoint’s exact request and response schema, or fetch the OpenAPI spec.