{
  "info": {
    "_postman_id": "faa6e638-1237-48b2-ada8-880833968d71",
    "name": "DetectifAI API",
    "description": "The DetectifAI REST API: detect AI-generated speech, and enroll and verify speakers by voice.\n\n1. Set the `apiKey` collection variable to your API key (create one under API keys in the dashboard). Keep it in the Current value so it is not shared.\n2. For uploads, choose an audio file for the `file` form field (up to 100 MB).\n3. Each upload sends a new `Idempotency-Key` (`{{$guid}}`). To retry a request without running it twice, replace it with the value you sent the first time.\n\nDocs: https://platform.detectif.ai/docs/api/ · OpenAPI: https://platform.detectif.ai/openapi.json",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "item": [
    {
      "name": "Deepfake detection",
      "description": "Check recordings for AI-generated speech.",
      "item": [
        {
          "name": "Detect AI-generated speech",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "type": "text",
                "description": "Optional (recommended) key that makes retries safe for 24 h: a retry with the same key and the same request returns the stored response without charging again."
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/deepfake/detect",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "deepfake",
                "detect"
              ]
            },
            "description": "Checks whether a recording contains AI-generated speech. Send one audio file longer than 4 seconds and at most 120 seconds. Use the result's `verdict`: `real`, `fake`, or `not_sure` when the recording cannot be judged reliably (try a longer or cleaner recording). `score` (0 to 1, higher means more likely AI-generated) is kept for older clients together with `label` and `is_synthetic`. A `not_sure` verdict uses credits like any result, except when the check could not run completely: then `credits.charged` is 0. Main failures: the file is not audio or is damaged (415/422), 4 seconds or shorter or longer than 120 seconds (422), not enough credits (402), the service is busy (503, retry later). Requires scope `deepfake:detect`.\n\nDocs: https://platform.detectif.ai/docs/api/detect-deepfake/",
            "body": {
              "mode": "formdata",
              "formdata": [
                {
                  "key": "file",
                  "type": "file",
                  "src": [],
                  "description": "The audio file: WAV, MP3, FLAC, OGG/Opus, WebM, M4A/AAC or AIFF, at most 100 MB."
                }
              ]
            }
          },
          "response": [
            {
              "name": "200 Real",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Idempotency-Key",
                    "value": "{{$guid}}",
                    "type": "text",
                    "description": "Optional (recommended) key that makes retries safe for 24 h: a retry with the same key and the same request returns the stored response without charging again."
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/v1/deepfake/detect",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "deepfake",
                    "detect"
                  ]
                },
                "description": "Checks whether a recording contains AI-generated speech. Send one audio file longer than 4 seconds and at most 120 seconds. Use the result's `verdict`: `real`, `fake`, or `not_sure` when the recording cannot be judged reliably (try a longer or cleaner recording). `score` (0 to 1, higher means more likely AI-generated) is kept for older clients together with `label` and `is_synthetic`. A `not_sure` verdict uses credits like any result, except when the check could not run completely: then `credits.charged` is 0. Main failures: the file is not audio or is damaged (415/422), 4 seconds or shorter or longer than 120 seconds (422), not enough credits (402), the service is busy (503, retry later). Requires scope `deepfake:detect`.\n\nDocs: https://platform.detectif.ai/docs/api/detect-deepfake/",
                "body": {
                  "mode": "formdata",
                  "formdata": [
                    {
                      "key": "file",
                      "type": "file",
                      "src": [],
                      "description": "The audio file: WAV, MP3, FLAC, OGG/Opus, WebM, M4A/AAC or AIFF, at most 100 MB."
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\",\n  \"operation_id\": \"op_6f1ed002ab5595859014ebf0951522d9\",\n  \"object\": \"deepfake.detection\",\n  \"idempotent_replay\": false,\n  \"result\": {\n    \"threshold\": 0.62,\n    \"score_semantics\": \"Higher means more likely AI-generated. Decide with the verdict, not the score alone.\",\n    \"verdict\": \"real\",\n    \"label\": \"genuine\",\n    \"is_synthetic\": false,\n    \"score\": 0.0731,\n    \"duration_seconds\": 6.4,\n    \"segments\": [\n      {\n        \"start\": 0,\n        \"end\": 4,\n        \"score\": 0.061\n      },\n      {\n        \"start\": 2,\n        \"end\": 6.4,\n        \"score\": 0.085\n      }\n    ]\n  }\n}"
            },
            {
              "name": "200 AI-generated",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Idempotency-Key",
                    "value": "{{$guid}}",
                    "type": "text",
                    "description": "Optional (recommended) key that makes retries safe for 24 h: a retry with the same key and the same request returns the stored response without charging again."
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/v1/deepfake/detect",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "deepfake",
                    "detect"
                  ]
                },
                "description": "Checks whether a recording contains AI-generated speech. Send one audio file longer than 4 seconds and at most 120 seconds. Use the result's `verdict`: `real`, `fake`, or `not_sure` when the recording cannot be judged reliably (try a longer or cleaner recording). `score` (0 to 1, higher means more likely AI-generated) is kept for older clients together with `label` and `is_synthetic`. A `not_sure` verdict uses credits like any result, except when the check could not run completely: then `credits.charged` is 0. Main failures: the file is not audio or is damaged (415/422), 4 seconds or shorter or longer than 120 seconds (422), not enough credits (402), the service is busy (503, retry later). Requires scope `deepfake:detect`.\n\nDocs: https://platform.detectif.ai/docs/api/detect-deepfake/",
                "body": {
                  "mode": "formdata",
                  "formdata": [
                    {
                      "key": "file",
                      "type": "file",
                      "src": [],
                      "description": "The audio file: WAV, MP3, FLAC, OGG/Opus, WebM, M4A/AAC or AIFF, at most 100 MB."
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\",\n  \"operation_id\": \"op_6f1ed002ab5595859014ebf0951522d9\",\n  \"object\": \"deepfake.detection\",\n  \"idempotent_replay\": false,\n  \"result\": {\n    \"threshold\": 0.62,\n    \"score_semantics\": \"Higher means more likely AI-generated. Decide with the verdict, not the score alone.\",\n    \"verdict\": \"fake\",\n    \"label\": \"synthetic\",\n    \"is_synthetic\": true,\n    \"score\": 0.9127,\n    \"duration_seconds\": 9.1,\n    \"segments\": [\n      {\n        \"start\": 0,\n        \"end\": 4,\n        \"score\": 0.89\n      },\n      {\n        \"start\": 2,\n        \"end\": 6,\n        \"score\": 0.93\n      },\n      {\n        \"start\": 4,\n        \"end\": 8,\n        \"score\": 0.91\n      },\n      {\n        \"start\": 6,\n        \"end\": 9.1,\n        \"score\": 0.92\n      }\n    ]\n  }\n}"
            },
            {
              "name": "200 Not sure (try a longer or cleaner recording)",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Idempotency-Key",
                    "value": "{{$guid}}",
                    "type": "text",
                    "description": "Optional (recommended) key that makes retries safe for 24 h: a retry with the same key and the same request returns the stored response without charging again."
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/v1/deepfake/detect",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "deepfake",
                    "detect"
                  ]
                },
                "description": "Checks whether a recording contains AI-generated speech. Send one audio file longer than 4 seconds and at most 120 seconds. Use the result's `verdict`: `real`, `fake`, or `not_sure` when the recording cannot be judged reliably (try a longer or cleaner recording). `score` (0 to 1, higher means more likely AI-generated) is kept for older clients together with `label` and `is_synthetic`. A `not_sure` verdict uses credits like any result, except when the check could not run completely: then `credits.charged` is 0. Main failures: the file is not audio or is damaged (415/422), 4 seconds or shorter or longer than 120 seconds (422), not enough credits (402), the service is busy (503, retry later). Requires scope `deepfake:detect`.\n\nDocs: https://platform.detectif.ai/docs/api/detect-deepfake/",
                "body": {
                  "mode": "formdata",
                  "formdata": [
                    {
                      "key": "file",
                      "type": "file",
                      "src": [],
                      "description": "The audio file: WAV, MP3, FLAC, OGG/Opus, WebM, M4A/AAC or AIFF, at most 100 MB."
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\",\n  \"operation_id\": \"op_6f1ed002ab5595859014ebf0951522d9\",\n  \"object\": \"deepfake.detection\",\n  \"idempotent_replay\": false,\n  \"result\": {\n    \"threshold\": 0.62,\n    \"score_semantics\": \"Higher means more likely AI-generated. Decide with the verdict, not the score alone.\",\n    \"verdict\": \"not_sure\",\n    \"label\": \"uncertain\",\n    \"is_synthetic\": false,\n    \"score\": 0.7012,\n    \"duration_seconds\": 5.2,\n    \"segments\": [\n      {\n        \"start\": 0,\n        \"end\": 4,\n        \"score\": 0.69\n      },\n      {\n        \"start\": 1.2,\n        \"end\": 5.2,\n        \"score\": 0.71\n      }\n    ]\n  }\n}"
            },
            {
              "name": "400 Bad Request",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Idempotency-Key",
                    "value": "{{$guid}}",
                    "type": "text",
                    "description": "Optional (recommended) key that makes retries safe for 24 h: a retry with the same key and the same request returns the stored response without charging again."
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/v1/deepfake/detect",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "deepfake",
                    "detect"
                  ]
                },
                "description": "Checks whether a recording contains AI-generated speech. Send one audio file longer than 4 seconds and at most 120 seconds. Use the result's `verdict`: `real`, `fake`, or `not_sure` when the recording cannot be judged reliably (try a longer or cleaner recording). `score` (0 to 1, higher means more likely AI-generated) is kept for older clients together with `label` and `is_synthetic`. A `not_sure` verdict uses credits like any result, except when the check could not run completely: then `credits.charged` is 0. Main failures: the file is not audio or is damaged (415/422), 4 seconds or shorter or longer than 120 seconds (422), not enough credits (402), the service is busy (503, retry later). Requires scope `deepfake:detect`.\n\nDocs: https://platform.detectif.ai/docs/api/detect-deepfake/",
                "body": {
                  "mode": "formdata",
                  "formdata": [
                    {
                      "key": "file",
                      "type": "file",
                      "src": [],
                      "description": "The audio file: WAV, MP3, FLAC, OGG/Opus, WebM, M4A/AAC or AIFF, at most 100 MB."
                    }
                  ]
                }
              },
              "status": "Bad Request",
              "code": 400,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"invalid_request\",\n    \"code\": \"invalid_speaker_id\",\n    \"message\": \"speaker_id must be 1-64 characters from A-Z, a-z, 0-9, '_', '.', ':' and '-'.\",\n    \"param\": \"speaker_id\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "401 Unauthorized",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Idempotency-Key",
                    "value": "{{$guid}}",
                    "type": "text",
                    "description": "Optional (recommended) key that makes retries safe for 24 h: a retry with the same key and the same request returns the stored response without charging again."
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/v1/deepfake/detect",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "deepfake",
                    "detect"
                  ]
                },
                "description": "Checks whether a recording contains AI-generated speech. Send one audio file longer than 4 seconds and at most 120 seconds. Use the result's `verdict`: `real`, `fake`, or `not_sure` when the recording cannot be judged reliably (try a longer or cleaner recording). `score` (0 to 1, higher means more likely AI-generated) is kept for older clients together with `label` and `is_synthetic`. A `not_sure` verdict uses credits like any result, except when the check could not run completely: then `credits.charged` is 0. Main failures: the file is not audio or is damaged (415/422), 4 seconds or shorter or longer than 120 seconds (422), not enough credits (402), the service is busy (503, retry later). Requires scope `deepfake:detect`.\n\nDocs: https://platform.detectif.ai/docs/api/detect-deepfake/",
                "body": {
                  "mode": "formdata",
                  "formdata": [
                    {
                      "key": "file",
                      "type": "file",
                      "src": [],
                      "description": "The audio file: WAV, MP3, FLAC, OGG/Opus, WebM, M4A/AAC or AIFF, at most 100 MB."
                    }
                  ]
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"authentication\",\n    \"code\": \"invalid_api_key\",\n    \"message\": \"The API key is invalid.\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "402 Payment Required",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Idempotency-Key",
                    "value": "{{$guid}}",
                    "type": "text",
                    "description": "Optional (recommended) key that makes retries safe for 24 h: a retry with the same key and the same request returns the stored response without charging again."
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/v1/deepfake/detect",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "deepfake",
                    "detect"
                  ]
                },
                "description": "Checks whether a recording contains AI-generated speech. Send one audio file longer than 4 seconds and at most 120 seconds. Use the result's `verdict`: `real`, `fake`, or `not_sure` when the recording cannot be judged reliably (try a longer or cleaner recording). `score` (0 to 1, higher means more likely AI-generated) is kept for older clients together with `label` and `is_synthetic`. A `not_sure` verdict uses credits like any result, except when the check could not run completely: then `credits.charged` is 0. Main failures: the file is not audio or is damaged (415/422), 4 seconds or shorter or longer than 120 seconds (422), not enough credits (402), the service is busy (503, retry later). Requires scope `deepfake:detect`.\n\nDocs: https://platform.detectif.ai/docs/api/detect-deepfake/",
                "body": {
                  "mode": "formdata",
                  "formdata": [
                    {
                      "key": "file",
                      "type": "file",
                      "src": [],
                      "description": "The audio file: WAV, MP3, FLAC, OGG/Opus, WebM, M4A/AAC or AIFF, at most 100 MB."
                    }
                  ]
                }
              },
              "status": "Payment Required",
              "code": 402,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"insufficient_credits\",\n    \"code\": \"insufficient_credits\",\n    \"message\": \"Not enough credits are available for this operation.\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "403 Forbidden",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Idempotency-Key",
                    "value": "{{$guid}}",
                    "type": "text",
                    "description": "Optional (recommended) key that makes retries safe for 24 h: a retry with the same key and the same request returns the stored response without charging again."
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/v1/deepfake/detect",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "deepfake",
                    "detect"
                  ]
                },
                "description": "Checks whether a recording contains AI-generated speech. Send one audio file longer than 4 seconds and at most 120 seconds. Use the result's `verdict`: `real`, `fake`, or `not_sure` when the recording cannot be judged reliably (try a longer or cleaner recording). `score` (0 to 1, higher means more likely AI-generated) is kept for older clients together with `label` and `is_synthetic`. A `not_sure` verdict uses credits like any result, except when the check could not run completely: then `credits.charged` is 0. Main failures: the file is not audio or is damaged (415/422), 4 seconds or shorter or longer than 120 seconds (422), not enough credits (402), the service is busy (503, retry later). Requires scope `deepfake:detect`.\n\nDocs: https://platform.detectif.ai/docs/api/detect-deepfake/",
                "body": {
                  "mode": "formdata",
                  "formdata": [
                    {
                      "key": "file",
                      "type": "file",
                      "src": [],
                      "description": "The audio file: WAV, MP3, FLAC, OGG/Opus, WebM, M4A/AAC or AIFF, at most 100 MB."
                    }
                  ]
                }
              },
              "status": "Forbidden",
              "code": 403,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"permission\",\n    \"code\": \"insufficient_scope\",\n    \"message\": \"This API key is missing the required scope(s): deepfake:detect.\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "408 Request Timeout",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Idempotency-Key",
                    "value": "{{$guid}}",
                    "type": "text",
                    "description": "Optional (recommended) key that makes retries safe for 24 h: a retry with the same key and the same request returns the stored response without charging again."
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/v1/deepfake/detect",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "deepfake",
                    "detect"
                  ]
                },
                "description": "Checks whether a recording contains AI-generated speech. Send one audio file longer than 4 seconds and at most 120 seconds. Use the result's `verdict`: `real`, `fake`, or `not_sure` when the recording cannot be judged reliably (try a longer or cleaner recording). `score` (0 to 1, higher means more likely AI-generated) is kept for older clients together with `label` and `is_synthetic`. A `not_sure` verdict uses credits like any result, except when the check could not run completely: then `credits.charged` is 0. Main failures: the file is not audio or is damaged (415/422), 4 seconds or shorter or longer than 120 seconds (422), not enough credits (402), the service is busy (503, retry later). Requires scope `deepfake:detect`.\n\nDocs: https://platform.detectif.ai/docs/api/detect-deepfake/",
                "body": {
                  "mode": "formdata",
                  "formdata": [
                    {
                      "key": "file",
                      "type": "file",
                      "src": [],
                      "description": "The audio file: WAV, MP3, FLAC, OGG/Opus, WebM, M4A/AAC or AIFF, at most 100 MB."
                    }
                  ]
                }
              },
              "status": "Request Timeout",
              "code": 408,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"invalid_request\",\n    \"code\": \"upload_timeout\",\n    \"message\": \"The upload did not arrive in time: the whole request must be received within 120 s and at no less than 64 KB/s. Retry on a faster connection.\",\n    \"param\": \"file\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "409 Conflict",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Idempotency-Key",
                    "value": "{{$guid}}",
                    "type": "text",
                    "description": "Optional (recommended) key that makes retries safe for 24 h: a retry with the same key and the same request returns the stored response without charging again."
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/v1/deepfake/detect",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "deepfake",
                    "detect"
                  ]
                },
                "description": "Checks whether a recording contains AI-generated speech. Send one audio file longer than 4 seconds and at most 120 seconds. Use the result's `verdict`: `real`, `fake`, or `not_sure` when the recording cannot be judged reliably (try a longer or cleaner recording). `score` (0 to 1, higher means more likely AI-generated) is kept for older clients together with `label` and `is_synthetic`. A `not_sure` verdict uses credits like any result, except when the check could not run completely: then `credits.charged` is 0. Main failures: the file is not audio or is damaged (415/422), 4 seconds or shorter or longer than 120 seconds (422), not enough credits (402), the service is busy (503, retry later). Requires scope `deepfake:detect`.\n\nDocs: https://platform.detectif.ai/docs/api/detect-deepfake/",
                "body": {
                  "mode": "formdata",
                  "formdata": [
                    {
                      "key": "file",
                      "type": "file",
                      "src": [],
                      "description": "The audio file: WAV, MP3, FLAC, OGG/Opus, WebM, M4A/AAC or AIFF, at most 100 MB."
                    }
                  ]
                }
              },
              "status": "Conflict",
              "code": 409,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"conflict\",\n    \"code\": \"operation_in_progress\",\n    \"message\": \"A request with this Idempotency-Key is still being processed; retry later or poll the operation.\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\",\n  \"operation_id\": \"op_6f1ed002ab5595859014ebf0951522d9\"\n}"
            },
            {
              "name": "413 Payload Too Large",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Idempotency-Key",
                    "value": "{{$guid}}",
                    "type": "text",
                    "description": "Optional (recommended) key that makes retries safe for 24 h: a retry with the same key and the same request returns the stored response without charging again."
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/v1/deepfake/detect",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "deepfake",
                    "detect"
                  ]
                },
                "description": "Checks whether a recording contains AI-generated speech. Send one audio file longer than 4 seconds and at most 120 seconds. Use the result's `verdict`: `real`, `fake`, or `not_sure` when the recording cannot be judged reliably (try a longer or cleaner recording). `score` (0 to 1, higher means more likely AI-generated) is kept for older clients together with `label` and `is_synthetic`. A `not_sure` verdict uses credits like any result, except when the check could not run completely: then `credits.charged` is 0. Main failures: the file is not audio or is damaged (415/422), 4 seconds or shorter or longer than 120 seconds (422), not enough credits (402), the service is busy (503, retry later). Requires scope `deepfake:detect`.\n\nDocs: https://platform.detectif.ai/docs/api/detect-deepfake/",
                "body": {
                  "mode": "formdata",
                  "formdata": [
                    {
                      "key": "file",
                      "type": "file",
                      "src": [],
                      "description": "The audio file: WAV, MP3, FLAC, OGG/Opus, WebM, M4A/AAC or AIFF, at most 100 MB."
                    }
                  ]
                }
              },
              "status": "Payload Too Large",
              "code": 413,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"payload_too_large\",\n    \"code\": \"file_too_large\",\n    \"message\": \"The upload exceeds the 100 MB limit.\",\n    \"param\": \"file\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "415 Unsupported Media Type",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Idempotency-Key",
                    "value": "{{$guid}}",
                    "type": "text",
                    "description": "Optional (recommended) key that makes retries safe for 24 h: a retry with the same key and the same request returns the stored response without charging again."
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/v1/deepfake/detect",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "deepfake",
                    "detect"
                  ]
                },
                "description": "Checks whether a recording contains AI-generated speech. Send one audio file longer than 4 seconds and at most 120 seconds. Use the result's `verdict`: `real`, `fake`, or `not_sure` when the recording cannot be judged reliably (try a longer or cleaner recording). `score` (0 to 1, higher means more likely AI-generated) is kept for older clients together with `label` and `is_synthetic`. A `not_sure` verdict uses credits like any result, except when the check could not run completely: then `credits.charged` is 0. Main failures: the file is not audio or is damaged (415/422), 4 seconds or shorter or longer than 120 seconds (422), not enough credits (402), the service is busy (503, retry later). Requires scope `deepfake:detect`.\n\nDocs: https://platform.detectif.ai/docs/api/detect-deepfake/",
                "body": {
                  "mode": "formdata",
                  "formdata": [
                    {
                      "key": "file",
                      "type": "file",
                      "src": [],
                      "description": "The audio file: WAV, MP3, FLAC, OGG/Opus, WebM, M4A/AAC or AIFF, at most 100 MB."
                    }
                  ]
                }
              },
              "status": "Unsupported Media Type",
              "code": 415,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"unsupported_media\",\n    \"code\": \"unsupported_format\",\n    \"message\": \"Unsupported file format. Upload WAV, MP3, FLAC, OGG/Opus, WebM, M4A/AAC or AIFF audio.\",\n    \"param\": \"file\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "422 Unprocessable Entity",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Idempotency-Key",
                    "value": "{{$guid}}",
                    "type": "text",
                    "description": "Optional (recommended) key that makes retries safe for 24 h: a retry with the same key and the same request returns the stored response without charging again."
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/v1/deepfake/detect",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "deepfake",
                    "detect"
                  ]
                },
                "description": "Checks whether a recording contains AI-generated speech. Send one audio file longer than 4 seconds and at most 120 seconds. Use the result's `verdict`: `real`, `fake`, or `not_sure` when the recording cannot be judged reliably (try a longer or cleaner recording). `score` (0 to 1, higher means more likely AI-generated) is kept for older clients together with `label` and `is_synthetic`. A `not_sure` verdict uses credits like any result, except when the check could not run completely: then `credits.charged` is 0. Main failures: the file is not audio or is damaged (415/422), 4 seconds or shorter or longer than 120 seconds (422), not enough credits (402), the service is busy (503, retry later). Requires scope `deepfake:detect`.\n\nDocs: https://platform.detectif.ai/docs/api/detect-deepfake/",
                "body": {
                  "mode": "formdata",
                  "formdata": [
                    {
                      "key": "file",
                      "type": "file",
                      "src": [],
                      "description": "The audio file: WAV, MP3, FLAC, OGG/Opus, WebM, M4A/AAC or AIFF, at most 100 MB."
                    }
                  ]
                }
              },
              "status": "Unprocessable Entity",
              "code": 422,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"unprocessable_audio\",\n    \"code\": \"audio_too_short\",\n    \"message\": \"Audio must be longer than 4 seconds\",\n    \"param\": \"file\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "429 Too Many Requests",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Idempotency-Key",
                    "value": "{{$guid}}",
                    "type": "text",
                    "description": "Optional (recommended) key that makes retries safe for 24 h: a retry with the same key and the same request returns the stored response without charging again."
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/v1/deepfake/detect",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "deepfake",
                    "detect"
                  ]
                },
                "description": "Checks whether a recording contains AI-generated speech. Send one audio file longer than 4 seconds and at most 120 seconds. Use the result's `verdict`: `real`, `fake`, or `not_sure` when the recording cannot be judged reliably (try a longer or cleaner recording). `score` (0 to 1, higher means more likely AI-generated) is kept for older clients together with `label` and `is_synthetic`. A `not_sure` verdict uses credits like any result, except when the check could not run completely: then `credits.charged` is 0. Main failures: the file is not audio or is damaged (415/422), 4 seconds or shorter or longer than 120 seconds (422), not enough credits (402), the service is busy (503, retry later). Requires scope `deepfake:detect`.\n\nDocs: https://platform.detectif.ai/docs/api/detect-deepfake/",
                "body": {
                  "mode": "formdata",
                  "formdata": [
                    {
                      "key": "file",
                      "type": "file",
                      "src": [],
                      "description": "The audio file: WAV, MP3, FLAC, OGG/Opus, WebM, M4A/AAC or AIFF, at most 100 MB."
                    }
                  ]
                }
              },
              "status": "Too Many Requests",
              "code": 429,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"rate_limited\",\n    \"code\": \"rate_limited\",\n    \"message\": \"Model operation rate limit reached (30 per minute per account).\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "500 Internal Server Error",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Idempotency-Key",
                    "value": "{{$guid}}",
                    "type": "text",
                    "description": "Optional (recommended) key that makes retries safe for 24 h: a retry with the same key and the same request returns the stored response without charging again."
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/v1/deepfake/detect",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "deepfake",
                    "detect"
                  ]
                },
                "description": "Checks whether a recording contains AI-generated speech. Send one audio file longer than 4 seconds and at most 120 seconds. Use the result's `verdict`: `real`, `fake`, or `not_sure` when the recording cannot be judged reliably (try a longer or cleaner recording). `score` (0 to 1, higher means more likely AI-generated) is kept for older clients together with `label` and `is_synthetic`. A `not_sure` verdict uses credits like any result, except when the check could not run completely: then `credits.charged` is 0. Main failures: the file is not audio or is damaged (415/422), 4 seconds or shorter or longer than 120 seconds (422), not enough credits (402), the service is busy (503, retry later). Requires scope `deepfake:detect`.\n\nDocs: https://platform.detectif.ai/docs/api/detect-deepfake/",
                "body": {
                  "mode": "formdata",
                  "formdata": [
                    {
                      "key": "file",
                      "type": "file",
                      "src": [],
                      "description": "The audio file: WAV, MP3, FLAC, OGG/Opus, WebM, M4A/AAC or AIFF, at most 100 MB."
                    }
                  ]
                }
              },
              "status": "Internal Server Error",
              "code": 500,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"internal\",\n    \"code\": \"internal_error\",\n    \"message\": \"An internal error occurred.\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "502 Bad Gateway",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Idempotency-Key",
                    "value": "{{$guid}}",
                    "type": "text",
                    "description": "Optional (recommended) key that makes retries safe for 24 h: a retry with the same key and the same request returns the stored response without charging again."
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/v1/deepfake/detect",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "deepfake",
                    "detect"
                  ]
                },
                "description": "Checks whether a recording contains AI-generated speech. Send one audio file longer than 4 seconds and at most 120 seconds. Use the result's `verdict`: `real`, `fake`, or `not_sure` when the recording cannot be judged reliably (try a longer or cleaner recording). `score` (0 to 1, higher means more likely AI-generated) is kept for older clients together with `label` and `is_synthetic`. A `not_sure` verdict uses credits like any result, except when the check could not run completely: then `credits.charged` is 0. Main failures: the file is not audio or is damaged (415/422), 4 seconds or shorter or longer than 120 seconds (422), not enough credits (402), the service is busy (503, retry later). Requires scope `deepfake:detect`.\n\nDocs: https://platform.detectif.ai/docs/api/detect-deepfake/",
                "body": {
                  "mode": "formdata",
                  "formdata": [
                    {
                      "key": "file",
                      "type": "file",
                      "src": [],
                      "description": "The audio file: WAV, MP3, FLAC, OGG/Opus, WebM, M4A/AAC or AIFF, at most 100 MB."
                    }
                  ]
                }
              },
              "status": "Bad Gateway",
              "code": 502,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"internal\",\n    \"code\": \"inference_failed\",\n    \"message\": \"The check failed; no credits were used. Retry later.\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "503 Service Unavailable",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Idempotency-Key",
                    "value": "{{$guid}}",
                    "type": "text",
                    "description": "Optional (recommended) key that makes retries safe for 24 h: a retry with the same key and the same request returns the stored response without charging again."
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/v1/deepfake/detect",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "deepfake",
                    "detect"
                  ]
                },
                "description": "Checks whether a recording contains AI-generated speech. Send one audio file longer than 4 seconds and at most 120 seconds. Use the result's `verdict`: `real`, `fake`, or `not_sure` when the recording cannot be judged reliably (try a longer or cleaner recording). `score` (0 to 1, higher means more likely AI-generated) is kept for older clients together with `label` and `is_synthetic`. A `not_sure` verdict uses credits like any result, except when the check could not run completely: then `credits.charged` is 0. Main failures: the file is not audio or is damaged (415/422), 4 seconds or shorter or longer than 120 seconds (422), not enough credits (402), the service is busy (503, retry later). Requires scope `deepfake:detect`.\n\nDocs: https://platform.detectif.ai/docs/api/detect-deepfake/",
                "body": {
                  "mode": "formdata",
                  "formdata": [
                    {
                      "key": "file",
                      "type": "file",
                      "src": [],
                      "description": "The audio file: WAV, MP3, FLAC, OGG/Opus, WebM, M4A/AAC or AIFF, at most 100 MB."
                    }
                  ]
                }
              },
              "status": "Service Unavailable",
              "code": 503,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"overloaded\",\n    \"code\": \"server_busy\",\n    \"message\": \"Too many large uploads are in progress; retry shortly.\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "504 Gateway Timeout",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Idempotency-Key",
                    "value": "{{$guid}}",
                    "type": "text",
                    "description": "Optional (recommended) key that makes retries safe for 24 h: a retry with the same key and the same request returns the stored response without charging again."
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/v1/deepfake/detect",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "deepfake",
                    "detect"
                  ]
                },
                "description": "Checks whether a recording contains AI-generated speech. Send one audio file longer than 4 seconds and at most 120 seconds. Use the result's `verdict`: `real`, `fake`, or `not_sure` when the recording cannot be judged reliably (try a longer or cleaner recording). `score` (0 to 1, higher means more likely AI-generated) is kept for older clients together with `label` and `is_synthetic`. A `not_sure` verdict uses credits like any result, except when the check could not run completely: then `credits.charged` is 0. Main failures: the file is not audio or is damaged (415/422), 4 seconds or shorter or longer than 120 seconds (422), not enough credits (402), the service is busy (503, retry later). Requires scope `deepfake:detect`.\n\nDocs: https://platform.detectif.ai/docs/api/detect-deepfake/",
                "body": {
                  "mode": "formdata",
                  "formdata": [
                    {
                      "key": "file",
                      "type": "file",
                      "src": [],
                      "description": "The audio file: WAV, MP3, FLAC, OGG/Opus, WebM, M4A/AAC or AIFF, at most 100 MB."
                    }
                  ]
                }
              },
              "status": "Gateway Timeout",
              "code": 504,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"internal\",\n    \"code\": \"inference_timeout\",\n    \"message\": \"The check took too long; no credits were used. Retry later.\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Speakers",
      "description": "Save voice samples of speakers and verify recordings against them.",
      "item": [
        {
          "name": "Enroll a voice sample",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "type": "text",
                "description": "Optional (recommended) key that makes retries safe for 24 h: a retry with the same key and the same request returns the stored response without charging again."
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/speakers/enroll",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "speakers",
                "enroll"
              ]
            },
            "description": "Saves a voice sample for a speaker so that later recordings can be verified against it. The speaker is created on first use. Send a recording of 15-60 seconds with at least 10 seconds of clear speech from that one person. Up to 5 samples per speaker; 2-3 samples from different sessions make verification more reliable. Main failures: too short, too long or too little speech (422, the message says what is needed), the speaker already has 5 samples (409), not enough credits (402). Requires scope `speakers:enroll`.\n\nDocs: https://platform.detectif.ai/docs/api/enroll-speaker/",
            "body": {
              "mode": "formdata",
              "formdata": [
                {
                  "key": "file",
                  "type": "file",
                  "src": [],
                  "description": "The audio file: WAV, MP3, FLAC, OGG/Opus, WebM, M4A/AAC or AIFF, at most 100 MB."
                },
                {
                  "key": "speaker_id",
                  "value": "alice",
                  "type": "text",
                  "description": "Your identifier for the speaker (1-64 characters: letters, digits, _ . : -)."
                },
                {
                  "key": "display_name",
                  "value": "Alice",
                  "type": "text",
                  "description": "Optional label for the speaker, shown in the dashboard.",
                  "disabled": true
                }
              ]
            }
          },
          "response": [
            {
              "name": "200 OK",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Idempotency-Key",
                    "value": "{{$guid}}",
                    "type": "text",
                    "description": "Optional (recommended) key that makes retries safe for 24 h: a retry with the same key and the same request returns the stored response without charging again."
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/v1/speakers/enroll",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "speakers",
                    "enroll"
                  ]
                },
                "description": "Saves a voice sample for a speaker so that later recordings can be verified against it. The speaker is created on first use. Send a recording of 15-60 seconds with at least 10 seconds of clear speech from that one person. Up to 5 samples per speaker; 2-3 samples from different sessions make verification more reliable. Main failures: too short, too long or too little speech (422, the message says what is needed), the speaker already has 5 samples (409), not enough credits (402). Requires scope `speakers:enroll`.\n\nDocs: https://platform.detectif.ai/docs/api/enroll-speaker/",
                "body": {
                  "mode": "formdata",
                  "formdata": [
                    {
                      "key": "file",
                      "type": "file",
                      "src": [],
                      "description": "The audio file: WAV, MP3, FLAC, OGG/Opus, WebM, M4A/AAC or AIFF, at most 100 MB."
                    },
                    {
                      "key": "speaker_id",
                      "value": "alice",
                      "type": "text",
                      "description": "Your identifier for the speaker (1-64 characters: letters, digits, _ . : -)."
                    },
                    {
                      "key": "display_name",
                      "value": "Alice",
                      "type": "text",
                      "description": "Optional label for the speaker, shown in the dashboard.",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\",\n  \"operation_id\": \"op_6f1ed002ab5595859014ebf0951522d9\",\n  \"object\": \"speaker.enrollment\",\n  \"speaker\": {\n    \"speaker_id\": \"customer-4711\",\n    \"display_name\": \"Ada Lovelace\",\n    \"samples\": 1,\n    \"created_at\": \"2026-10-13T09:30:00Z\",\n    \"updated_at\": \"2026-10-13T09:30:00Z\"\n  },\n  \"quality\": {\n    \"speech_seconds\": 17.9,\n    \"duration_seconds\": 19.2\n  },\n  \"idempotent_replay\": false\n}"
            },
            {
              "name": "400 Bad Request",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Idempotency-Key",
                    "value": "{{$guid}}",
                    "type": "text",
                    "description": "Optional (recommended) key that makes retries safe for 24 h: a retry with the same key and the same request returns the stored response without charging again."
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/v1/speakers/enroll",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "speakers",
                    "enroll"
                  ]
                },
                "description": "Saves a voice sample for a speaker so that later recordings can be verified against it. The speaker is created on first use. Send a recording of 15-60 seconds with at least 10 seconds of clear speech from that one person. Up to 5 samples per speaker; 2-3 samples from different sessions make verification more reliable. Main failures: too short, too long or too little speech (422, the message says what is needed), the speaker already has 5 samples (409), not enough credits (402). Requires scope `speakers:enroll`.\n\nDocs: https://platform.detectif.ai/docs/api/enroll-speaker/",
                "body": {
                  "mode": "formdata",
                  "formdata": [
                    {
                      "key": "file",
                      "type": "file",
                      "src": [],
                      "description": "The audio file: WAV, MP3, FLAC, OGG/Opus, WebM, M4A/AAC or AIFF, at most 100 MB."
                    },
                    {
                      "key": "speaker_id",
                      "value": "alice",
                      "type": "text",
                      "description": "Your identifier for the speaker (1-64 characters: letters, digits, _ . : -)."
                    },
                    {
                      "key": "display_name",
                      "value": "Alice",
                      "type": "text",
                      "description": "Optional label for the speaker, shown in the dashboard.",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "Bad Request",
              "code": 400,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"invalid_request\",\n    \"code\": \"invalid_speaker_id\",\n    \"message\": \"speaker_id must be 1-64 characters from A-Z, a-z, 0-9, '_', '.', ':' and '-'.\",\n    \"param\": \"speaker_id\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "401 Unauthorized",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Idempotency-Key",
                    "value": "{{$guid}}",
                    "type": "text",
                    "description": "Optional (recommended) key that makes retries safe for 24 h: a retry with the same key and the same request returns the stored response without charging again."
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/v1/speakers/enroll",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "speakers",
                    "enroll"
                  ]
                },
                "description": "Saves a voice sample for a speaker so that later recordings can be verified against it. The speaker is created on first use. Send a recording of 15-60 seconds with at least 10 seconds of clear speech from that one person. Up to 5 samples per speaker; 2-3 samples from different sessions make verification more reliable. Main failures: too short, too long or too little speech (422, the message says what is needed), the speaker already has 5 samples (409), not enough credits (402). Requires scope `speakers:enroll`.\n\nDocs: https://platform.detectif.ai/docs/api/enroll-speaker/",
                "body": {
                  "mode": "formdata",
                  "formdata": [
                    {
                      "key": "file",
                      "type": "file",
                      "src": [],
                      "description": "The audio file: WAV, MP3, FLAC, OGG/Opus, WebM, M4A/AAC or AIFF, at most 100 MB."
                    },
                    {
                      "key": "speaker_id",
                      "value": "alice",
                      "type": "text",
                      "description": "Your identifier for the speaker (1-64 characters: letters, digits, _ . : -)."
                    },
                    {
                      "key": "display_name",
                      "value": "Alice",
                      "type": "text",
                      "description": "Optional label for the speaker, shown in the dashboard.",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"authentication\",\n    \"code\": \"invalid_api_key\",\n    \"message\": \"The API key is invalid.\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "402 Payment Required",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Idempotency-Key",
                    "value": "{{$guid}}",
                    "type": "text",
                    "description": "Optional (recommended) key that makes retries safe for 24 h: a retry with the same key and the same request returns the stored response without charging again."
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/v1/speakers/enroll",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "speakers",
                    "enroll"
                  ]
                },
                "description": "Saves a voice sample for a speaker so that later recordings can be verified against it. The speaker is created on first use. Send a recording of 15-60 seconds with at least 10 seconds of clear speech from that one person. Up to 5 samples per speaker; 2-3 samples from different sessions make verification more reliable. Main failures: too short, too long or too little speech (422, the message says what is needed), the speaker already has 5 samples (409), not enough credits (402). Requires scope `speakers:enroll`.\n\nDocs: https://platform.detectif.ai/docs/api/enroll-speaker/",
                "body": {
                  "mode": "formdata",
                  "formdata": [
                    {
                      "key": "file",
                      "type": "file",
                      "src": [],
                      "description": "The audio file: WAV, MP3, FLAC, OGG/Opus, WebM, M4A/AAC or AIFF, at most 100 MB."
                    },
                    {
                      "key": "speaker_id",
                      "value": "alice",
                      "type": "text",
                      "description": "Your identifier for the speaker (1-64 characters: letters, digits, _ . : -)."
                    },
                    {
                      "key": "display_name",
                      "value": "Alice",
                      "type": "text",
                      "description": "Optional label for the speaker, shown in the dashboard.",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "Payment Required",
              "code": 402,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"insufficient_credits\",\n    \"code\": \"insufficient_credits\",\n    \"message\": \"Not enough credits are available for this operation.\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "403 Forbidden",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Idempotency-Key",
                    "value": "{{$guid}}",
                    "type": "text",
                    "description": "Optional (recommended) key that makes retries safe for 24 h: a retry with the same key and the same request returns the stored response without charging again."
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/v1/speakers/enroll",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "speakers",
                    "enroll"
                  ]
                },
                "description": "Saves a voice sample for a speaker so that later recordings can be verified against it. The speaker is created on first use. Send a recording of 15-60 seconds with at least 10 seconds of clear speech from that one person. Up to 5 samples per speaker; 2-3 samples from different sessions make verification more reliable. Main failures: too short, too long or too little speech (422, the message says what is needed), the speaker already has 5 samples (409), not enough credits (402). Requires scope `speakers:enroll`.\n\nDocs: https://platform.detectif.ai/docs/api/enroll-speaker/",
                "body": {
                  "mode": "formdata",
                  "formdata": [
                    {
                      "key": "file",
                      "type": "file",
                      "src": [],
                      "description": "The audio file: WAV, MP3, FLAC, OGG/Opus, WebM, M4A/AAC or AIFF, at most 100 MB."
                    },
                    {
                      "key": "speaker_id",
                      "value": "alice",
                      "type": "text",
                      "description": "Your identifier for the speaker (1-64 characters: letters, digits, _ . : -)."
                    },
                    {
                      "key": "display_name",
                      "value": "Alice",
                      "type": "text",
                      "description": "Optional label for the speaker, shown in the dashboard.",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "Forbidden",
              "code": 403,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"permission\",\n    \"code\": \"insufficient_scope\",\n    \"message\": \"This API key is missing the required scope(s): deepfake:detect.\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "408 Request Timeout",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Idempotency-Key",
                    "value": "{{$guid}}",
                    "type": "text",
                    "description": "Optional (recommended) key that makes retries safe for 24 h: a retry with the same key and the same request returns the stored response without charging again."
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/v1/speakers/enroll",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "speakers",
                    "enroll"
                  ]
                },
                "description": "Saves a voice sample for a speaker so that later recordings can be verified against it. The speaker is created on first use. Send a recording of 15-60 seconds with at least 10 seconds of clear speech from that one person. Up to 5 samples per speaker; 2-3 samples from different sessions make verification more reliable. Main failures: too short, too long or too little speech (422, the message says what is needed), the speaker already has 5 samples (409), not enough credits (402). Requires scope `speakers:enroll`.\n\nDocs: https://platform.detectif.ai/docs/api/enroll-speaker/",
                "body": {
                  "mode": "formdata",
                  "formdata": [
                    {
                      "key": "file",
                      "type": "file",
                      "src": [],
                      "description": "The audio file: WAV, MP3, FLAC, OGG/Opus, WebM, M4A/AAC or AIFF, at most 100 MB."
                    },
                    {
                      "key": "speaker_id",
                      "value": "alice",
                      "type": "text",
                      "description": "Your identifier for the speaker (1-64 characters: letters, digits, _ . : -)."
                    },
                    {
                      "key": "display_name",
                      "value": "Alice",
                      "type": "text",
                      "description": "Optional label for the speaker, shown in the dashboard.",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "Request Timeout",
              "code": 408,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"invalid_request\",\n    \"code\": \"upload_timeout\",\n    \"message\": \"The upload did not arrive in time: the whole request must be received within 120 s and at no less than 64 KB/s. Retry on a faster connection.\",\n    \"param\": \"file\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "409 Conflict",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Idempotency-Key",
                    "value": "{{$guid}}",
                    "type": "text",
                    "description": "Optional (recommended) key that makes retries safe for 24 h: a retry with the same key and the same request returns the stored response without charging again."
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/v1/speakers/enroll",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "speakers",
                    "enroll"
                  ]
                },
                "description": "Saves a voice sample for a speaker so that later recordings can be verified against it. The speaker is created on first use. Send a recording of 15-60 seconds with at least 10 seconds of clear speech from that one person. Up to 5 samples per speaker; 2-3 samples from different sessions make verification more reliable. Main failures: too short, too long or too little speech (422, the message says what is needed), the speaker already has 5 samples (409), not enough credits (402). Requires scope `speakers:enroll`.\n\nDocs: https://platform.detectif.ai/docs/api/enroll-speaker/",
                "body": {
                  "mode": "formdata",
                  "formdata": [
                    {
                      "key": "file",
                      "type": "file",
                      "src": [],
                      "description": "The audio file: WAV, MP3, FLAC, OGG/Opus, WebM, M4A/AAC or AIFF, at most 100 MB."
                    },
                    {
                      "key": "speaker_id",
                      "value": "alice",
                      "type": "text",
                      "description": "Your identifier for the speaker (1-64 characters: letters, digits, _ . : -)."
                    },
                    {
                      "key": "display_name",
                      "value": "Alice",
                      "type": "text",
                      "description": "Optional label for the speaker, shown in the dashboard.",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "Conflict",
              "code": 409,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"conflict\",\n    \"code\": \"too_many_samples\",\n    \"message\": \"This speaker already has the maximum of 5 samples.\",\n    \"param\": \"speaker_id\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "413 Payload Too Large",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Idempotency-Key",
                    "value": "{{$guid}}",
                    "type": "text",
                    "description": "Optional (recommended) key that makes retries safe for 24 h: a retry with the same key and the same request returns the stored response without charging again."
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/v1/speakers/enroll",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "speakers",
                    "enroll"
                  ]
                },
                "description": "Saves a voice sample for a speaker so that later recordings can be verified against it. The speaker is created on first use. Send a recording of 15-60 seconds with at least 10 seconds of clear speech from that one person. Up to 5 samples per speaker; 2-3 samples from different sessions make verification more reliable. Main failures: too short, too long or too little speech (422, the message says what is needed), the speaker already has 5 samples (409), not enough credits (402). Requires scope `speakers:enroll`.\n\nDocs: https://platform.detectif.ai/docs/api/enroll-speaker/",
                "body": {
                  "mode": "formdata",
                  "formdata": [
                    {
                      "key": "file",
                      "type": "file",
                      "src": [],
                      "description": "The audio file: WAV, MP3, FLAC, OGG/Opus, WebM, M4A/AAC or AIFF, at most 100 MB."
                    },
                    {
                      "key": "speaker_id",
                      "value": "alice",
                      "type": "text",
                      "description": "Your identifier for the speaker (1-64 characters: letters, digits, _ . : -)."
                    },
                    {
                      "key": "display_name",
                      "value": "Alice",
                      "type": "text",
                      "description": "Optional label for the speaker, shown in the dashboard.",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "Payload Too Large",
              "code": 413,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"payload_too_large\",\n    \"code\": \"file_too_large\",\n    \"message\": \"The upload exceeds the 100 MB limit.\",\n    \"param\": \"file\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "415 Unsupported Media Type",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Idempotency-Key",
                    "value": "{{$guid}}",
                    "type": "text",
                    "description": "Optional (recommended) key that makes retries safe for 24 h: a retry with the same key and the same request returns the stored response without charging again."
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/v1/speakers/enroll",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "speakers",
                    "enroll"
                  ]
                },
                "description": "Saves a voice sample for a speaker so that later recordings can be verified against it. The speaker is created on first use. Send a recording of 15-60 seconds with at least 10 seconds of clear speech from that one person. Up to 5 samples per speaker; 2-3 samples from different sessions make verification more reliable. Main failures: too short, too long or too little speech (422, the message says what is needed), the speaker already has 5 samples (409), not enough credits (402). Requires scope `speakers:enroll`.\n\nDocs: https://platform.detectif.ai/docs/api/enroll-speaker/",
                "body": {
                  "mode": "formdata",
                  "formdata": [
                    {
                      "key": "file",
                      "type": "file",
                      "src": [],
                      "description": "The audio file: WAV, MP3, FLAC, OGG/Opus, WebM, M4A/AAC or AIFF, at most 100 MB."
                    },
                    {
                      "key": "speaker_id",
                      "value": "alice",
                      "type": "text",
                      "description": "Your identifier for the speaker (1-64 characters: letters, digits, _ . : -)."
                    },
                    {
                      "key": "display_name",
                      "value": "Alice",
                      "type": "text",
                      "description": "Optional label for the speaker, shown in the dashboard.",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "Unsupported Media Type",
              "code": 415,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"unsupported_media\",\n    \"code\": \"unsupported_format\",\n    \"message\": \"Unsupported file format. Upload WAV, MP3, FLAC, OGG/Opus, WebM, M4A/AAC or AIFF audio.\",\n    \"param\": \"file\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "422 Unprocessable Entity",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Idempotency-Key",
                    "value": "{{$guid}}",
                    "type": "text",
                    "description": "Optional (recommended) key that makes retries safe for 24 h: a retry with the same key and the same request returns the stored response without charging again."
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/v1/speakers/enroll",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "speakers",
                    "enroll"
                  ]
                },
                "description": "Saves a voice sample for a speaker so that later recordings can be verified against it. The speaker is created on first use. Send a recording of 15-60 seconds with at least 10 seconds of clear speech from that one person. Up to 5 samples per speaker; 2-3 samples from different sessions make verification more reliable. Main failures: too short, too long or too little speech (422, the message says what is needed), the speaker already has 5 samples (409), not enough credits (402). Requires scope `speakers:enroll`.\n\nDocs: https://platform.detectif.ai/docs/api/enroll-speaker/",
                "body": {
                  "mode": "formdata",
                  "formdata": [
                    {
                      "key": "file",
                      "type": "file",
                      "src": [],
                      "description": "The audio file: WAV, MP3, FLAC, OGG/Opus, WebM, M4A/AAC or AIFF, at most 100 MB."
                    },
                    {
                      "key": "speaker_id",
                      "value": "alice",
                      "type": "text",
                      "description": "Your identifier for the speaker (1-64 characters: letters, digits, _ . : -)."
                    },
                    {
                      "key": "display_name",
                      "value": "Alice",
                      "type": "text",
                      "description": "Optional label for the speaker, shown in the dashboard.",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "Unprocessable Entity",
              "code": 422,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"unprocessable_audio\",\n    \"code\": \"audio_too_short\",\n    \"message\": \"Audio must be longer than 4 seconds\",\n    \"param\": \"file\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "429 Too Many Requests",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Idempotency-Key",
                    "value": "{{$guid}}",
                    "type": "text",
                    "description": "Optional (recommended) key that makes retries safe for 24 h: a retry with the same key and the same request returns the stored response without charging again."
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/v1/speakers/enroll",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "speakers",
                    "enroll"
                  ]
                },
                "description": "Saves a voice sample for a speaker so that later recordings can be verified against it. The speaker is created on first use. Send a recording of 15-60 seconds with at least 10 seconds of clear speech from that one person. Up to 5 samples per speaker; 2-3 samples from different sessions make verification more reliable. Main failures: too short, too long or too little speech (422, the message says what is needed), the speaker already has 5 samples (409), not enough credits (402). Requires scope `speakers:enroll`.\n\nDocs: https://platform.detectif.ai/docs/api/enroll-speaker/",
                "body": {
                  "mode": "formdata",
                  "formdata": [
                    {
                      "key": "file",
                      "type": "file",
                      "src": [],
                      "description": "The audio file: WAV, MP3, FLAC, OGG/Opus, WebM, M4A/AAC or AIFF, at most 100 MB."
                    },
                    {
                      "key": "speaker_id",
                      "value": "alice",
                      "type": "text",
                      "description": "Your identifier for the speaker (1-64 characters: letters, digits, _ . : -)."
                    },
                    {
                      "key": "display_name",
                      "value": "Alice",
                      "type": "text",
                      "description": "Optional label for the speaker, shown in the dashboard.",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "Too Many Requests",
              "code": 429,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"rate_limited\",\n    \"code\": \"rate_limited\",\n    \"message\": \"Model operation rate limit reached (30 per minute per account).\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "500 Internal Server Error",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Idempotency-Key",
                    "value": "{{$guid}}",
                    "type": "text",
                    "description": "Optional (recommended) key that makes retries safe for 24 h: a retry with the same key and the same request returns the stored response without charging again."
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/v1/speakers/enroll",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "speakers",
                    "enroll"
                  ]
                },
                "description": "Saves a voice sample for a speaker so that later recordings can be verified against it. The speaker is created on first use. Send a recording of 15-60 seconds with at least 10 seconds of clear speech from that one person. Up to 5 samples per speaker; 2-3 samples from different sessions make verification more reliable. Main failures: too short, too long or too little speech (422, the message says what is needed), the speaker already has 5 samples (409), not enough credits (402). Requires scope `speakers:enroll`.\n\nDocs: https://platform.detectif.ai/docs/api/enroll-speaker/",
                "body": {
                  "mode": "formdata",
                  "formdata": [
                    {
                      "key": "file",
                      "type": "file",
                      "src": [],
                      "description": "The audio file: WAV, MP3, FLAC, OGG/Opus, WebM, M4A/AAC or AIFF, at most 100 MB."
                    },
                    {
                      "key": "speaker_id",
                      "value": "alice",
                      "type": "text",
                      "description": "Your identifier for the speaker (1-64 characters: letters, digits, _ . : -)."
                    },
                    {
                      "key": "display_name",
                      "value": "Alice",
                      "type": "text",
                      "description": "Optional label for the speaker, shown in the dashboard.",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "Internal Server Error",
              "code": 500,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"internal\",\n    \"code\": \"internal_error\",\n    \"message\": \"An internal error occurred.\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "502 Bad Gateway",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Idempotency-Key",
                    "value": "{{$guid}}",
                    "type": "text",
                    "description": "Optional (recommended) key that makes retries safe for 24 h: a retry with the same key and the same request returns the stored response without charging again."
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/v1/speakers/enroll",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "speakers",
                    "enroll"
                  ]
                },
                "description": "Saves a voice sample for a speaker so that later recordings can be verified against it. The speaker is created on first use. Send a recording of 15-60 seconds with at least 10 seconds of clear speech from that one person. Up to 5 samples per speaker; 2-3 samples from different sessions make verification more reliable. Main failures: too short, too long or too little speech (422, the message says what is needed), the speaker already has 5 samples (409), not enough credits (402). Requires scope `speakers:enroll`.\n\nDocs: https://platform.detectif.ai/docs/api/enroll-speaker/",
                "body": {
                  "mode": "formdata",
                  "formdata": [
                    {
                      "key": "file",
                      "type": "file",
                      "src": [],
                      "description": "The audio file: WAV, MP3, FLAC, OGG/Opus, WebM, M4A/AAC or AIFF, at most 100 MB."
                    },
                    {
                      "key": "speaker_id",
                      "value": "alice",
                      "type": "text",
                      "description": "Your identifier for the speaker (1-64 characters: letters, digits, _ . : -)."
                    },
                    {
                      "key": "display_name",
                      "value": "Alice",
                      "type": "text",
                      "description": "Optional label for the speaker, shown in the dashboard.",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "Bad Gateway",
              "code": 502,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"internal\",\n    \"code\": \"inference_failed\",\n    \"message\": \"The check failed; no credits were used. Retry later.\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "503 Service Unavailable",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Idempotency-Key",
                    "value": "{{$guid}}",
                    "type": "text",
                    "description": "Optional (recommended) key that makes retries safe for 24 h: a retry with the same key and the same request returns the stored response without charging again."
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/v1/speakers/enroll",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "speakers",
                    "enroll"
                  ]
                },
                "description": "Saves a voice sample for a speaker so that later recordings can be verified against it. The speaker is created on first use. Send a recording of 15-60 seconds with at least 10 seconds of clear speech from that one person. Up to 5 samples per speaker; 2-3 samples from different sessions make verification more reliable. Main failures: too short, too long or too little speech (422, the message says what is needed), the speaker already has 5 samples (409), not enough credits (402). Requires scope `speakers:enroll`.\n\nDocs: https://platform.detectif.ai/docs/api/enroll-speaker/",
                "body": {
                  "mode": "formdata",
                  "formdata": [
                    {
                      "key": "file",
                      "type": "file",
                      "src": [],
                      "description": "The audio file: WAV, MP3, FLAC, OGG/Opus, WebM, M4A/AAC or AIFF, at most 100 MB."
                    },
                    {
                      "key": "speaker_id",
                      "value": "alice",
                      "type": "text",
                      "description": "Your identifier for the speaker (1-64 characters: letters, digits, _ . : -)."
                    },
                    {
                      "key": "display_name",
                      "value": "Alice",
                      "type": "text",
                      "description": "Optional label for the speaker, shown in the dashboard.",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "Service Unavailable",
              "code": 503,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"overloaded\",\n    \"code\": \"server_busy\",\n    \"message\": \"Too many large uploads are in progress; retry shortly.\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "504 Gateway Timeout",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Idempotency-Key",
                    "value": "{{$guid}}",
                    "type": "text",
                    "description": "Optional (recommended) key that makes retries safe for 24 h: a retry with the same key and the same request returns the stored response without charging again."
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/v1/speakers/enroll",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "speakers",
                    "enroll"
                  ]
                },
                "description": "Saves a voice sample for a speaker so that later recordings can be verified against it. The speaker is created on first use. Send a recording of 15-60 seconds with at least 10 seconds of clear speech from that one person. Up to 5 samples per speaker; 2-3 samples from different sessions make verification more reliable. Main failures: too short, too long or too little speech (422, the message says what is needed), the speaker already has 5 samples (409), not enough credits (402). Requires scope `speakers:enroll`.\n\nDocs: https://platform.detectif.ai/docs/api/enroll-speaker/",
                "body": {
                  "mode": "formdata",
                  "formdata": [
                    {
                      "key": "file",
                      "type": "file",
                      "src": [],
                      "description": "The audio file: WAV, MP3, FLAC, OGG/Opus, WebM, M4A/AAC or AIFF, at most 100 MB."
                    },
                    {
                      "key": "speaker_id",
                      "value": "alice",
                      "type": "text",
                      "description": "Your identifier for the speaker (1-64 characters: letters, digits, _ . : -)."
                    },
                    {
                      "key": "display_name",
                      "value": "Alice",
                      "type": "text",
                      "description": "Optional label for the speaker, shown in the dashboard.",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "Gateway Timeout",
              "code": 504,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"internal\",\n    \"code\": \"inference_timeout\",\n    \"message\": \"The check took too long; no credits were used. Retry later.\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            }
          ]
        },
        {
          "name": "Verify a speaker",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "type": "text",
                "description": "Optional (recommended) key that makes retries safe for 24 h: a retry with the same key and the same request returns the stored response without charging again."
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/speakers/verify",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "speakers",
                "verify"
              ]
            },
            "description": "Checks whether a recording is the voice of an enrolled speaker. Send a recording of 3-60 seconds with at least 2 seconds of speech. The result has a `decision` (`match` or `no_match`), a `similarity` from -1 to 1 (higher means more alike) and the `threshold` used for the decision. Main failures: unknown speaker (404), too short or too little speech (422), not enough credits (402). Requires scope `speakers:verify`.\n\nWith `detect_deepfake=true` the same recording is also checked for AI-generated speech (needs scope `deepfake:detect`; that check needs a recording longer than 4 seconds, otherwise only it fails). The two checks are counted separately, and only completed checks use credits:\n* if the synthetic-speech check fails, you still get the verification, with `deepfake.error`;\n* if the verification fails but the synthetic-speech check completed, you get the verification's error together with `partial` (the synthetic-speech result);\n* if both fail, you get the error and no credits are used.\n\nA retry with the same `Idempotency-Key` returns the same outcome again without running or counting the checks twice.\n\nDocs: https://platform.detectif.ai/docs/api/verify-speaker/",
            "body": {
              "mode": "formdata",
              "formdata": [
                {
                  "key": "file",
                  "type": "file",
                  "src": [],
                  "description": "The audio file: WAV, MP3, FLAC, OGG/Opus, WebM, M4A/AAC or AIFF, at most 100 MB."
                },
                {
                  "key": "speaker_id",
                  "value": "alice",
                  "type": "text",
                  "description": "Your identifier for the speaker (1-64 characters: letters, digits, _ . : -)."
                },
                {
                  "key": "detect_deepfake",
                  "value": "false",
                  "type": "text",
                  "description": "Also check the same recording for AI-generated speech (needs scope deepfake:detect).",
                  "disabled": true
                }
              ]
            }
          },
          "response": [
            {
              "name": "200 OK",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Idempotency-Key",
                    "value": "{{$guid}}",
                    "type": "text",
                    "description": "Optional (recommended) key that makes retries safe for 24 h: a retry with the same key and the same request returns the stored response without charging again."
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/v1/speakers/verify",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "speakers",
                    "verify"
                  ]
                },
                "description": "Checks whether a recording is the voice of an enrolled speaker. Send a recording of 3-60 seconds with at least 2 seconds of speech. The result has a `decision` (`match` or `no_match`), a `similarity` from -1 to 1 (higher means more alike) and the `threshold` used for the decision. Main failures: unknown speaker (404), too short or too little speech (422), not enough credits (402). Requires scope `speakers:verify`.\n\nWith `detect_deepfake=true` the same recording is also checked for AI-generated speech (needs scope `deepfake:detect`; that check needs a recording longer than 4 seconds, otherwise only it fails). The two checks are counted separately, and only completed checks use credits:\n* if the synthetic-speech check fails, you still get the verification, with `deepfake.error`;\n* if the verification fails but the synthetic-speech check completed, you get the verification's error together with `partial` (the synthetic-speech result);\n* if both fail, you get the error and no credits are used.\n\nA retry with the same `Idempotency-Key` returns the same outcome again without running or counting the checks twice.\n\nDocs: https://platform.detectif.ai/docs/api/verify-speaker/",
                "body": {
                  "mode": "formdata",
                  "formdata": [
                    {
                      "key": "file",
                      "type": "file",
                      "src": [],
                      "description": "The audio file: WAV, MP3, FLAC, OGG/Opus, WebM, M4A/AAC or AIFF, at most 100 MB."
                    },
                    {
                      "key": "speaker_id",
                      "value": "alice",
                      "type": "text",
                      "description": "Your identifier for the speaker (1-64 characters: letters, digits, _ . : -)."
                    },
                    {
                      "key": "detect_deepfake",
                      "value": "false",
                      "type": "text",
                      "description": "Also check the same recording for AI-generated speech (needs scope deepfake:detect).",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\",\n  \"operation_id\": \"op_6f1ed002ab5595859014ebf0951522d9\",\n  \"object\": \"speaker.verification\",\n  \"speaker_id\": \"customer-4711\",\n  \"result\": {\n    \"decision\": \"match\",\n    \"similarity\": 0.7412,\n    \"threshold\": 0.53,\n    \"similarity_semantics\": \"Higher means the two voices are more alike. Not a percentage.\",\n    \"duration_seconds\": 4.1\n  },\n  \"idempotent_replay\": false\n}"
            },
            {
              "name": "400 Bad Request",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Idempotency-Key",
                    "value": "{{$guid}}",
                    "type": "text",
                    "description": "Optional (recommended) key that makes retries safe for 24 h: a retry with the same key and the same request returns the stored response without charging again."
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/v1/speakers/verify",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "speakers",
                    "verify"
                  ]
                },
                "description": "Checks whether a recording is the voice of an enrolled speaker. Send a recording of 3-60 seconds with at least 2 seconds of speech. The result has a `decision` (`match` or `no_match`), a `similarity` from -1 to 1 (higher means more alike) and the `threshold` used for the decision. Main failures: unknown speaker (404), too short or too little speech (422), not enough credits (402). Requires scope `speakers:verify`.\n\nWith `detect_deepfake=true` the same recording is also checked for AI-generated speech (needs scope `deepfake:detect`; that check needs a recording longer than 4 seconds, otherwise only it fails). The two checks are counted separately, and only completed checks use credits:\n* if the synthetic-speech check fails, you still get the verification, with `deepfake.error`;\n* if the verification fails but the synthetic-speech check completed, you get the verification's error together with `partial` (the synthetic-speech result);\n* if both fail, you get the error and no credits are used.\n\nA retry with the same `Idempotency-Key` returns the same outcome again without running or counting the checks twice.\n\nDocs: https://platform.detectif.ai/docs/api/verify-speaker/",
                "body": {
                  "mode": "formdata",
                  "formdata": [
                    {
                      "key": "file",
                      "type": "file",
                      "src": [],
                      "description": "The audio file: WAV, MP3, FLAC, OGG/Opus, WebM, M4A/AAC or AIFF, at most 100 MB."
                    },
                    {
                      "key": "speaker_id",
                      "value": "alice",
                      "type": "text",
                      "description": "Your identifier for the speaker (1-64 characters: letters, digits, _ . : -)."
                    },
                    {
                      "key": "detect_deepfake",
                      "value": "false",
                      "type": "text",
                      "description": "Also check the same recording for AI-generated speech (needs scope deepfake:detect).",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "Bad Request",
              "code": 400,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"invalid_request\",\n    \"code\": \"invalid_speaker_id\",\n    \"message\": \"speaker_id must be 1-64 characters from A-Z, a-z, 0-9, '_', '.', ':' and '-'.\",\n    \"param\": \"speaker_id\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "401 Unauthorized",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Idempotency-Key",
                    "value": "{{$guid}}",
                    "type": "text",
                    "description": "Optional (recommended) key that makes retries safe for 24 h: a retry with the same key and the same request returns the stored response without charging again."
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/v1/speakers/verify",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "speakers",
                    "verify"
                  ]
                },
                "description": "Checks whether a recording is the voice of an enrolled speaker. Send a recording of 3-60 seconds with at least 2 seconds of speech. The result has a `decision` (`match` or `no_match`), a `similarity` from -1 to 1 (higher means more alike) and the `threshold` used for the decision. Main failures: unknown speaker (404), too short or too little speech (422), not enough credits (402). Requires scope `speakers:verify`.\n\nWith `detect_deepfake=true` the same recording is also checked for AI-generated speech (needs scope `deepfake:detect`; that check needs a recording longer than 4 seconds, otherwise only it fails). The two checks are counted separately, and only completed checks use credits:\n* if the synthetic-speech check fails, you still get the verification, with `deepfake.error`;\n* if the verification fails but the synthetic-speech check completed, you get the verification's error together with `partial` (the synthetic-speech result);\n* if both fail, you get the error and no credits are used.\n\nA retry with the same `Idempotency-Key` returns the same outcome again without running or counting the checks twice.\n\nDocs: https://platform.detectif.ai/docs/api/verify-speaker/",
                "body": {
                  "mode": "formdata",
                  "formdata": [
                    {
                      "key": "file",
                      "type": "file",
                      "src": [],
                      "description": "The audio file: WAV, MP3, FLAC, OGG/Opus, WebM, M4A/AAC or AIFF, at most 100 MB."
                    },
                    {
                      "key": "speaker_id",
                      "value": "alice",
                      "type": "text",
                      "description": "Your identifier for the speaker (1-64 characters: letters, digits, _ . : -)."
                    },
                    {
                      "key": "detect_deepfake",
                      "value": "false",
                      "type": "text",
                      "description": "Also check the same recording for AI-generated speech (needs scope deepfake:detect).",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"authentication\",\n    \"code\": \"invalid_api_key\",\n    \"message\": \"The API key is invalid.\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "402 Payment Required",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Idempotency-Key",
                    "value": "{{$guid}}",
                    "type": "text",
                    "description": "Optional (recommended) key that makes retries safe for 24 h: a retry with the same key and the same request returns the stored response without charging again."
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/v1/speakers/verify",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "speakers",
                    "verify"
                  ]
                },
                "description": "Checks whether a recording is the voice of an enrolled speaker. Send a recording of 3-60 seconds with at least 2 seconds of speech. The result has a `decision` (`match` or `no_match`), a `similarity` from -1 to 1 (higher means more alike) and the `threshold` used for the decision. Main failures: unknown speaker (404), too short or too little speech (422), not enough credits (402). Requires scope `speakers:verify`.\n\nWith `detect_deepfake=true` the same recording is also checked for AI-generated speech (needs scope `deepfake:detect`; that check needs a recording longer than 4 seconds, otherwise only it fails). The two checks are counted separately, and only completed checks use credits:\n* if the synthetic-speech check fails, you still get the verification, with `deepfake.error`;\n* if the verification fails but the synthetic-speech check completed, you get the verification's error together with `partial` (the synthetic-speech result);\n* if both fail, you get the error and no credits are used.\n\nA retry with the same `Idempotency-Key` returns the same outcome again without running or counting the checks twice.\n\nDocs: https://platform.detectif.ai/docs/api/verify-speaker/",
                "body": {
                  "mode": "formdata",
                  "formdata": [
                    {
                      "key": "file",
                      "type": "file",
                      "src": [],
                      "description": "The audio file: WAV, MP3, FLAC, OGG/Opus, WebM, M4A/AAC or AIFF, at most 100 MB."
                    },
                    {
                      "key": "speaker_id",
                      "value": "alice",
                      "type": "text",
                      "description": "Your identifier for the speaker (1-64 characters: letters, digits, _ . : -)."
                    },
                    {
                      "key": "detect_deepfake",
                      "value": "false",
                      "type": "text",
                      "description": "Also check the same recording for AI-generated speech (needs scope deepfake:detect).",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "Payment Required",
              "code": 402,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"insufficient_credits\",\n    \"code\": \"insufficient_credits\",\n    \"message\": \"Not enough credits are available for this operation.\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "403 Forbidden",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Idempotency-Key",
                    "value": "{{$guid}}",
                    "type": "text",
                    "description": "Optional (recommended) key that makes retries safe for 24 h: a retry with the same key and the same request returns the stored response without charging again."
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/v1/speakers/verify",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "speakers",
                    "verify"
                  ]
                },
                "description": "Checks whether a recording is the voice of an enrolled speaker. Send a recording of 3-60 seconds with at least 2 seconds of speech. The result has a `decision` (`match` or `no_match`), a `similarity` from -1 to 1 (higher means more alike) and the `threshold` used for the decision. Main failures: unknown speaker (404), too short or too little speech (422), not enough credits (402). Requires scope `speakers:verify`.\n\nWith `detect_deepfake=true` the same recording is also checked for AI-generated speech (needs scope `deepfake:detect`; that check needs a recording longer than 4 seconds, otherwise only it fails). The two checks are counted separately, and only completed checks use credits:\n* if the synthetic-speech check fails, you still get the verification, with `deepfake.error`;\n* if the verification fails but the synthetic-speech check completed, you get the verification's error together with `partial` (the synthetic-speech result);\n* if both fail, you get the error and no credits are used.\n\nA retry with the same `Idempotency-Key` returns the same outcome again without running or counting the checks twice.\n\nDocs: https://platform.detectif.ai/docs/api/verify-speaker/",
                "body": {
                  "mode": "formdata",
                  "formdata": [
                    {
                      "key": "file",
                      "type": "file",
                      "src": [],
                      "description": "The audio file: WAV, MP3, FLAC, OGG/Opus, WebM, M4A/AAC or AIFF, at most 100 MB."
                    },
                    {
                      "key": "speaker_id",
                      "value": "alice",
                      "type": "text",
                      "description": "Your identifier for the speaker (1-64 characters: letters, digits, _ . : -)."
                    },
                    {
                      "key": "detect_deepfake",
                      "value": "false",
                      "type": "text",
                      "description": "Also check the same recording for AI-generated speech (needs scope deepfake:detect).",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "Forbidden",
              "code": 403,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"permission\",\n    \"code\": \"insufficient_scope\",\n    \"message\": \"This API key is missing the required scope(s): deepfake:detect.\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "404 Not Found",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Idempotency-Key",
                    "value": "{{$guid}}",
                    "type": "text",
                    "description": "Optional (recommended) key that makes retries safe for 24 h: a retry with the same key and the same request returns the stored response without charging again."
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/v1/speakers/verify",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "speakers",
                    "verify"
                  ]
                },
                "description": "Checks whether a recording is the voice of an enrolled speaker. Send a recording of 3-60 seconds with at least 2 seconds of speech. The result has a `decision` (`match` or `no_match`), a `similarity` from -1 to 1 (higher means more alike) and the `threshold` used for the decision. Main failures: unknown speaker (404), too short or too little speech (422), not enough credits (402). Requires scope `speakers:verify`.\n\nWith `detect_deepfake=true` the same recording is also checked for AI-generated speech (needs scope `deepfake:detect`; that check needs a recording longer than 4 seconds, otherwise only it fails). The two checks are counted separately, and only completed checks use credits:\n* if the synthetic-speech check fails, you still get the verification, with `deepfake.error`;\n* if the verification fails but the synthetic-speech check completed, you get the verification's error together with `partial` (the synthetic-speech result);\n* if both fail, you get the error and no credits are used.\n\nA retry with the same `Idempotency-Key` returns the same outcome again without running or counting the checks twice.\n\nDocs: https://platform.detectif.ai/docs/api/verify-speaker/",
                "body": {
                  "mode": "formdata",
                  "formdata": [
                    {
                      "key": "file",
                      "type": "file",
                      "src": [],
                      "description": "The audio file: WAV, MP3, FLAC, OGG/Opus, WebM, M4A/AAC or AIFF, at most 100 MB."
                    },
                    {
                      "key": "speaker_id",
                      "value": "alice",
                      "type": "text",
                      "description": "Your identifier for the speaker (1-64 characters: letters, digits, _ . : -)."
                    },
                    {
                      "key": "detect_deepfake",
                      "value": "false",
                      "type": "text",
                      "description": "Also check the same recording for AI-generated speech (needs scope deepfake:detect).",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "Not Found",
              "code": 404,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"not_found\",\n    \"code\": \"speaker_not_found\",\n    \"message\": \"No speaker with this speaker_id exists in your account.\",\n    \"param\": \"speaker_id\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "408 Request Timeout",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Idempotency-Key",
                    "value": "{{$guid}}",
                    "type": "text",
                    "description": "Optional (recommended) key that makes retries safe for 24 h: a retry with the same key and the same request returns the stored response without charging again."
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/v1/speakers/verify",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "speakers",
                    "verify"
                  ]
                },
                "description": "Checks whether a recording is the voice of an enrolled speaker. Send a recording of 3-60 seconds with at least 2 seconds of speech. The result has a `decision` (`match` or `no_match`), a `similarity` from -1 to 1 (higher means more alike) and the `threshold` used for the decision. Main failures: unknown speaker (404), too short or too little speech (422), not enough credits (402). Requires scope `speakers:verify`.\n\nWith `detect_deepfake=true` the same recording is also checked for AI-generated speech (needs scope `deepfake:detect`; that check needs a recording longer than 4 seconds, otherwise only it fails). The two checks are counted separately, and only completed checks use credits:\n* if the synthetic-speech check fails, you still get the verification, with `deepfake.error`;\n* if the verification fails but the synthetic-speech check completed, you get the verification's error together with `partial` (the synthetic-speech result);\n* if both fail, you get the error and no credits are used.\n\nA retry with the same `Idempotency-Key` returns the same outcome again without running or counting the checks twice.\n\nDocs: https://platform.detectif.ai/docs/api/verify-speaker/",
                "body": {
                  "mode": "formdata",
                  "formdata": [
                    {
                      "key": "file",
                      "type": "file",
                      "src": [],
                      "description": "The audio file: WAV, MP3, FLAC, OGG/Opus, WebM, M4A/AAC or AIFF, at most 100 MB."
                    },
                    {
                      "key": "speaker_id",
                      "value": "alice",
                      "type": "text",
                      "description": "Your identifier for the speaker (1-64 characters: letters, digits, _ . : -)."
                    },
                    {
                      "key": "detect_deepfake",
                      "value": "false",
                      "type": "text",
                      "description": "Also check the same recording for AI-generated speech (needs scope deepfake:detect).",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "Request Timeout",
              "code": 408,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"invalid_request\",\n    \"code\": \"upload_timeout\",\n    \"message\": \"The upload did not arrive in time: the whole request must be received within 120 s and at no less than 64 KB/s. Retry on a faster connection.\",\n    \"param\": \"file\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "409 Conflict",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Idempotency-Key",
                    "value": "{{$guid}}",
                    "type": "text",
                    "description": "Optional (recommended) key that makes retries safe for 24 h: a retry with the same key and the same request returns the stored response without charging again."
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/v1/speakers/verify",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "speakers",
                    "verify"
                  ]
                },
                "description": "Checks whether a recording is the voice of an enrolled speaker. Send a recording of 3-60 seconds with at least 2 seconds of speech. The result has a `decision` (`match` or `no_match`), a `similarity` from -1 to 1 (higher means more alike) and the `threshold` used for the decision. Main failures: unknown speaker (404), too short or too little speech (422), not enough credits (402). Requires scope `speakers:verify`.\n\nWith `detect_deepfake=true` the same recording is also checked for AI-generated speech (needs scope `deepfake:detect`; that check needs a recording longer than 4 seconds, otherwise only it fails). The two checks are counted separately, and only completed checks use credits:\n* if the synthetic-speech check fails, you still get the verification, with `deepfake.error`;\n* if the verification fails but the synthetic-speech check completed, you get the verification's error together with `partial` (the synthetic-speech result);\n* if both fail, you get the error and no credits are used.\n\nA retry with the same `Idempotency-Key` returns the same outcome again without running or counting the checks twice.\n\nDocs: https://platform.detectif.ai/docs/api/verify-speaker/",
                "body": {
                  "mode": "formdata",
                  "formdata": [
                    {
                      "key": "file",
                      "type": "file",
                      "src": [],
                      "description": "The audio file: WAV, MP3, FLAC, OGG/Opus, WebM, M4A/AAC or AIFF, at most 100 MB."
                    },
                    {
                      "key": "speaker_id",
                      "value": "alice",
                      "type": "text",
                      "description": "Your identifier for the speaker (1-64 characters: letters, digits, _ . : -)."
                    },
                    {
                      "key": "detect_deepfake",
                      "value": "false",
                      "type": "text",
                      "description": "Also check the same recording for AI-generated speech (needs scope deepfake:detect).",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "Conflict",
              "code": 409,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"conflict\",\n    \"code\": \"operation_in_progress\",\n    \"message\": \"A request with this Idempotency-Key is still being processed; retry later or poll the operation.\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\",\n  \"operation_id\": \"op_6f1ed002ab5595859014ebf0951522d9\"\n}"
            },
            {
              "name": "413 Payload Too Large",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Idempotency-Key",
                    "value": "{{$guid}}",
                    "type": "text",
                    "description": "Optional (recommended) key that makes retries safe for 24 h: a retry with the same key and the same request returns the stored response without charging again."
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/v1/speakers/verify",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "speakers",
                    "verify"
                  ]
                },
                "description": "Checks whether a recording is the voice of an enrolled speaker. Send a recording of 3-60 seconds with at least 2 seconds of speech. The result has a `decision` (`match` or `no_match`), a `similarity` from -1 to 1 (higher means more alike) and the `threshold` used for the decision. Main failures: unknown speaker (404), too short or too little speech (422), not enough credits (402). Requires scope `speakers:verify`.\n\nWith `detect_deepfake=true` the same recording is also checked for AI-generated speech (needs scope `deepfake:detect`; that check needs a recording longer than 4 seconds, otherwise only it fails). The two checks are counted separately, and only completed checks use credits:\n* if the synthetic-speech check fails, you still get the verification, with `deepfake.error`;\n* if the verification fails but the synthetic-speech check completed, you get the verification's error together with `partial` (the synthetic-speech result);\n* if both fail, you get the error and no credits are used.\n\nA retry with the same `Idempotency-Key` returns the same outcome again without running or counting the checks twice.\n\nDocs: https://platform.detectif.ai/docs/api/verify-speaker/",
                "body": {
                  "mode": "formdata",
                  "formdata": [
                    {
                      "key": "file",
                      "type": "file",
                      "src": [],
                      "description": "The audio file: WAV, MP3, FLAC, OGG/Opus, WebM, M4A/AAC or AIFF, at most 100 MB."
                    },
                    {
                      "key": "speaker_id",
                      "value": "alice",
                      "type": "text",
                      "description": "Your identifier for the speaker (1-64 characters: letters, digits, _ . : -)."
                    },
                    {
                      "key": "detect_deepfake",
                      "value": "false",
                      "type": "text",
                      "description": "Also check the same recording for AI-generated speech (needs scope deepfake:detect).",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "Payload Too Large",
              "code": 413,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"payload_too_large\",\n    \"code\": \"file_too_large\",\n    \"message\": \"The upload exceeds the 100 MB limit.\",\n    \"param\": \"file\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "415 Unsupported Media Type",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Idempotency-Key",
                    "value": "{{$guid}}",
                    "type": "text",
                    "description": "Optional (recommended) key that makes retries safe for 24 h: a retry with the same key and the same request returns the stored response without charging again."
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/v1/speakers/verify",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "speakers",
                    "verify"
                  ]
                },
                "description": "Checks whether a recording is the voice of an enrolled speaker. Send a recording of 3-60 seconds with at least 2 seconds of speech. The result has a `decision` (`match` or `no_match`), a `similarity` from -1 to 1 (higher means more alike) and the `threshold` used for the decision. Main failures: unknown speaker (404), too short or too little speech (422), not enough credits (402). Requires scope `speakers:verify`.\n\nWith `detect_deepfake=true` the same recording is also checked for AI-generated speech (needs scope `deepfake:detect`; that check needs a recording longer than 4 seconds, otherwise only it fails). The two checks are counted separately, and only completed checks use credits:\n* if the synthetic-speech check fails, you still get the verification, with `deepfake.error`;\n* if the verification fails but the synthetic-speech check completed, you get the verification's error together with `partial` (the synthetic-speech result);\n* if both fail, you get the error and no credits are used.\n\nA retry with the same `Idempotency-Key` returns the same outcome again without running or counting the checks twice.\n\nDocs: https://platform.detectif.ai/docs/api/verify-speaker/",
                "body": {
                  "mode": "formdata",
                  "formdata": [
                    {
                      "key": "file",
                      "type": "file",
                      "src": [],
                      "description": "The audio file: WAV, MP3, FLAC, OGG/Opus, WebM, M4A/AAC or AIFF, at most 100 MB."
                    },
                    {
                      "key": "speaker_id",
                      "value": "alice",
                      "type": "text",
                      "description": "Your identifier for the speaker (1-64 characters: letters, digits, _ . : -)."
                    },
                    {
                      "key": "detect_deepfake",
                      "value": "false",
                      "type": "text",
                      "description": "Also check the same recording for AI-generated speech (needs scope deepfake:detect).",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "Unsupported Media Type",
              "code": 415,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"unsupported_media\",\n    \"code\": \"unsupported_format\",\n    \"message\": \"Unsupported file format. Upload WAV, MP3, FLAC, OGG/Opus, WebM, M4A/AAC or AIFF audio.\",\n    \"param\": \"file\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "422 Unprocessable Entity",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Idempotency-Key",
                    "value": "{{$guid}}",
                    "type": "text",
                    "description": "Optional (recommended) key that makes retries safe for 24 h: a retry with the same key and the same request returns the stored response without charging again."
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/v1/speakers/verify",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "speakers",
                    "verify"
                  ]
                },
                "description": "Checks whether a recording is the voice of an enrolled speaker. Send a recording of 3-60 seconds with at least 2 seconds of speech. The result has a `decision` (`match` or `no_match`), a `similarity` from -1 to 1 (higher means more alike) and the `threshold` used for the decision. Main failures: unknown speaker (404), too short or too little speech (422), not enough credits (402). Requires scope `speakers:verify`.\n\nWith `detect_deepfake=true` the same recording is also checked for AI-generated speech (needs scope `deepfake:detect`; that check needs a recording longer than 4 seconds, otherwise only it fails). The two checks are counted separately, and only completed checks use credits:\n* if the synthetic-speech check fails, you still get the verification, with `deepfake.error`;\n* if the verification fails but the synthetic-speech check completed, you get the verification's error together with `partial` (the synthetic-speech result);\n* if both fail, you get the error and no credits are used.\n\nA retry with the same `Idempotency-Key` returns the same outcome again without running or counting the checks twice.\n\nDocs: https://platform.detectif.ai/docs/api/verify-speaker/",
                "body": {
                  "mode": "formdata",
                  "formdata": [
                    {
                      "key": "file",
                      "type": "file",
                      "src": [],
                      "description": "The audio file: WAV, MP3, FLAC, OGG/Opus, WebM, M4A/AAC or AIFF, at most 100 MB."
                    },
                    {
                      "key": "speaker_id",
                      "value": "alice",
                      "type": "text",
                      "description": "Your identifier for the speaker (1-64 characters: letters, digits, _ . : -)."
                    },
                    {
                      "key": "detect_deepfake",
                      "value": "false",
                      "type": "text",
                      "description": "Also check the same recording for AI-generated speech (needs scope deepfake:detect).",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "Unprocessable Entity",
              "code": 422,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"unprocessable_audio\",\n    \"code\": \"audio_too_short\",\n    \"message\": \"Audio must be longer than 4 seconds\",\n    \"param\": \"file\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "429 Too Many Requests",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Idempotency-Key",
                    "value": "{{$guid}}",
                    "type": "text",
                    "description": "Optional (recommended) key that makes retries safe for 24 h: a retry with the same key and the same request returns the stored response without charging again."
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/v1/speakers/verify",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "speakers",
                    "verify"
                  ]
                },
                "description": "Checks whether a recording is the voice of an enrolled speaker. Send a recording of 3-60 seconds with at least 2 seconds of speech. The result has a `decision` (`match` or `no_match`), a `similarity` from -1 to 1 (higher means more alike) and the `threshold` used for the decision. Main failures: unknown speaker (404), too short or too little speech (422), not enough credits (402). Requires scope `speakers:verify`.\n\nWith `detect_deepfake=true` the same recording is also checked for AI-generated speech (needs scope `deepfake:detect`; that check needs a recording longer than 4 seconds, otherwise only it fails). The two checks are counted separately, and only completed checks use credits:\n* if the synthetic-speech check fails, you still get the verification, with `deepfake.error`;\n* if the verification fails but the synthetic-speech check completed, you get the verification's error together with `partial` (the synthetic-speech result);\n* if both fail, you get the error and no credits are used.\n\nA retry with the same `Idempotency-Key` returns the same outcome again without running or counting the checks twice.\n\nDocs: https://platform.detectif.ai/docs/api/verify-speaker/",
                "body": {
                  "mode": "formdata",
                  "formdata": [
                    {
                      "key": "file",
                      "type": "file",
                      "src": [],
                      "description": "The audio file: WAV, MP3, FLAC, OGG/Opus, WebM, M4A/AAC or AIFF, at most 100 MB."
                    },
                    {
                      "key": "speaker_id",
                      "value": "alice",
                      "type": "text",
                      "description": "Your identifier for the speaker (1-64 characters: letters, digits, _ . : -)."
                    },
                    {
                      "key": "detect_deepfake",
                      "value": "false",
                      "type": "text",
                      "description": "Also check the same recording for AI-generated speech (needs scope deepfake:detect).",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "Too Many Requests",
              "code": 429,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"rate_limited\",\n    \"code\": \"rate_limited\",\n    \"message\": \"Model operation rate limit reached (30 per minute per account).\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "500 Internal Server Error",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Idempotency-Key",
                    "value": "{{$guid}}",
                    "type": "text",
                    "description": "Optional (recommended) key that makes retries safe for 24 h: a retry with the same key and the same request returns the stored response without charging again."
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/v1/speakers/verify",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "speakers",
                    "verify"
                  ]
                },
                "description": "Checks whether a recording is the voice of an enrolled speaker. Send a recording of 3-60 seconds with at least 2 seconds of speech. The result has a `decision` (`match` or `no_match`), a `similarity` from -1 to 1 (higher means more alike) and the `threshold` used for the decision. Main failures: unknown speaker (404), too short or too little speech (422), not enough credits (402). Requires scope `speakers:verify`.\n\nWith `detect_deepfake=true` the same recording is also checked for AI-generated speech (needs scope `deepfake:detect`; that check needs a recording longer than 4 seconds, otherwise only it fails). The two checks are counted separately, and only completed checks use credits:\n* if the synthetic-speech check fails, you still get the verification, with `deepfake.error`;\n* if the verification fails but the synthetic-speech check completed, you get the verification's error together with `partial` (the synthetic-speech result);\n* if both fail, you get the error and no credits are used.\n\nA retry with the same `Idempotency-Key` returns the same outcome again without running or counting the checks twice.\n\nDocs: https://platform.detectif.ai/docs/api/verify-speaker/",
                "body": {
                  "mode": "formdata",
                  "formdata": [
                    {
                      "key": "file",
                      "type": "file",
                      "src": [],
                      "description": "The audio file: WAV, MP3, FLAC, OGG/Opus, WebM, M4A/AAC or AIFF, at most 100 MB."
                    },
                    {
                      "key": "speaker_id",
                      "value": "alice",
                      "type": "text",
                      "description": "Your identifier for the speaker (1-64 characters: letters, digits, _ . : -)."
                    },
                    {
                      "key": "detect_deepfake",
                      "value": "false",
                      "type": "text",
                      "description": "Also check the same recording for AI-generated speech (needs scope deepfake:detect).",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "Internal Server Error",
              "code": 500,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"internal\",\n    \"code\": \"internal_error\",\n    \"message\": \"An internal error occurred.\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "502 Bad Gateway",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Idempotency-Key",
                    "value": "{{$guid}}",
                    "type": "text",
                    "description": "Optional (recommended) key that makes retries safe for 24 h: a retry with the same key and the same request returns the stored response without charging again."
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/v1/speakers/verify",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "speakers",
                    "verify"
                  ]
                },
                "description": "Checks whether a recording is the voice of an enrolled speaker. Send a recording of 3-60 seconds with at least 2 seconds of speech. The result has a `decision` (`match` or `no_match`), a `similarity` from -1 to 1 (higher means more alike) and the `threshold` used for the decision. Main failures: unknown speaker (404), too short or too little speech (422), not enough credits (402). Requires scope `speakers:verify`.\n\nWith `detect_deepfake=true` the same recording is also checked for AI-generated speech (needs scope `deepfake:detect`; that check needs a recording longer than 4 seconds, otherwise only it fails). The two checks are counted separately, and only completed checks use credits:\n* if the synthetic-speech check fails, you still get the verification, with `deepfake.error`;\n* if the verification fails but the synthetic-speech check completed, you get the verification's error together with `partial` (the synthetic-speech result);\n* if both fail, you get the error and no credits are used.\n\nA retry with the same `Idempotency-Key` returns the same outcome again without running or counting the checks twice.\n\nDocs: https://platform.detectif.ai/docs/api/verify-speaker/",
                "body": {
                  "mode": "formdata",
                  "formdata": [
                    {
                      "key": "file",
                      "type": "file",
                      "src": [],
                      "description": "The audio file: WAV, MP3, FLAC, OGG/Opus, WebM, M4A/AAC or AIFF, at most 100 MB."
                    },
                    {
                      "key": "speaker_id",
                      "value": "alice",
                      "type": "text",
                      "description": "Your identifier for the speaker (1-64 characters: letters, digits, _ . : -)."
                    },
                    {
                      "key": "detect_deepfake",
                      "value": "false",
                      "type": "text",
                      "description": "Also check the same recording for AI-generated speech (needs scope deepfake:detect).",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "Bad Gateway",
              "code": 502,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"internal\",\n    \"code\": \"inference_failed\",\n    \"message\": \"The check failed; no credits were used. Retry later.\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "503 Service Unavailable",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Idempotency-Key",
                    "value": "{{$guid}}",
                    "type": "text",
                    "description": "Optional (recommended) key that makes retries safe for 24 h: a retry with the same key and the same request returns the stored response without charging again."
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/v1/speakers/verify",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "speakers",
                    "verify"
                  ]
                },
                "description": "Checks whether a recording is the voice of an enrolled speaker. Send a recording of 3-60 seconds with at least 2 seconds of speech. The result has a `decision` (`match` or `no_match`), a `similarity` from -1 to 1 (higher means more alike) and the `threshold` used for the decision. Main failures: unknown speaker (404), too short or too little speech (422), not enough credits (402). Requires scope `speakers:verify`.\n\nWith `detect_deepfake=true` the same recording is also checked for AI-generated speech (needs scope `deepfake:detect`; that check needs a recording longer than 4 seconds, otherwise only it fails). The two checks are counted separately, and only completed checks use credits:\n* if the synthetic-speech check fails, you still get the verification, with `deepfake.error`;\n* if the verification fails but the synthetic-speech check completed, you get the verification's error together with `partial` (the synthetic-speech result);\n* if both fail, you get the error and no credits are used.\n\nA retry with the same `Idempotency-Key` returns the same outcome again without running or counting the checks twice.\n\nDocs: https://platform.detectif.ai/docs/api/verify-speaker/",
                "body": {
                  "mode": "formdata",
                  "formdata": [
                    {
                      "key": "file",
                      "type": "file",
                      "src": [],
                      "description": "The audio file: WAV, MP3, FLAC, OGG/Opus, WebM, M4A/AAC or AIFF, at most 100 MB."
                    },
                    {
                      "key": "speaker_id",
                      "value": "alice",
                      "type": "text",
                      "description": "Your identifier for the speaker (1-64 characters: letters, digits, _ . : -)."
                    },
                    {
                      "key": "detect_deepfake",
                      "value": "false",
                      "type": "text",
                      "description": "Also check the same recording for AI-generated speech (needs scope deepfake:detect).",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "Service Unavailable",
              "code": 503,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"overloaded\",\n    \"code\": \"inference_overloaded\",\n    \"message\": \"The service is at capacity; retry shortly.\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\",\n  \"operation_id\": \"op_6f1ed002ab5595859014ebf0951522d9\",\n  \"partial\": {\n    \"deepfake\": {\n      \"verdict\": \"real\",\n      \"label\": \"genuine\",\n      \"is_synthetic\": false,\n      \"score\": 0.08,\n      \"threshold\": 0.62,\n      \"score_semantics\": \"Higher means more likely AI-generated. Decide with the verdict, not the score alone.\",\n      \"duration_seconds\": 6.1,\n      \"segments\": [\n        {\n          \"start\": 0,\n          \"end\": 4,\n          \"score\": 0.08\n        },\n        {\n          \"start\": 2,\n          \"end\": 6.1,\n          \"score\": 0.07\n        }\n      ],\n      \"operation_id\": \"op_0b9d2f4c1e7a4b6c8d0e1f2a3b4c5d6e\"\n    }\n  }\n}"
            },
            {
              "name": "504 Gateway Timeout",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Idempotency-Key",
                    "value": "{{$guid}}",
                    "type": "text",
                    "description": "Optional (recommended) key that makes retries safe for 24 h: a retry with the same key and the same request returns the stored response without charging again."
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/v1/speakers/verify",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "speakers",
                    "verify"
                  ]
                },
                "description": "Checks whether a recording is the voice of an enrolled speaker. Send a recording of 3-60 seconds with at least 2 seconds of speech. The result has a `decision` (`match` or `no_match`), a `similarity` from -1 to 1 (higher means more alike) and the `threshold` used for the decision. Main failures: unknown speaker (404), too short or too little speech (422), not enough credits (402). Requires scope `speakers:verify`.\n\nWith `detect_deepfake=true` the same recording is also checked for AI-generated speech (needs scope `deepfake:detect`; that check needs a recording longer than 4 seconds, otherwise only it fails). The two checks are counted separately, and only completed checks use credits:\n* if the synthetic-speech check fails, you still get the verification, with `deepfake.error`;\n* if the verification fails but the synthetic-speech check completed, you get the verification's error together with `partial` (the synthetic-speech result);\n* if both fail, you get the error and no credits are used.\n\nA retry with the same `Idempotency-Key` returns the same outcome again without running or counting the checks twice.\n\nDocs: https://platform.detectif.ai/docs/api/verify-speaker/",
                "body": {
                  "mode": "formdata",
                  "formdata": [
                    {
                      "key": "file",
                      "type": "file",
                      "src": [],
                      "description": "The audio file: WAV, MP3, FLAC, OGG/Opus, WebM, M4A/AAC or AIFF, at most 100 MB."
                    },
                    {
                      "key": "speaker_id",
                      "value": "alice",
                      "type": "text",
                      "description": "Your identifier for the speaker (1-64 characters: letters, digits, _ . : -)."
                    },
                    {
                      "key": "detect_deepfake",
                      "value": "false",
                      "type": "text",
                      "description": "Also check the same recording for AI-generated speech (needs scope deepfake:detect).",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "Gateway Timeout",
              "code": 504,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"internal\",\n    \"code\": \"inference_timeout\",\n    \"message\": \"The check took too long; no credits were used. Retry later.\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            }
          ]
        },
        {
          "name": "List speakers",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/speakers",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "speakers"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "20",
                  "description": "How many speakers to return (1-100).",
                  "disabled": true
                },
                {
                  "key": "cursor",
                  "value": "eyJ0IjoiMjAyNi0xMC0xMyJ9",
                  "description": "`next_cursor` from the previous page.",
                  "disabled": true
                }
              ]
            },
            "description": "Lists the speakers of your account, newest first, with how many voice samples each has. Use `limit` and `cursor` to page through long lists. Requires scope `speakers:read`.\n\nDocs: https://platform.detectif.ai/docs/api/list-speakers/"
          },
          "response": [
            {
              "name": "200 OK",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/speakers",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "speakers"
                  ],
                  "query": [
                    {
                      "key": "limit",
                      "value": "20",
                      "description": "How many speakers to return (1-100).",
                      "disabled": true
                    },
                    {
                      "key": "cursor",
                      "value": "eyJ0IjoiMjAyNi0xMC0xMyJ9",
                      "description": "`next_cursor` from the previous page.",
                      "disabled": true
                    }
                  ]
                },
                "description": "Lists the speakers of your account, newest first, with how many voice samples each has. Use `limit` and `cursor` to page through long lists. Requires scope `speakers:read`.\n\nDocs: https://platform.detectif.ai/docs/api/list-speakers/"
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\",\n  \"object\": \"list\",\n  \"data\": [\n    {\n      \"speaker_id\": \"customer-4711\",\n      \"display_name\": \"Ada Lovelace\",\n      \"samples\": 2,\n      \"created_at\": \"2026-10-13T09:30:00Z\",\n      \"updated_at\": \"2026-10-13T09:41:12Z\"\n    }\n  ],\n  \"has_more\": false\n}"
            },
            {
              "name": "400 Bad Request",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/speakers",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "speakers"
                  ],
                  "query": [
                    {
                      "key": "limit",
                      "value": "20",
                      "description": "How many speakers to return (1-100).",
                      "disabled": true
                    },
                    {
                      "key": "cursor",
                      "value": "eyJ0IjoiMjAyNi0xMC0xMyJ9",
                      "description": "`next_cursor` from the previous page.",
                      "disabled": true
                    }
                  ]
                },
                "description": "Lists the speakers of your account, newest first, with how many voice samples each has. Use `limit` and `cursor` to page through long lists. Requires scope `speakers:read`.\n\nDocs: https://platform.detectif.ai/docs/api/list-speakers/"
              },
              "status": "Bad Request",
              "code": 400,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"invalid_request\",\n    \"code\": \"invalid_speaker_id\",\n    \"message\": \"speaker_id must be 1-64 characters from A-Z, a-z, 0-9, '_', '.', ':' and '-'.\",\n    \"param\": \"speaker_id\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "401 Unauthorized",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/speakers",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "speakers"
                  ],
                  "query": [
                    {
                      "key": "limit",
                      "value": "20",
                      "description": "How many speakers to return (1-100).",
                      "disabled": true
                    },
                    {
                      "key": "cursor",
                      "value": "eyJ0IjoiMjAyNi0xMC0xMyJ9",
                      "description": "`next_cursor` from the previous page.",
                      "disabled": true
                    }
                  ]
                },
                "description": "Lists the speakers of your account, newest first, with how many voice samples each has. Use `limit` and `cursor` to page through long lists. Requires scope `speakers:read`.\n\nDocs: https://platform.detectif.ai/docs/api/list-speakers/"
              },
              "status": "Unauthorized",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"authentication\",\n    \"code\": \"invalid_api_key\",\n    \"message\": \"The API key is invalid.\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "403 Forbidden",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/speakers",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "speakers"
                  ],
                  "query": [
                    {
                      "key": "limit",
                      "value": "20",
                      "description": "How many speakers to return (1-100).",
                      "disabled": true
                    },
                    {
                      "key": "cursor",
                      "value": "eyJ0IjoiMjAyNi0xMC0xMyJ9",
                      "description": "`next_cursor` from the previous page.",
                      "disabled": true
                    }
                  ]
                },
                "description": "Lists the speakers of your account, newest first, with how many voice samples each has. Use `limit` and `cursor` to page through long lists. Requires scope `speakers:read`.\n\nDocs: https://platform.detectif.ai/docs/api/list-speakers/"
              },
              "status": "Forbidden",
              "code": 403,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"permission\",\n    \"code\": \"insufficient_scope\",\n    \"message\": \"This API key is missing the required scope(s): deepfake:detect.\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "429 Too Many Requests",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/speakers",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "speakers"
                  ],
                  "query": [
                    {
                      "key": "limit",
                      "value": "20",
                      "description": "How many speakers to return (1-100).",
                      "disabled": true
                    },
                    {
                      "key": "cursor",
                      "value": "eyJ0IjoiMjAyNi0xMC0xMyJ9",
                      "description": "`next_cursor` from the previous page.",
                      "disabled": true
                    }
                  ]
                },
                "description": "Lists the speakers of your account, newest first, with how many voice samples each has. Use `limit` and `cursor` to page through long lists. Requires scope `speakers:read`.\n\nDocs: https://platform.detectif.ai/docs/api/list-speakers/"
              },
              "status": "Too Many Requests",
              "code": 429,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"rate_limited\",\n    \"code\": \"rate_limited\",\n    \"message\": \"Model operation rate limit reached (30 per minute per account).\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "500 Internal Server Error",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/speakers",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "speakers"
                  ],
                  "query": [
                    {
                      "key": "limit",
                      "value": "20",
                      "description": "How many speakers to return (1-100).",
                      "disabled": true
                    },
                    {
                      "key": "cursor",
                      "value": "eyJ0IjoiMjAyNi0xMC0xMyJ9",
                      "description": "`next_cursor` from the previous page.",
                      "disabled": true
                    }
                  ]
                },
                "description": "Lists the speakers of your account, newest first, with how many voice samples each has. Use `limit` and `cursor` to page through long lists. Requires scope `speakers:read`.\n\nDocs: https://platform.detectif.ai/docs/api/list-speakers/"
              },
              "status": "Internal Server Error",
              "code": 500,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"internal\",\n    \"code\": \"internal_error\",\n    \"message\": \"An internal error occurred.\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            }
          ]
        },
        {
          "name": "Get a speaker",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/speakers/:speaker_id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "speakers",
                ":speaker_id"
              ],
              "variable": [
                {
                  "key": "speaker_id",
                  "value": "alice",
                  "description": "Your identifier for the speaker."
                }
              ]
            },
            "description": "Returns one speaker of your account and how many voice samples it has. An unknown `speaker_id` returns 404. Requires scope `speakers:read`.\n\nDocs: https://platform.detectif.ai/docs/api/get-speaker/"
          },
          "response": [
            {
              "name": "200 OK",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/speakers/:speaker_id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "speakers",
                    ":speaker_id"
                  ],
                  "variable": [
                    {
                      "key": "speaker_id",
                      "value": "alice",
                      "description": "Your identifier for the speaker."
                    }
                  ]
                },
                "description": "Returns one speaker of your account and how many voice samples it has. An unknown `speaker_id` returns 404. Requires scope `speakers:read`.\n\nDocs: https://platform.detectif.ai/docs/api/get-speaker/"
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\",\n  \"object\": \"speaker\",\n  \"speaker_id\": \"customer-4711\",\n  \"display_name\": \"Ada Lovelace\",\n  \"samples\": 2,\n  \"created_at\": \"2026-10-13T09:30:00Z\",\n  \"updated_at\": \"2026-10-13T09:41:12Z\"\n}"
            },
            {
              "name": "400 Bad Request",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/speakers/:speaker_id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "speakers",
                    ":speaker_id"
                  ],
                  "variable": [
                    {
                      "key": "speaker_id",
                      "value": "alice",
                      "description": "Your identifier for the speaker."
                    }
                  ]
                },
                "description": "Returns one speaker of your account and how many voice samples it has. An unknown `speaker_id` returns 404. Requires scope `speakers:read`.\n\nDocs: https://platform.detectif.ai/docs/api/get-speaker/"
              },
              "status": "Bad Request",
              "code": 400,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"invalid_request\",\n    \"code\": \"invalid_speaker_id\",\n    \"message\": \"speaker_id must be 1-64 characters from A-Z, a-z, 0-9, '_', '.', ':' and '-'.\",\n    \"param\": \"speaker_id\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "401 Unauthorized",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/speakers/:speaker_id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "speakers",
                    ":speaker_id"
                  ],
                  "variable": [
                    {
                      "key": "speaker_id",
                      "value": "alice",
                      "description": "Your identifier for the speaker."
                    }
                  ]
                },
                "description": "Returns one speaker of your account and how many voice samples it has. An unknown `speaker_id` returns 404. Requires scope `speakers:read`.\n\nDocs: https://platform.detectif.ai/docs/api/get-speaker/"
              },
              "status": "Unauthorized",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"authentication\",\n    \"code\": \"invalid_api_key\",\n    \"message\": \"The API key is invalid.\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "403 Forbidden",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/speakers/:speaker_id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "speakers",
                    ":speaker_id"
                  ],
                  "variable": [
                    {
                      "key": "speaker_id",
                      "value": "alice",
                      "description": "Your identifier for the speaker."
                    }
                  ]
                },
                "description": "Returns one speaker of your account and how many voice samples it has. An unknown `speaker_id` returns 404. Requires scope `speakers:read`.\n\nDocs: https://platform.detectif.ai/docs/api/get-speaker/"
              },
              "status": "Forbidden",
              "code": 403,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"permission\",\n    \"code\": \"insufficient_scope\",\n    \"message\": \"This API key is missing the required scope(s): deepfake:detect.\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "404 Not Found",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/speakers/:speaker_id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "speakers",
                    ":speaker_id"
                  ],
                  "variable": [
                    {
                      "key": "speaker_id",
                      "value": "alice",
                      "description": "Your identifier for the speaker."
                    }
                  ]
                },
                "description": "Returns one speaker of your account and how many voice samples it has. An unknown `speaker_id` returns 404. Requires scope `speakers:read`.\n\nDocs: https://platform.detectif.ai/docs/api/get-speaker/"
              },
              "status": "Not Found",
              "code": 404,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"not_found\",\n    \"code\": \"speaker_not_found\",\n    \"message\": \"No speaker with this speaker_id exists in your account.\",\n    \"param\": \"speaker_id\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "429 Too Many Requests",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/speakers/:speaker_id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "speakers",
                    ":speaker_id"
                  ],
                  "variable": [
                    {
                      "key": "speaker_id",
                      "value": "alice",
                      "description": "Your identifier for the speaker."
                    }
                  ]
                },
                "description": "Returns one speaker of your account and how many voice samples it has. An unknown `speaker_id` returns 404. Requires scope `speakers:read`.\n\nDocs: https://platform.detectif.ai/docs/api/get-speaker/"
              },
              "status": "Too Many Requests",
              "code": 429,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"rate_limited\",\n    \"code\": \"rate_limited\",\n    \"message\": \"Model operation rate limit reached (30 per minute per account).\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "500 Internal Server Error",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/speakers/:speaker_id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "speakers",
                    ":speaker_id"
                  ],
                  "variable": [
                    {
                      "key": "speaker_id",
                      "value": "alice",
                      "description": "Your identifier for the speaker."
                    }
                  ]
                },
                "description": "Returns one speaker of your account and how many voice samples it has. An unknown `speaker_id` returns 404. Requires scope `speakers:read`.\n\nDocs: https://platform.detectif.ai/docs/api/get-speaker/"
              },
              "status": "Internal Server Error",
              "code": 500,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"internal\",\n    \"code\": \"internal_error\",\n    \"message\": \"An internal error occurred.\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            }
          ]
        },
        {
          "name": "Delete a speaker",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/speakers/:speaker_id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "speakers",
                ":speaker_id"
              ],
              "variable": [
                {
                  "key": "speaker_id",
                  "value": "alice",
                  "description": "Your identifier for the speaker."
                }
              ]
            },
            "description": "Deletes the speaker and all of its voice samples permanently. Later verifications for this `speaker_id` return 404. Requires scope `speakers:delete`.\n\nDocs: https://platform.detectif.ai/docs/api/delete-speaker/"
          },
          "response": [
            {
              "name": "200 OK",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/speakers/:speaker_id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "speakers",
                    ":speaker_id"
                  ],
                  "variable": [
                    {
                      "key": "speaker_id",
                      "value": "alice",
                      "description": "Your identifier for the speaker."
                    }
                  ]
                },
                "description": "Deletes the speaker and all of its voice samples permanently. Later verifications for this `speaker_id` return 404. Requires scope `speakers:delete`.\n\nDocs: https://platform.detectif.ai/docs/api/delete-speaker/"
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\",\n  \"object\": \"speaker.deleted\",\n  \"speaker_id\": \"customer-4711\",\n  \"deleted\": true\n}"
            },
            {
              "name": "400 Bad Request",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/speakers/:speaker_id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "speakers",
                    ":speaker_id"
                  ],
                  "variable": [
                    {
                      "key": "speaker_id",
                      "value": "alice",
                      "description": "Your identifier for the speaker."
                    }
                  ]
                },
                "description": "Deletes the speaker and all of its voice samples permanently. Later verifications for this `speaker_id` return 404. Requires scope `speakers:delete`.\n\nDocs: https://platform.detectif.ai/docs/api/delete-speaker/"
              },
              "status": "Bad Request",
              "code": 400,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"invalid_request\",\n    \"code\": \"invalid_speaker_id\",\n    \"message\": \"speaker_id must be 1-64 characters from A-Z, a-z, 0-9, '_', '.', ':' and '-'.\",\n    \"param\": \"speaker_id\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "401 Unauthorized",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/speakers/:speaker_id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "speakers",
                    ":speaker_id"
                  ],
                  "variable": [
                    {
                      "key": "speaker_id",
                      "value": "alice",
                      "description": "Your identifier for the speaker."
                    }
                  ]
                },
                "description": "Deletes the speaker and all of its voice samples permanently. Later verifications for this `speaker_id` return 404. Requires scope `speakers:delete`.\n\nDocs: https://platform.detectif.ai/docs/api/delete-speaker/"
              },
              "status": "Unauthorized",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"authentication\",\n    \"code\": \"invalid_api_key\",\n    \"message\": \"The API key is invalid.\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "403 Forbidden",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/speakers/:speaker_id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "speakers",
                    ":speaker_id"
                  ],
                  "variable": [
                    {
                      "key": "speaker_id",
                      "value": "alice",
                      "description": "Your identifier for the speaker."
                    }
                  ]
                },
                "description": "Deletes the speaker and all of its voice samples permanently. Later verifications for this `speaker_id` return 404. Requires scope `speakers:delete`.\n\nDocs: https://platform.detectif.ai/docs/api/delete-speaker/"
              },
              "status": "Forbidden",
              "code": 403,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"permission\",\n    \"code\": \"insufficient_scope\",\n    \"message\": \"This API key is missing the required scope(s): deepfake:detect.\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "404 Not Found",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/speakers/:speaker_id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "speakers",
                    ":speaker_id"
                  ],
                  "variable": [
                    {
                      "key": "speaker_id",
                      "value": "alice",
                      "description": "Your identifier for the speaker."
                    }
                  ]
                },
                "description": "Deletes the speaker and all of its voice samples permanently. Later verifications for this `speaker_id` return 404. Requires scope `speakers:delete`.\n\nDocs: https://platform.detectif.ai/docs/api/delete-speaker/"
              },
              "status": "Not Found",
              "code": 404,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"not_found\",\n    \"code\": \"speaker_not_found\",\n    \"message\": \"No speaker with this speaker_id exists in your account.\",\n    \"param\": \"speaker_id\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "429 Too Many Requests",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/speakers/:speaker_id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "speakers",
                    ":speaker_id"
                  ],
                  "variable": [
                    {
                      "key": "speaker_id",
                      "value": "alice",
                      "description": "Your identifier for the speaker."
                    }
                  ]
                },
                "description": "Deletes the speaker and all of its voice samples permanently. Later verifications for this `speaker_id` return 404. Requires scope `speakers:delete`.\n\nDocs: https://platform.detectif.ai/docs/api/delete-speaker/"
              },
              "status": "Too Many Requests",
              "code": 429,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"rate_limited\",\n    \"code\": \"rate_limited\",\n    \"message\": \"Model operation rate limit reached (30 per minute per account).\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "500 Internal Server Error",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/speakers/:speaker_id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "speakers",
                    ":speaker_id"
                  ],
                  "variable": [
                    {
                      "key": "speaker_id",
                      "value": "alice",
                      "description": "Your identifier for the speaker."
                    }
                  ]
                },
                "description": "Deletes the speaker and all of its voice samples permanently. Later verifications for this `speaker_id` return 404. Requires scope `speakers:delete`.\n\nDocs: https://platform.detectif.ai/docs/api/delete-speaker/"
              },
              "status": "Internal Server Error",
              "code": 500,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"internal\",\n    \"code\": \"internal_error\",\n    \"message\": \"An internal error occurred.\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Results",
      "description": "Fetch the stored outcome of an earlier request.",
      "item": [
        {
          "name": "Get a result",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/operations/:operation_id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "operations",
                ":operation_id"
              ],
              "variable": [
                {
                  "key": "operation_id",
                  "value": "op_0123456789abcdef0123456789abcdef",
                  "description": "The `operation_id` from a response (`op_...`)."
                }
              ]
            },
            "description": "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.\n\nDocs: https://platform.detectif.ai/docs/api/get-operation/"
          },
          "response": [
            {
              "name": "200 OK",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/operations/:operation_id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "operations",
                    ":operation_id"
                  ],
                  "variable": [
                    {
                      "key": "operation_id",
                      "value": "op_0123456789abcdef0123456789abcdef",
                      "description": "The `operation_id` from a response (`op_...`)."
                    }
                  ]
                },
                "description": "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.\n\nDocs: https://platform.detectif.ai/docs/api/get-operation/"
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\",\n  \"object\": \"operation\",\n  \"operation_id\": \"op_6f1ed002ab5595859014ebf0951522d9\",\n  \"type\": \"deepfake.detect\",\n  \"status\": \"succeeded\",\n  \"source\": \"api\",\n  \"created_at\": \"2026-10-13T09:30:00Z\",\n  \"completed_at\": \"2026-10-13T09:30:01Z\",\n  \"result\": {\n    \"operation_id\": \"op_6f1ed002ab5595859014ebf0951522d9\",\n    \"object\": \"deepfake.detection\",\n    \"result\": {\n      \"label\": \"genuine\",\n      \"score\": 0.0731\n    }\n  }\n}"
            },
            {
              "name": "400 Bad Request",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/operations/:operation_id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "operations",
                    ":operation_id"
                  ],
                  "variable": [
                    {
                      "key": "operation_id",
                      "value": "op_0123456789abcdef0123456789abcdef",
                      "description": "The `operation_id` from a response (`op_...`)."
                    }
                  ]
                },
                "description": "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.\n\nDocs: https://platform.detectif.ai/docs/api/get-operation/"
              },
              "status": "Bad Request",
              "code": 400,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"invalid_request\",\n    \"code\": \"invalid_speaker_id\",\n    \"message\": \"speaker_id must be 1-64 characters from A-Z, a-z, 0-9, '_', '.', ':' and '-'.\",\n    \"param\": \"speaker_id\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "401 Unauthorized",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/operations/:operation_id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "operations",
                    ":operation_id"
                  ],
                  "variable": [
                    {
                      "key": "operation_id",
                      "value": "op_0123456789abcdef0123456789abcdef",
                      "description": "The `operation_id` from a response (`op_...`)."
                    }
                  ]
                },
                "description": "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.\n\nDocs: https://platform.detectif.ai/docs/api/get-operation/"
              },
              "status": "Unauthorized",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"authentication\",\n    \"code\": \"invalid_api_key\",\n    \"message\": \"The API key is invalid.\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "403 Forbidden",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/operations/:operation_id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "operations",
                    ":operation_id"
                  ],
                  "variable": [
                    {
                      "key": "operation_id",
                      "value": "op_0123456789abcdef0123456789abcdef",
                      "description": "The `operation_id` from a response (`op_...`)."
                    }
                  ]
                },
                "description": "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.\n\nDocs: https://platform.detectif.ai/docs/api/get-operation/"
              },
              "status": "Forbidden",
              "code": 403,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"permission\",\n    \"code\": \"insufficient_scope\",\n    \"message\": \"This API key is missing the required scope(s): deepfake:detect.\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "404 Not Found",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/operations/:operation_id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "operations",
                    ":operation_id"
                  ],
                  "variable": [
                    {
                      "key": "operation_id",
                      "value": "op_0123456789abcdef0123456789abcdef",
                      "description": "The `operation_id` from a response (`op_...`)."
                    }
                  ]
                },
                "description": "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.\n\nDocs: https://platform.detectif.ai/docs/api/get-operation/"
              },
              "status": "Not Found",
              "code": 404,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"not_found\",\n    \"code\": \"operation_not_found\",\n    \"message\": \"No operation with this id exists in your account.\",\n    \"param\": \"operation_id\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "429 Too Many Requests",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/operations/:operation_id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "operations",
                    ":operation_id"
                  ],
                  "variable": [
                    {
                      "key": "operation_id",
                      "value": "op_0123456789abcdef0123456789abcdef",
                      "description": "The `operation_id` from a response (`op_...`)."
                    }
                  ]
                },
                "description": "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.\n\nDocs: https://platform.detectif.ai/docs/api/get-operation/"
              },
              "status": "Too Many Requests",
              "code": 429,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"rate_limited\",\n    \"code\": \"rate_limited\",\n    \"message\": \"Model operation rate limit reached (30 per minute per account).\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "500 Internal Server Error",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/operations/:operation_id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "operations",
                    ":operation_id"
                  ],
                  "variable": [
                    {
                      "key": "operation_id",
                      "value": "op_0123456789abcdef0123456789abcdef",
                      "description": "The `operation_id` from a response (`op_...`)."
                    }
                  ]
                },
                "description": "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.\n\nDocs: https://platform.detectif.ai/docs/api/get-operation/"
              },
              "status": "Internal Server Error",
              "code": 500,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"internal\",\n    \"code\": \"internal_error\",\n    \"message\": \"An internal error occurred.\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            }
          ]
        },
        {
          "name": "Say whether a result was right",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/operations/:operation_id/feedback",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "operations",
                ":operation_id",
                "feedback"
              ],
              "variable": [
                {
                  "key": "operation_id",
                  "value": "op_0123456789abcdef0123456789abcdef",
                  "description": "The `operation_id` of the check (`op_...`)."
                }
              ]
            },
            "description": "Tells us whether an AI-speech check (`deepfake.detect`) got it right. Send `correct`, and optionally what the recording really is (`label`: `real` or `fake`) and a short note. Only for checks of your own account; sending again replaces your earlier answer. No credits are used. We store your answer with the result, not the audio: keeping recordings for review would need your explicit consent and is not offered yet. Requires the scope of the check (`deepfake:detect`).\n\nDocs: https://platform.detectif.ai/docs/api/send-feedback/",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"correct\": false,\n  \"label\": \"real\",\n  \"note\": \"My own voice, recorded on a phone.\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "200 OK",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/v1/operations/:operation_id/feedback",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "operations",
                    ":operation_id",
                    "feedback"
                  ],
                  "variable": [
                    {
                      "key": "operation_id",
                      "value": "op_0123456789abcdef0123456789abcdef",
                      "description": "The `operation_id` of the check (`op_...`)."
                    }
                  ]
                },
                "description": "Tells us whether an AI-speech check (`deepfake.detect`) got it right. Send `correct`, and optionally what the recording really is (`label`: `real` or `fake`) and a short note. Only for checks of your own account; sending again replaces your earlier answer. No credits are used. We store your answer with the result, not the audio: keeping recordings for review would need your explicit consent and is not offered yet. Requires the scope of the check (`deepfake:detect`).\n\nDocs: https://platform.detectif.ai/docs/api/send-feedback/",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"correct\": false,\n  \"label\": \"real\",\n  \"note\": \"My own voice, recorded on a phone.\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\",\n  \"object\": \"operation.feedback\",\n  \"operation_id\": \"op_6f1ed002ab5595859014ebf0951522d9\",\n  \"correct\": false,\n  \"label\": \"real\",\n  \"note\": \"My own voice, recorded on a phone.\",\n  \"created_at\": \"2026-10-13T09:30:00Z\",\n  \"updated_at\": \"2026-10-13T09:30:00Z\"\n}"
            },
            {
              "name": "400 Bad Request",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/v1/operations/:operation_id/feedback",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "operations",
                    ":operation_id",
                    "feedback"
                  ],
                  "variable": [
                    {
                      "key": "operation_id",
                      "value": "op_0123456789abcdef0123456789abcdef",
                      "description": "The `operation_id` of the check (`op_...`)."
                    }
                  ]
                },
                "description": "Tells us whether an AI-speech check (`deepfake.detect`) got it right. Send `correct`, and optionally what the recording really is (`label`: `real` or `fake`) and a short note. Only for checks of your own account; sending again replaces your earlier answer. No credits are used. We store your answer with the result, not the audio: keeping recordings for review would need your explicit consent and is not offered yet. Requires the scope of the check (`deepfake:detect`).\n\nDocs: https://platform.detectif.ai/docs/api/send-feedback/",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"correct\": false,\n  \"label\": \"real\",\n  \"note\": \"My own voice, recorded on a phone.\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Bad Request",
              "code": 400,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"invalid_request\",\n    \"code\": \"invalid_speaker_id\",\n    \"message\": \"speaker_id must be 1-64 characters from A-Z, a-z, 0-9, '_', '.', ':' and '-'.\",\n    \"param\": \"speaker_id\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "401 Unauthorized",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/v1/operations/:operation_id/feedback",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "operations",
                    ":operation_id",
                    "feedback"
                  ],
                  "variable": [
                    {
                      "key": "operation_id",
                      "value": "op_0123456789abcdef0123456789abcdef",
                      "description": "The `operation_id` of the check (`op_...`)."
                    }
                  ]
                },
                "description": "Tells us whether an AI-speech check (`deepfake.detect`) got it right. Send `correct`, and optionally what the recording really is (`label`: `real` or `fake`) and a short note. Only for checks of your own account; sending again replaces your earlier answer. No credits are used. We store your answer with the result, not the audio: keeping recordings for review would need your explicit consent and is not offered yet. Requires the scope of the check (`deepfake:detect`).\n\nDocs: https://platform.detectif.ai/docs/api/send-feedback/",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"correct\": false,\n  \"label\": \"real\",\n  \"note\": \"My own voice, recorded on a phone.\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"authentication\",\n    \"code\": \"invalid_api_key\",\n    \"message\": \"The API key is invalid.\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "403 Forbidden",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/v1/operations/:operation_id/feedback",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "operations",
                    ":operation_id",
                    "feedback"
                  ],
                  "variable": [
                    {
                      "key": "operation_id",
                      "value": "op_0123456789abcdef0123456789abcdef",
                      "description": "The `operation_id` of the check (`op_...`)."
                    }
                  ]
                },
                "description": "Tells us whether an AI-speech check (`deepfake.detect`) got it right. Send `correct`, and optionally what the recording really is (`label`: `real` or `fake`) and a short note. Only for checks of your own account; sending again replaces your earlier answer. No credits are used. We store your answer with the result, not the audio: keeping recordings for review would need your explicit consent and is not offered yet. Requires the scope of the check (`deepfake:detect`).\n\nDocs: https://platform.detectif.ai/docs/api/send-feedback/",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"correct\": false,\n  \"label\": \"real\",\n  \"note\": \"My own voice, recorded on a phone.\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Forbidden",
              "code": 403,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"permission\",\n    \"code\": \"insufficient_scope\",\n    \"message\": \"This API key is missing the required scope(s): deepfake:detect.\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "404 Not Found",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/v1/operations/:operation_id/feedback",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "operations",
                    ":operation_id",
                    "feedback"
                  ],
                  "variable": [
                    {
                      "key": "operation_id",
                      "value": "op_0123456789abcdef0123456789abcdef",
                      "description": "The `operation_id` of the check (`op_...`)."
                    }
                  ]
                },
                "description": "Tells us whether an AI-speech check (`deepfake.detect`) got it right. Send `correct`, and optionally what the recording really is (`label`: `real` or `fake`) and a short note. Only for checks of your own account; sending again replaces your earlier answer. No credits are used. We store your answer with the result, not the audio: keeping recordings for review would need your explicit consent and is not offered yet. Requires the scope of the check (`deepfake:detect`).\n\nDocs: https://platform.detectif.ai/docs/api/send-feedback/",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"correct\": false,\n  \"label\": \"real\",\n  \"note\": \"My own voice, recorded on a phone.\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Not Found",
              "code": 404,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"not_found\",\n    \"code\": \"operation_not_found\",\n    \"message\": \"No operation with this id exists in your account.\",\n    \"param\": \"operation_id\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "409 Conflict",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/v1/operations/:operation_id/feedback",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "operations",
                    ":operation_id",
                    "feedback"
                  ],
                  "variable": [
                    {
                      "key": "operation_id",
                      "value": "op_0123456789abcdef0123456789abcdef",
                      "description": "The `operation_id` of the check (`op_...`)."
                    }
                  ]
                },
                "description": "Tells us whether an AI-speech check (`deepfake.detect`) got it right. Send `correct`, and optionally what the recording really is (`label`: `real` or `fake`) and a short note. Only for checks of your own account; sending again replaces your earlier answer. No credits are used. We store your answer with the result, not the audio: keeping recordings for review would need your explicit consent and is not offered yet. Requires the scope of the check (`deepfake:detect`).\n\nDocs: https://platform.detectif.ai/docs/api/send-feedback/",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"correct\": false,\n  \"label\": \"real\",\n  \"note\": \"My own voice, recorded on a phone.\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Conflict",
              "code": 409,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"conflict\",\n    \"code\": \"feedback_not_applicable\",\n    \"message\": \"Feedback can only be given on a completed AI-speech check (deepfake.detect operation).\",\n    \"param\": \"operation_id\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "429 Too Many Requests",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/v1/operations/:operation_id/feedback",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "operations",
                    ":operation_id",
                    "feedback"
                  ],
                  "variable": [
                    {
                      "key": "operation_id",
                      "value": "op_0123456789abcdef0123456789abcdef",
                      "description": "The `operation_id` of the check (`op_...`)."
                    }
                  ]
                },
                "description": "Tells us whether an AI-speech check (`deepfake.detect`) got it right. Send `correct`, and optionally what the recording really is (`label`: `real` or `fake`) and a short note. Only for checks of your own account; sending again replaces your earlier answer. No credits are used. We store your answer with the result, not the audio: keeping recordings for review would need your explicit consent and is not offered yet. Requires the scope of the check (`deepfake:detect`).\n\nDocs: https://platform.detectif.ai/docs/api/send-feedback/",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"correct\": false,\n  \"label\": \"real\",\n  \"note\": \"My own voice, recorded on a phone.\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Too Many Requests",
              "code": 429,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"rate_limited\",\n    \"code\": \"rate_limited\",\n    \"message\": \"Model operation rate limit reached (30 per minute per account).\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "500 Internal Server Error",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/v1/operations/:operation_id/feedback",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "operations",
                    ":operation_id",
                    "feedback"
                  ],
                  "variable": [
                    {
                      "key": "operation_id",
                      "value": "op_0123456789abcdef0123456789abcdef",
                      "description": "The `operation_id` of the check (`op_...`)."
                    }
                  ]
                },
                "description": "Tells us whether an AI-speech check (`deepfake.detect`) got it right. Send `correct`, and optionally what the recording really is (`label`: `real` or `fake`) and a short note. Only for checks of your own account; sending again replaces your earlier answer. No credits are used. We store your answer with the result, not the audio: keeping recordings for review would need your explicit consent and is not offered yet. Requires the scope of the check (`deepfake:detect`).\n\nDocs: https://platform.detectif.ai/docs/api/send-feedback/",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"correct\": false,\n  \"label\": \"real\",\n  \"note\": \"My own voice, recorded on a phone.\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Internal Server Error",
              "code": 500,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"internal\",\n    \"code\": \"internal_error\",\n    \"message\": \"An internal error occurred.\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Account",
      "description": "Your balance and your usage.",
      "item": [
        {
          "name": "Get your balance",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/credits",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "credits"
              ]
            },
            "description": "Returns your plan, your available credits and the credits held by checks that are still running. On the unlimited plan `unlimited` is true and `available` is null. Requires scope `credits:read`.\n\nDocs: https://platform.detectif.ai/docs/api/get-balance/"
          },
          "response": [
            {
              "name": "200 Free plan",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/credits",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "credits"
                  ]
                },
                "description": "Returns your plan, your available credits and the credits held by checks that are still running. On the unlimited plan `unlimited` is true and `available` is null. Requires scope `credits:read`.\n\nDocs: https://platform.detectif.ai/docs/api/get-balance/"
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\",\n  \"object\": \"credits\",\n  \"plan\": \"free\",\n  \"unlimited\": false,\n  \"available\": 1000,\n  \"reserved\": 0\n}"
            },
            {
              "name": "200 Unlimited plan",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/credits",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "credits"
                  ]
                },
                "description": "Returns your plan, your available credits and the credits held by checks that are still running. On the unlimited plan `unlimited` is true and `available` is null. Requires scope `credits:read`.\n\nDocs: https://platform.detectif.ai/docs/api/get-balance/"
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\",\n  \"object\": \"credits\",\n  \"plan\": \"unlimited\",\n  \"unlimited\": true,\n  \"reserved\": 0\n}"
            },
            {
              "name": "401 Unauthorized",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/credits",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "credits"
                  ]
                },
                "description": "Returns your plan, your available credits and the credits held by checks that are still running. On the unlimited plan `unlimited` is true and `available` is null. Requires scope `credits:read`.\n\nDocs: https://platform.detectif.ai/docs/api/get-balance/"
              },
              "status": "Unauthorized",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"authentication\",\n    \"code\": \"invalid_api_key\",\n    \"message\": \"The API key is invalid.\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "403 Forbidden",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/credits",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "credits"
                  ]
                },
                "description": "Returns your plan, your available credits and the credits held by checks that are still running. On the unlimited plan `unlimited` is true and `available` is null. Requires scope `credits:read`.\n\nDocs: https://platform.detectif.ai/docs/api/get-balance/"
              },
              "status": "Forbidden",
              "code": 403,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"permission\",\n    \"code\": \"insufficient_scope\",\n    \"message\": \"This API key is missing the required scope(s): deepfake:detect.\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "429 Too Many Requests",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/credits",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "credits"
                  ]
                },
                "description": "Returns your plan, your available credits and the credits held by checks that are still running. On the unlimited plan `unlimited` is true and `available` is null. Requires scope `credits:read`.\n\nDocs: https://platform.detectif.ai/docs/api/get-balance/"
              },
              "status": "Too Many Requests",
              "code": 429,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"rate_limited\",\n    \"code\": \"rate_limited\",\n    \"message\": \"Model operation rate limit reached (30 per minute per account).\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "500 Internal Server Error",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/credits",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "credits"
                  ]
                },
                "description": "Returns your plan, your available credits and the credits held by checks that are still running. On the unlimited plan `unlimited` is true and `available` is null. Requires scope `credits:read`.\n\nDocs: https://platform.detectif.ai/docs/api/get-balance/"
              },
              "status": "Internal Server Error",
              "code": 500,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"internal\",\n    \"code\": \"internal_error\",\n    \"message\": \"An internal error occurred.\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            }
          ]
        },
        {
          "name": "List your usage",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/usage",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "usage"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "20",
                  "description": "How many entries to return (1-100).",
                  "disabled": true
                },
                {
                  "key": "cursor",
                  "value": "eyJ0IjoiMjAyNi0xMC0xMyJ9",
                  "description": "`next_cursor` from the previous page.",
                  "disabled": true
                },
                {
                  "key": "operation",
                  "value": "deepfake.detect",
                  "description": "Only this kind of request.",
                  "disabled": true
                },
                {
                  "key": "status",
                  "value": "succeeded",
                  "description": "Only requests with this outcome.",
                  "disabled": true
                }
              ]
            },
            "description": "Lists your detection, enrollment and verification requests with their outcome and the credits they used, newest first. Filter by `operation` or `status`; page with `limit` and `cursor`. Requires scope `usage:read`.\n\nDocs: https://platform.detectif.ai/docs/api/get-usage/"
          },
          "response": [
            {
              "name": "200 OK",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/usage",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "usage"
                  ],
                  "query": [
                    {
                      "key": "limit",
                      "value": "20",
                      "description": "How many entries to return (1-100).",
                      "disabled": true
                    },
                    {
                      "key": "cursor",
                      "value": "eyJ0IjoiMjAyNi0xMC0xMyJ9",
                      "description": "`next_cursor` from the previous page.",
                      "disabled": true
                    },
                    {
                      "key": "operation",
                      "value": "deepfake.detect",
                      "description": "Only this kind of request.",
                      "disabled": true
                    },
                    {
                      "key": "status",
                      "value": "succeeded",
                      "description": "Only requests with this outcome.",
                      "disabled": true
                    }
                  ]
                },
                "description": "Lists your detection, enrollment and verification requests with their outcome and the credits they used, newest first. Filter by `operation` or `status`; page with `limit` and `cursor`. Requires scope `usage:read`.\n\nDocs: https://platform.detectif.ai/docs/api/get-usage/"
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\",\n  \"object\": \"list\",\n  \"data\": [\n    {\n      \"id\": \"use_812\",\n      \"operation_id\": \"op_6f1ed002ab5595859014ebf0951522d9\",\n      \"type\": \"deepfake.detect\",\n      \"source\": \"api\",\n      \"status\": \"succeeded\",\n      \"http_status\": 200,\n      \"duration_seconds\": 6.4,\n      \"request_id\": \"req_8f14e45fceea167a5a36dedd\",\n      \"created_at\": \"2026-10-13T09:30:00Z\"\n    }\n  ],\n  \"has_more\": true,\n  \"next_cursor\": \"eyJ0IjoiMjAyNi0xMC0xM1QwOTozMDowMFoiLCJpIjo4MTJ9\"\n}"
            },
            {
              "name": "400 Bad Request",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/usage",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "usage"
                  ],
                  "query": [
                    {
                      "key": "limit",
                      "value": "20",
                      "description": "How many entries to return (1-100).",
                      "disabled": true
                    },
                    {
                      "key": "cursor",
                      "value": "eyJ0IjoiMjAyNi0xMC0xMyJ9",
                      "description": "`next_cursor` from the previous page.",
                      "disabled": true
                    },
                    {
                      "key": "operation",
                      "value": "deepfake.detect",
                      "description": "Only this kind of request.",
                      "disabled": true
                    },
                    {
                      "key": "status",
                      "value": "succeeded",
                      "description": "Only requests with this outcome.",
                      "disabled": true
                    }
                  ]
                },
                "description": "Lists your detection, enrollment and verification requests with their outcome and the credits they used, newest first. Filter by `operation` or `status`; page with `limit` and `cursor`. Requires scope `usage:read`.\n\nDocs: https://platform.detectif.ai/docs/api/get-usage/"
              },
              "status": "Bad Request",
              "code": 400,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"invalid_request\",\n    \"code\": \"invalid_speaker_id\",\n    \"message\": \"speaker_id must be 1-64 characters from A-Z, a-z, 0-9, '_', '.', ':' and '-'.\",\n    \"param\": \"speaker_id\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "401 Unauthorized",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/usage",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "usage"
                  ],
                  "query": [
                    {
                      "key": "limit",
                      "value": "20",
                      "description": "How many entries to return (1-100).",
                      "disabled": true
                    },
                    {
                      "key": "cursor",
                      "value": "eyJ0IjoiMjAyNi0xMC0xMyJ9",
                      "description": "`next_cursor` from the previous page.",
                      "disabled": true
                    },
                    {
                      "key": "operation",
                      "value": "deepfake.detect",
                      "description": "Only this kind of request.",
                      "disabled": true
                    },
                    {
                      "key": "status",
                      "value": "succeeded",
                      "description": "Only requests with this outcome.",
                      "disabled": true
                    }
                  ]
                },
                "description": "Lists your detection, enrollment and verification requests with their outcome and the credits they used, newest first. Filter by `operation` or `status`; page with `limit` and `cursor`. Requires scope `usage:read`.\n\nDocs: https://platform.detectif.ai/docs/api/get-usage/"
              },
              "status": "Unauthorized",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"authentication\",\n    \"code\": \"invalid_api_key\",\n    \"message\": \"The API key is invalid.\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "403 Forbidden",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/usage",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "usage"
                  ],
                  "query": [
                    {
                      "key": "limit",
                      "value": "20",
                      "description": "How many entries to return (1-100).",
                      "disabled": true
                    },
                    {
                      "key": "cursor",
                      "value": "eyJ0IjoiMjAyNi0xMC0xMyJ9",
                      "description": "`next_cursor` from the previous page.",
                      "disabled": true
                    },
                    {
                      "key": "operation",
                      "value": "deepfake.detect",
                      "description": "Only this kind of request.",
                      "disabled": true
                    },
                    {
                      "key": "status",
                      "value": "succeeded",
                      "description": "Only requests with this outcome.",
                      "disabled": true
                    }
                  ]
                },
                "description": "Lists your detection, enrollment and verification requests with their outcome and the credits they used, newest first. Filter by `operation` or `status`; page with `limit` and `cursor`. Requires scope `usage:read`.\n\nDocs: https://platform.detectif.ai/docs/api/get-usage/"
              },
              "status": "Forbidden",
              "code": 403,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"permission\",\n    \"code\": \"insufficient_scope\",\n    \"message\": \"This API key is missing the required scope(s): deepfake:detect.\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "429 Too Many Requests",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/usage",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "usage"
                  ],
                  "query": [
                    {
                      "key": "limit",
                      "value": "20",
                      "description": "How many entries to return (1-100).",
                      "disabled": true
                    },
                    {
                      "key": "cursor",
                      "value": "eyJ0IjoiMjAyNi0xMC0xMyJ9",
                      "description": "`next_cursor` from the previous page.",
                      "disabled": true
                    },
                    {
                      "key": "operation",
                      "value": "deepfake.detect",
                      "description": "Only this kind of request.",
                      "disabled": true
                    },
                    {
                      "key": "status",
                      "value": "succeeded",
                      "description": "Only requests with this outcome.",
                      "disabled": true
                    }
                  ]
                },
                "description": "Lists your detection, enrollment and verification requests with their outcome and the credits they used, newest first. Filter by `operation` or `status`; page with `limit` and `cursor`. Requires scope `usage:read`.\n\nDocs: https://platform.detectif.ai/docs/api/get-usage/"
              },
              "status": "Too Many Requests",
              "code": 429,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"rate_limited\",\n    \"code\": \"rate_limited\",\n    \"message\": \"Model operation rate limit reached (30 per minute per account).\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "500 Internal Server Error",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/usage",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "usage"
                  ],
                  "query": [
                    {
                      "key": "limit",
                      "value": "20",
                      "description": "How many entries to return (1-100).",
                      "disabled": true
                    },
                    {
                      "key": "cursor",
                      "value": "eyJ0IjoiMjAyNi0xMC0xMyJ9",
                      "description": "`next_cursor` from the previous page.",
                      "disabled": true
                    },
                    {
                      "key": "operation",
                      "value": "deepfake.detect",
                      "description": "Only this kind of request.",
                      "disabled": true
                    },
                    {
                      "key": "status",
                      "value": "succeeded",
                      "description": "Only requests with this outcome.",
                      "disabled": true
                    }
                  ]
                },
                "description": "Lists your detection, enrollment and verification requests with their outcome and the credits they used, newest first. Filter by `operation` or `status`; page with `limit` and `cursor`. Requires scope `usage:read`.\n\nDocs: https://platform.detectif.ai/docs/api/get-usage/"
              },
              "status": "Internal Server Error",
              "code": 500,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"internal\",\n    \"code\": \"internal_error\",\n    \"message\": \"An internal error occurred.\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "System",
      "description": "Service status.",
      "item": [
        {
          "name": "Check service health",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/health",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "health"
              ]
            },
            "description": "Whether the service and its parts are up: `status` is `ok`, or `degraded` when a part is unavailable. No authentication needed.\n\nDocs: https://platform.detectif.ai/docs/api/get-health/",
            "auth": {
              "type": "noauth"
            }
          },
          "response": [
            {
              "name": "200 OK",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/health",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "health"
                  ]
                },
                "description": "Whether the service and its parts are up: `status` is `ok`, or `degraded` when a part is unavailable. No authentication needed.\n\nDocs: https://platform.detectif.ai/docs/api/get-health/",
                "auth": {
                  "type": "noauth"
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\",\n  \"status\": \"ok\",\n  \"version\": \"1.0.0\",\n  \"database\": \"ok\",\n  \"inference\": \"ok\"\n}"
            },
            {
              "name": "429 Too Many Requests",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/health",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "health"
                  ]
                },
                "description": "Whether the service and its parts are up: `status` is `ok`, or `degraded` when a part is unavailable. No authentication needed.\n\nDocs: https://platform.detectif.ai/docs/api/get-health/",
                "auth": {
                  "type": "noauth"
                }
              },
              "status": "Too Many Requests",
              "code": 429,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"rate_limited\",\n    \"code\": \"rate_limited\",\n    \"message\": \"Model operation rate limit reached (30 per minute per account).\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            },
            {
              "name": "500 Internal Server Error",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/health",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "health"
                  ]
                },
                "description": "Whether the service and its parts are up: `status` is `ok`, or `degraded` when a part is unavailable. No authentication needed.\n\nDocs: https://platform.detectif.ai/docs/api/get-health/",
                "auth": {
                  "type": "noauth"
                }
              },
              "status": "Internal Server Error",
              "code": 500,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"type\": \"internal\",\n    \"code\": \"internal_error\",\n    \"message\": \"An internal error occurred.\"\n  },\n  \"request_id\": \"req_8f14e45fceea167a5a36dedd\"\n}"
            }
          ]
        }
      ]
    }
  ],
  "auth": {
    "type": "bearer",
    "bearer": [
      {
        "key": "token",
        "value": "{{apiKey}}",
        "type": "string"
      }
    ]
  },
  "variable": [
    {
      "key": "baseUrl",
      "value": "https://platform.detectif.ai",
      "type": "string"
    },
    {
      "key": "apiKey",
      "value": "",
      "type": "string",
      "description": "Your DetectifAI API key (dtf_live_...)."
    }
  ]
}
