{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/telnyx/main/json-schema/telnyx-create-outbound-voice-profile-request-schema.json",
  "title": "Outbound Voice Profile",
  "x-generated": "2026-10-08",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/telnyx-outbound-voice-profiles-api-openapi.yml#/components/schemas/CreateOutboundVoiceProfileRequest",
  "properties": {
    "billing_group_id": {
      "default": null,
      "description": "The ID of the billing group associated with the outbound proflile. Defaults to null (for no group assigned).",
      "format": "uuid",
      "type": [
        "string",
        "null"
      ]
    },
    "call_recording": {
      "$ref": "#/$defs/OutboundCallRecording"
    },
    "calling_window": {
      "description": "(BETA) Specifies the time window and call limits for calls made using this outbound voice profile. Note that all times are UTC in 24-hour clock time.",
      "properties": {
        "calls_per_cld": {
          "description": "(BETA) The maximum number of calls that can be initiated to a single called party (CLD) within the calling window. A null value means no limit.",
          "minimum": 0,
          "type": "integer"
        },
        "end_time": {
          "description": "(BETA) The UTC time of day (in HH:MM format, 24-hour clock) when calls are no longer allowed to start.",
          "format": "time",
          "type": "string"
        },
        "start_time": {
          "description": "(BETA) The UTC time of day (in HH:MM format, 24-hour clock) when calls are allowed to start.",
          "format": "time",
          "type": "string"
        }
      },
      "type": "object"
    },
    "concurrent_call_limit": {
      "description": "Must be no more than your global concurrent call limit. Null means no limit.",
      "type": [
        "integer",
        "null"
      ]
    },
    "daily_spend_limit": {
      "description": "The maximum amount of usage charges, in USD, you want Telnyx to allow on this outbound voice profile in a day before disallowing new calls.",
      "type": "string"
    },
    "daily_spend_limit_enabled": {
      "default": false,
      "description": "Specifies whether to enforce the daily_spend_limit on this outbound voice profile.",
      "type": "boolean"
    },
    "enabled": {
      "default": true,
      "description": "Specifies whether the outbound voice profile can be used. Disabled profiles will result in outbound calls being blocked for the associated Connections.",
      "type": "boolean"
    },
    "max_destination_rate": {
      "description": "Maximum rate (price per minute) for a Destination to be allowed when making outbound calls.",
      "type": "number"
    },
    "name": {
      "description": "A user-supplied name to help with organization.",
      "minLength": 3,
      "type": "string"
    },
    "service_plan": {
      "$ref": "#/$defs/ServicePlan"
    },
    "tags": {
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "traffic_type": {
      "$ref": "#/$defs/TrafficType"
    },
    "usage_payment_method": {
      "$ref": "#/$defs/UsagePaymentMethod"
    },
    "whitelisted_destinations": {
      "default": [
        "US",
        "CA"
      ],
      "description": "The list of destinations you want to be able to call using this outbound voice profile formatted in alpha2.",
      "items": {
        "type": "string"
      },
      "type": "array"
    }
  },
  "required": [
    "name"
  ],
  "type": "object",
  "$defs": {
    "OutboundCallRecording": {
      "properties": {
        "call_recording_caller_phone_numbers": {
          "description": "When call_recording_type is 'by_caller_phone_number', only outbound calls using one of these numbers will be recorded. Numbers must be specified in E164 format.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "call_recording_channels": {
          "default": "single",
          "description": "When using 'dual' channels, the final audio file will be a stereo recording with the first leg on channel A, and the rest on channel B.",
          "enum": [
            "single",
            "dual"
          ],
          "type": "string"
        },
        "call_recording_format": {
          "default": "wav",
          "description": "The audio file format for calls being recorded.",
          "enum": [
            "wav",
            "mp3"
          ],
          "type": "string"
        },
        "call_recording_type": {
          "description": "Specifies which calls are recorded.",
          "enum": [
            "all",
            "none",
            "by_caller_phone_number"
          ],
          "type": "string"
        }
      },
      "type": "object"
    },
    "ServicePlan": {
      "default": "global",
      "description": "Indicates the coverage of the termination regions.",
      "enum": [
        "global"
      ],
      "type": "string"
    },
    "TrafficType": {
      "default": "conversational",
      "description": "Specifies the type of traffic allowed in this profile.",
      "enum": [
        "conversational"
      ],
      "type": "string"
    },
    "UsagePaymentMethod": {
      "default": "rate-deck",
      "description": "Setting for how costs for outbound profile are calculated.",
      "enum": [
        "rate-deck"
      ],
      "type": "string"
    }
  }
}