{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "#/components/schemas/DeepgramTranscriber",
  "title": "DeepgramTranscriber",
  "type": "object",
  "properties": {
    "provider": {
      "type": "string",
      "description": "This is the transcription provider that will be used.",
      "enum": [
        "deepgram"
      ]
    },
    "model": {
      "description": "This is the Deepgram model that will be used. A list of models can be found here: https://developers.deepgram.com/docs/models-languages-overview",
      "oneOf": [
        {
          "type": "string",
          "enum": [
            "nova-3",
            "nova-3-general",
            "nova-3-medical",
            "nova-2",
            "nova-2-general",
            "nova-2-meeting",
            "nova-2-phonecall",
            "nova-2-finance",
            "nova-2-conversationalai",
            "nova-2-voicemail",
            "nova-2-video",
            "nova-2-medical",
            "nova-2-drivethru",
            "nova-2-automotive",
            "nova",
            "nova-general",
            "nova-phonecall",
            "nova-medical",
            "enhanced",
            "enhanced-general",
            "enhanced-meeting",
            "enhanced-phonecall",
            "enhanced-finance",
            "base",
            "base-general",
            "base-meeting",
            "base-phonecall",
            "base-finance",
            "base-conversationalai",
            "base-voicemail",
            "base-video",
            "whisper",
            "flux-general-en",
            "flux-general-multi"
          ]
        },
        {
          "type": "string"
        }
      ]
    },
    "language": {
      "type": "string",
      "description": "This is the language that will be set for the transcription. The list of languages Deepgram supports can be found here: https://developers.deepgram.com/docs/models-languages-overview",
      "enum": [
        "ar",
        "az",
        "ba",
        "be",
        "bg",
        "bn",
        "br",
        "bs",
        "ca",
        "cs",
        "da",
        "da-DK",
        "de",
        "de-CH",
        "el",
        "en",
        "en-AU",
        "en-CA",
        "en-GB",
        "en-IE",
        "en-IN",
        "en-NZ",
        "en-US",
        "es",
        "es-419",
        "es-LATAM",
        "et",
        "eu",
        "fa",
        "fi",
        "fr",
        "fr-CA",
        "ha",
        "haw",
        "he",
        "hi",
        "hi-Latn",
        "hr",
        "hu",
        "id",
        "is",
        "it",
        "ja",
        "jw",
        "kn",
        "ko",
        "ko-KR",
        "ln",
        "lt",
        "lv",
        "mk",
        "mr",
        "ms",
        "multi",
        "nl",
        "nl-BE",
        "no",
        "pl",
        "pt",
        "pt-BR",
        "pt-PT",
        "ro",
        "ru",
        "sk",
        "sl",
        "sn",
        "so",
        "sr",
        "su",
        "sv",
        "sv-SE",
        "ta",
        "taq",
        "te",
        "th",
        "th-TH",
        "tl",
        "tr",
        "tt",
        "uk",
        "ur",
        "vi",
        "yo",
        "zh",
        "zh-CN",
        "zh-HK",
        "zh-Hans",
        "zh-Hant",
        "zh-TW"
      ]
    },
    "smartFormat": {
      "type": "boolean",
      "description": "This will be use smart format option provided by Deepgram. It's default disabled because it can sometimes format numbers as times but it's getting better.",
      "example": false
    },
    "mipOptOut": {
      "type": "boolean",
      "description": "If set to true, this will add mip_opt_out=true as a query parameter of all API requests. See https://developers.deepgram.com/docs/the-deepgram-model-improvement-partnership-program#want-to-opt-out\n\nThis will only be used if you are using your own Deepgram API key.\n\n@default false",
      "example": false,
      "default": false
    },
    "numerals": {
      "type": "boolean",
      "description": "If set to true, this will cause deepgram to convert spoken numbers to literal numerals. For example, \"my phone number is nine-seven-two...\" would become \"my phone number is 972...\"\n\n@default false",
      "example": false
    },
    "profanityFilter": {
      "type": "boolean",
      "description": "If set to true, Deepgram will replace profanity in transcripts with surrounding asterisks, e.g. \"f***\".\n\n@default false",
      "example": false
    },
    "redaction": {
      "type": "array",
      "description": "Enables redaction of sensitive information from transcripts.\n\nOptions include:\n- \"pci\": Redacts credit card numbers, expiration dates, and CVV.\n- \"pii\": Redacts personally identifiable information (names, locations, identifying numbers, etc.).\n- \"phi\": Redacts protected health information (medical conditions, drugs, injuries, etc.).\n- \"numbers\": Redacts numerical and identifying entities (dates, account numbers, SSNs, etc.).\n\nMultiple values can be provided to redact different categories simultaneously.\nRedacted content is replaced with entity labels like [CREDIT_CARD_1], [SSN_1], etc.\n\nSee https://developers.deepgram.com/docs/redaction for details.",
      "enum": [
        "pci",
        "pii",
        "phi",
        "numbers"
      ],
      "example": [
        "pci",
        "phi"
      ],
      "items": {
        "type": "string",
        "enum": [
          "pci",
          "pii",
          "phi",
          "numbers"
        ]
      }
    },
    "confidenceThreshold": {
      "type": "number",
      "description": "Transcripts below this confidence threshold will be discarded.\n\n@default 0.4",
      "minimum": 0,
      "maximum": 1,
      "example": 0.4
    },
    "eotThreshold": {
      "type": "number",
      "description": "End-of-turn confidence required to finish a turn. Only used with Flux models.\n\n@default 0.7",
      "minimum": 0.5,
      "maximum": 0.9,
      "example": 0.7
    },
    "eotTimeoutMs": {
      "type": "number",
      "description": "A turn will be finished when this much time has passed after speech, regardless of EOT confidence. Only used with Flux models.\n\n@default 5000",
      "minimum": 500,
      "maximum": 10000,
      "example": 5000
    },
    "languages": {
      "description": "Language hints to bias Flux Multilingual (`flux-general-multi`) toward specific languages.\nProvide BCP-47 language codes (e.g. \"en\", \"es\", \"fr\"). Multiple hints can be given for\nmultilingual or code-switching scenarios. Omit for auto-detection. Only used with `flux-general-multi`.",
      "example": [
        "en",
        "es"
      ],
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "keywords": {
      "description": "These keywords are passed to the transcription model to help it pick up use-case specific words. Anything that may not be a common word, like your company name, should be added here.",
      "type": "array",
      "items": {
        "type": "string",
        "pattern": "/^\\p{L}[\\p{L}\\d]*(?::[+-]?\\d+)?$/u"
      }
    },
    "keyterm": {
      "description": "Keyterm Prompting allows you improve Keyword Recall Rate (KRR) for important keyterms or phrases up to 90%.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "endpointing": {
      "type": "number",
      "description": "This is the timeout after which Deepgram will send transcription on user silence. You can read in-depth documentation here: https://developers.deepgram.com/docs/endpointing.\n\nHere are the most important bits:\n- Defaults to 10. This is recommended for most use cases to optimize for latency.\n- 10 can cause some missing transcriptions since because of the shorter context. This mostly happens for one-word utterances. For those uses cases, it's recommended to try 300. It will add a bit of latency but the quality and reliability of the experience will be better.\n- If neither 10 nor 300 work, contact support@vapi.ai and we'll find another solution.\n\n@default 10",
      "minimum": 10,
      "maximum": 500
    },
    "fallbackPlan": {
      "description": "This is the plan for transcriber provider fallbacks in the event that the primary transcriber provider fails.",
      "allOf": [
        {
          "$ref": "#/components/schemas/FallbackTranscriberPlan"
        }
      ]
    }
  },
  "required": [
    "provider"
  ]
}