Analysis

Get the AI analysis

GET/interviews/{id}/analysis

The analysis status, and the full result once status is completed (otherwise result is null).

Path parameters

  • idstringrequiredpattern ^[0-9a-fA-F]{24}$

    A 24-character hex ID.

    Example: "66f3a1c2e4b0a1d2c3e4f530"

Responses

200

The analysis.

Body AnalysisResponse

  • dataAnalysisrequired
    • statusstringrequired

      Values: "not_requested", "pending", "processing", "completed", "failed"

    • requestedAtstring (date-time) | nullrequired
    • completedAtstring (date-time) | nullrequired
    • resultone ofrequired

      Present once status is completed; otherwise null.

  • timestampinteger (int64)required

    Server time in milliseconds since the Unix epoch.

{
  "data": {
    "status": "completed",
    "requestedAt": "2026-09-26T03:00:00.000Z",
    "completedAt": "2026-09-26T03:01:42.000Z",
    "result": {
      "evaluationScores": {
        "communication_score": 84,
        "criteria_match_score": 78,
        "competency_score": 81,
        "cultural_fit_score": 88,
        "overall_score": 82
      },
      "detailedAssessment": {
        "communication": {
          "strengths": [
            "Clear structure",
            "Calm delivery"
          ],
          "weaknesses": [
            "Some answers ran long"
          ],
          "observations": "Explains decisions step by step and checks understanding."
        },
        "competency_assessment": {
          "observed_strengths": [
            "Shift planning",
            "Safety awareness"
          ],
          "areas_for_improvement": [
            "Inventory software"
          ],
          "relevant_examples": [
            "Reorganised picking routes during peak season"
          ],
          "observations": "Strong hands-on leadership with concrete examples."
        },
        "red_flags": [],
        "positive_indicators": [
          "Took ownership of a safety incident"
        ]
      },
      "hiringRecommendation": {
        "decision": "YES",
        "confidence_level": "MEDIUM",
        "primary_reasons": [
          "Relevant supervisory experience",
          "Good safety mindset"
        ],
        "risks": [
          "Limited experience with the WMS we use"
        ],
        "conditions": [
          "Training on the warehouse management system"
        ]
      },
      "summary": {
        "one_line_summary": "Experienced, safety-minded supervisor who communicates clearly.",
        "key_strengths": "Team leadership under pressure; safety awareness.",
        "key_concerns": "Little exposure to warehouse software.",
        "fit_assessment": "GOOD"
      },
      "analyzedAt": "2026-09-26T03:01:42.000Z"
    }
  },
  "timestamp": 1790398800000
}
400

The request is invalid. message is the first validation error.

Body Error

  • successbooleanrequired

    Values: false

  • messagestringrequired

    A human-readable error message.

  • timestampinteger (int64)required

    Server time in milliseconds since the Unix epoch.

Example
{
  "success": false,
  "message": "limit must be between 1 and 100",
  "timestamp": 1790330400000
}
401

The API key is missing, malformed, invalid or revoked.

Body Error

  • successbooleanrequired

    Values: false

  • messagestringrequired

    A human-readable error message.

  • timestampinteger (int64)required

    Server time in milliseconds since the Unix epoch.

{
  "success": false,
  "message": "API key is required. Send it as 'Authorization: Bearer <key>'",
  "timestamp": 1790330400000
}
403

API access is disabled for your organization (any endpoint), or, when creating an invite, your organization has no active subscription or no interview credits left.

Body Error

  • successbooleanrequired

    Values: false

  • messagestringrequired

    A human-readable error message.

  • timestampinteger (int64)required

    Server time in milliseconds since the Unix epoch.

{
  "success": false,
  "message": "API access is not enabled for this organization",
  "timestamp": 1790330400000
}
404

The resource doesn't exist, was cancelled, or belongs to another organization. The API never returns 403 for another organization's IDs.

Body Error

  • successbooleanrequired

    Values: false

  • messagestringrequired

    A human-readable error message.

  • timestampinteger (int64)required

    Server time in milliseconds since the Unix epoch.

Example
{
  "success": false,
  "message": "Interview not found",
  "timestamp": 1790330400000
}
429

Too many requests. Wait for Retry-After seconds (or the reset value in RateLimit), then retry.

Headers

  • RateLimitstring

    Draft-7 rate limit state, e.g. limit=120, remaining=0, reset=42 (reset is in seconds).

  • RateLimit-Policystring

    Draft-7 rate limit policy: the limit and the window in seconds.

  • Retry-Afterinteger

    Seconds to wait before retrying.

Body Error

  • successbooleanrequired

    Values: false

  • messagestringrequired

    A human-readable error message.

  • timestampinteger (int64)required

    Server time in milliseconds since the Unix epoch.

Example
{
  "success": false,
  "message": "Too many requests. Retry after the number of seconds in the RateLimit header.",
  "timestamp": 1790330400000
}