{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/audioscrape-com/json-schema/audioscrape-com-upload-from-url-schema.json",
  "title": "UploadFromUrl",
  "description": "JSON body for URL-based upload. Use this when the audio is already\nhosted somewhere reachable from the public internet (S3 presigned URL,\nCDN, your own server). Audioscrape downloads it and stores a copy so\ntranscription, indexing, and playback work even if your URL later\nbecomes unavailable.",
  "x-generated": "2026-11-02",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/audioscrape-com-openapi.json#/components/schemas/UploadFromUrl",
  "type": "object",
  "required": [
    "audio_url"
  ],
  "properties": {
    "audio_url": {
      "type": "string",
      "description": "Publicly reachable `https://` URL of the audio file. Must NOT\nresolve to a private / internal IP range (SSRF guard)."
    },
    "content_type": {
      "type": [
        "string",
        "null"
      ],
      "description": "What the audio IS (e.g. `phone_call`). Drives the Details panel,\nspeaker-label suggestions, and processing hints. See GH#35."
    },
    "derive_title": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "GH#617: opt in to derived titles (cleaned filename placeholder +\ntranscript-derived title from the pipeline). Default OFF on the API:\nthe title you send — or the file's own name — is treated as your\ndeliberate choice and never rewritten."
    },
    "description": {
      "type": [
        "string",
        "null"
      ]
    },
    "metadata": {
      "description": "Free-form, type-shaped metadata bag (descriptive fields + processing\nhints like num_speakers). Must be a JSON object. Stored on `items.metadata`."
    },
    "title": {
      "type": [
        "string",
        "null"
      ]
    }
  }
}