API Reference / Results

GET/v1/operations/{operation_id}

Returns the stored outcome of a detection, enrollment or verification by its operation_id (kept for 30 days), for example after your connection dropped before the response arrived. Requires the scope of the operation's type.

Authentication

Send your API key as Authorization: Bearer <your API key>.

Headers

NameTypeDetails
Authorizationrequiredstring

Bearer <your API key>. Keys are created in the dashboard; see Authentication.

Path parameters

NameTypeDetails
operation_idrequiredstring

The operation_id from a response (op_...).

Response

200 Success.

  • request_idstringrequired
  • objectstringrequired

    always "operation"

  • operation_idstringrequired
  • typestringrequired

    One of: deepfake.detect, speaker.enroll, speaker.verify

  • statusstringrequired

    One of: pending, reserved, running, succeeded, failed

  • sourcestringrequired

    One of: api, dashboard, mcp

  • parent_operation_idstring or nullrequired
  • credits_chargedintegerrequired
  • created_atstringrequired
  • completed_atstring or nullrequired
  • resultobject or nullrequired

    The original success response body (without request_id).

  • errorobject or nullrequired
    4 fields in error
    • typestringrequired

      One of: invalid_request, authentication, permission, not_found, conflict, rate_limited, insufficient_credits, payload_too_large, unsupported_media, unprocessable_audio, overloaded, internal

    • codestringrequired

      Stable snake_case error code.

    • messagestringrequired

      Human-readable explanation. Do not parse.

    • paramstring or null

      The request field the error refers to, if any.

  • partialobject or null

    For a failed verification whose synthetic-speech check completed: that result.

Example response

JSON
{
  "request_id": "req_8f14e45fceea167a5a36dedd",
  "object": "operation",
  "operation_id": "op_6f1ed002ab5595859014ebf0951522d9",
  "type": "deepfake.detect",
  "status": "succeeded",
  "source": "api",
  "created_at": "2026-10-13T09:30:00Z",
  "completed_at": "2026-10-13T09:30:01Z",
  "result": {
    "operation_id": "op_6f1ed002ab5595859014ebf0951522d9",
    "object": "deepfake.detection",
    "result": {
      "label": "genuine",
      "score": 0.0731
    }
  }
}

Errors

StatusMeaning
400

The request is invalid, for example a missing or malformed field.

401

The API key is missing, invalid or revoked.

403

The key lacks the required scope, the email address is not verified, or the account is suspended.

404

Not found. Also returned for resources that belong to another account.

429

Too many requests or too many operations at the same time. Wait for the number of seconds in Retry-After.

500

Something went wrong on our side. No credits were used.

Error bodies share one shape with a stable error.code; see Errors for every code and how to fix it.

Code samples

cURL
curl "https://platform.detectif.ai/v1/operations/op_0123456789abcdef0123456789abcdef" \
  -H "Authorization: Bearer $DETECTIF_API_KEY"