{
  "info": {
    "name": "TonePerfect API — generated from OpenAPI",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
    "description": "Set api_key privately. Select your own consented audio. No request runs on import; assessment consumes credits. Keep idempotency_key for identical retries; replace it for each new recording."
  },
  "variable": [
    {
      "key": "base_url",
      "value": "https://api.toneperfect.app"
    },
    {
      "key": "api_key",
      "value": ""
    },
    {
      "key": "idempotency_key",
      "value": "postman-recording-001"
    }
  ],
  "item": [
    {
      "name": "Assess a short recording",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Accept",
            "value": "application/json"
          },
          {
            "key": "Authorization",
            "value": "Bearer {{api_key}}"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{idempotency_key}}"
          },
          {
            "key": "TonePerfect-Response",
            "value": "compact"
          },
          {
            "key": "TonePerfect-Test-Outcome",
            "value": "success",
            "disabled": true,
            "description": "Test keys only"
          }
        ],
        "url": "{{base_url}}/v1/assess",
        "description": "Multipart upload of the recording plus its reference. Provide `text`, or (Mandarin only) `pinyin`, or both with one pinyin syllable per character. 60 requests per minute per account; assessments in progress at once per plan are listed in `GET /v1/terms` (`limits.concurrent_requests_by_plan`). A `tp_test_` key returns a fixed example result (`test: true`), never scores audio and never spends credits.",
        "body": {
          "mode": "formdata",
          "formdata": [
            {
              "key": "audio",
              "type": "file",
              "src": []
            },
            {
              "key": "text",
              "type": "text",
              "value": "你好"
            },
            {
              "key": "language",
              "type": "text",
              "value": "zh-CN"
            },
            {
              "key": "task",
              "type": "text",
              "value": "general"
            },
            {
              "key": "pinyin",
              "type": "text",
              "value": "ni3 hao3"
            }
          ]
        }
      },
      "response": []
    },
    {
      "name": "Installed languages, dimensions and limits",
      "request": {
        "method": "GET",
        "header": [
          {
            "key": "Accept",
            "value": "application/json"
          }
        ],
        "url": "{{base_url}}/v1/capabilities",
        "description": "No API key required."
      },
      "response": []
    },
    {
      "name": "Check a reference text before recording",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Accept",
            "value": "application/json"
          },
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": "{{base_url}}/v1/lint",
        "description": "Applies the engine’s reference rules (script, digits, length, Mandarin pinyin parsing and character count) without audio. Free; no API key; 120 requests per minute per IP address. A text that passes can still be refused by a newer engine.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"text\": \"你好\",\n  \"language\": \"zh-CN\",\n  \"pinyin\": \"ni3 hao3\",\n  \"task\": \"general\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      },
      "response": []
    },
    {
      "name": "Synthetic probe status",
      "request": {
        "method": "GET",
        "header": [
          {
            "key": "Accept",
            "value": "application/json"
          }
        ],
        "url": "{{base_url}}/v1/status",
        "description": "Outcome of the gateway’s synthetic engine check: one machine-speech clip scored through the /v1/assess engine path every few minutes, without an account or credits. A pass means a well-formed scored result came back; it does not measure accuracy. Free; no API key."
      },
      "response": []
    },
    {
      "name": "Supported commercial terms",
      "request": {
        "method": "GET",
        "header": [
          {
            "key": "Accept",
            "value": "application/json"
          }
        ],
        "url": "{{base_url}}/v1/terms",
        "description": "Plans, credits, limits per plan, what happens to credits after a plan ends, and the invoice shapes billing supports, generated from the code that enforces them. Free; no API key."
      },
      "response": []
    }
  ]
}
