diff --git a/fern/apis/api/openapi.json b/fern/apis/api/openapi.json index 72bba5399..faf38fb95 100644 --- a/fern/apis/api/openapi.json +++ b/fern/apis/api/openapi.json @@ -8808,6 +8808,9 @@ } } } + }, + "403": { + "description": "Forbidden" } }, "tags": [ @@ -8970,6 +8973,9 @@ } } } + }, + "403": { + "description": "Forbidden" } }, "tags": [ @@ -9018,6 +9024,9 @@ } } } + }, + "403": { + "description": "Forbidden" } }, "tags": [ @@ -9054,6 +9063,9 @@ } } } + }, + "403": { + "description": "Forbidden" } }, "tags": [ @@ -9090,6 +9102,9 @@ } } } + }, + "403": { + "description": "Forbidden" } }, "tags": [ @@ -9128,6 +9143,9 @@ } } } + }, + "403": { + "description": "Forbidden" } }, "tags": [ @@ -9164,6 +9182,9 @@ } } } + }, + "403": { + "description": "Forbidden" } }, "tags": [ @@ -9192,9 +9213,6 @@ } }, "responses": { - "200": { - "description": "" - }, "201": { "description": "", "content": { @@ -9204,6 +9222,9 @@ } } } + }, + "403": { + "description": "Forbidden" } }, "tags": [ @@ -9366,6 +9387,9 @@ } } } + }, + "403": { + "description": "Forbidden" } }, "tags": [ @@ -21534,6 +21558,73 @@ "model" ] }, + "OpenAISpeaker": { + "type": "object", + "properties": { + "instructions": { + "type": "string", + "description": "Omit to use legacy system messages. An explicit empty string is preserved." + }, + "personalityPacks": { + "type": "array", + "enum": [ + "eager-listener", + "idle-hummer", + "bouncy", + "unhurried" + ], + "items": { + "type": "string", + "enum": [ + "eager-listener", + "idle-hummer", + "bouncy", + "unhurried" + ] + } + } + } + }, + "OpenAIReasoner": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "description": "The reasoner uses OpenAI. Omit to use OpenAI.", + "enum": [ + "openai" + ], + "default": "openai" + }, + "model": { + "type": "string", + "description": "The delegated reasoning model. Omit to use GPT-5.6 Terra.", + "enum": [ + "gpt-5.6-sol", + "gpt-5.6-terra", + "gpt-5.6-luna" + ], + "default": "gpt-5.6-terra" + }, + "reasoningEffort": { + "type": "string", + "description": "Higher effort can increase response time. Omit to use low.", + "enum": [ + "none", + "low", + "medium", + "high", + "xhigh", + "max" + ], + "default": "low" + }, + "instructions": { + "type": "string", + "description": "Complete reasoner instructions. An explicit empty string is preserved.\nOmit to use Vapi's default reasoner instructions. No behavioral instructions\nare appended to a custom prompt." + } + } + }, "OpenAIModel": { "type": "object", "properties": { @@ -21667,6 +21758,22 @@ } ] }, + "speaker": { + "description": "Configuration for the GPT-Live speaker.", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAISpeaker" + } + ] + }, + "reasoner": { + "description": "Configuration for the reasoner supporting the GPT-Live speaker.", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAIReasoner" + } + ] + }, "provider": { "type": "string", "description": "This is the provider that will be used for the model.", @@ -28220,7 +28327,7 @@ ] }, "voiceId": { - "description": "This is the provider-specific ID that will be used.\nPlease note that ash, ballad, coral, sage, and verse may only be used with realtime or GPT-Live models.", + "description": "This is the provider-specific ID that will be used.\nPlease note that ash, ballad, coral, sage, and verse may only be used with realtime or GPT-Live models.\nquartz, ripple, vesper, willow, stone, gleam, meridian, bossa, tempo, beacon, delta, cinder are only supported with GPT-Live models.", "oneOf": [ { "type": "string", @@ -28232,7 +28339,24 @@ "nova", "shimmer", "marin", - "cedar" + "cedar", + "ash", + "ballad", + "beacon", + "bossa", + "cinder", + "coral", + "delta", + "gleam", + "meridian", + "quartz", + "ripple", + "sage", + "stone", + "tempo", + "verse", + "vesper", + "willow" ], "title": "Preset Voice Options" }, @@ -28526,10 +28650,17 @@ "orion", "masonry", "albion", - "parapet" + "parapet", + "clementine", + "walnut", + "eyre", + "bancroft", + "hesse", + "beatty", + "godfrey" ], "title": "Suggested Voice Options", - "description": "Popular Rime AI voices across mist, mistv2, and arcana models. Any valid Rime AI voice ID is accepted, not just these suggestions." + "description": "Popular Rime AI voices across mist, mistv2, mistv3, arcana, and coda models. Any valid Rime AI voice ID is accepted, not just these suggestions." }, { "type": "string", @@ -28543,7 +28674,9 @@ "description": "This is the model that will be used. Defaults to 'arcana' when not specified.", "enum": [ "arcana", + "coda", "mistv2", + "mistv3", "mist" ], "example": "arcana" @@ -30893,7 +31026,7 @@ ] }, "voiceId": { - "description": "This is the provider-specific ID that will be used.\nPlease note that ash, ballad, coral, sage, and verse may only be used with realtime or GPT-Live models.", + "description": "This is the provider-specific ID that will be used.\nPlease note that ash, ballad, coral, sage, and verse may only be used with realtime or GPT-Live models.\nquartz, ripple, vesper, willow, stone, gleam, meridian, bossa, tempo, beacon, delta, cinder are only supported with GPT-Live models.", "oneOf": [ { "type": "string", @@ -30905,7 +31038,24 @@ "nova", "shimmer", "marin", - "cedar" + "cedar", + "ash", + "ballad", + "beacon", + "bossa", + "cinder", + "coral", + "delta", + "gleam", + "meridian", + "quartz", + "ripple", + "sage", + "stone", + "tempo", + "verse", + "vesper", + "willow" ], "title": "Preset Voice Options" }, @@ -31183,10 +31333,17 @@ "orion", "masonry", "albion", - "parapet" + "parapet", + "clementine", + "walnut", + "eyre", + "bancroft", + "hesse", + "beatty", + "godfrey" ], "title": "Suggested Voice Options", - "description": "Popular Rime AI voices across mist, mistv2, and arcana models. Any valid Rime AI voice ID is accepted, not just these suggestions." + "description": "Popular Rime AI voices across mist, mistv2, mistv3, arcana, and coda models. Any valid Rime AI voice ID is accepted, not just these suggestions." }, { "type": "string", @@ -31200,7 +31357,9 @@ "description": "This is the model that will be used. Defaults to 'arcana' when not specified.", "enum": [ "arcana", + "coda", "mistv2", + "mistv3", "mist" ], "example": "arcana" @@ -44120,6 +44279,14 @@ "model" ] }, + "seconds": { + "type": "number", + "description": "Provider-reported billable duration in seconds. Currently supplied for GPT-Live; omitted for token-billed models." + }, + "usageComplete": { + "type": "boolean", + "description": "Whether the reported usage is complete. False means the cost reflects missing or partial usage and may understate provider spend. Omitted when the provider integration does not report completeness." + }, "model": { "type": "object", "description": "This is the model that was used during the call.\n\nThis matches one of the following:\n- `call.assistant.model`,\n- `call.assistantId->model`,\n- `call.squad[n].assistant.model`,\n- `call.squad[n].assistantId->model`,\n- `call.squadId->[n].assistant.model`,\n- `call.squadId->[n].assistantId->model`." @@ -65888,6 +66055,66 @@ "updatedAt" ] }, + "OrgConcurrencyLimitsDTO": { + "type": "object", + "properties": { + "concurrencyBlocked": { + "type": "boolean", + "description": "True when the org is at or over its concurrency limit at the time of the read. This is a status read, not an admission decision: no call was evaluated and no slot is reserved." + }, + "concurrencyLimit": { + "type": "number", + "description": "Maximum number of concurrent calls the subscription allows, at the time of the read. Computed as the subscription's included plus purchased concurrency, defaulting to the initial allowance when either is unset; call create derives its own figure and can differ for subscriptions with an unset allowance." + }, + "remainingConcurrentCalls": { + "type": "number", + "description": "Plain concurrent-call headroom at the time of the read, floored at zero. Unlike the call create response, this does not include or reserve a slot for a new call." + } + }, + "required": [ + "concurrencyBlocked", + "concurrencyLimit", + "remainingConcurrentCalls" + ] + }, + "OrgApiLimitsDTO": { + "type": "object", + "properties": { + "rateLimitUsage": { + "type": "number", + "description": "Approximate number of API requests counted against the rate limit in the current minute, in the region that served this request. The count lives in a tumbling one-minute window aligned to the UTC clock (unix seconds / 60), so it resets to zero at the top of every minute; there is no reset header — the next boundary is (floor(now / 60) + 1) * 60." + }, + "rateLimitMax": { + "type": "number", + "description": "Maximum number of standard API requests allowed per minute, in the region that served this request. Live call media traffic is limited separately and is not reflected here." + } + }, + "required": [ + "rateLimitUsage", + "rateLimitMax" + ] + }, + "OrgLimitsResponseDTO": { + "type": "object", + "properties": { + "subscriptionLimits": { + "description": "Call concurrency limits for the subscription. Unlike the call create response, remainingConcurrentCalls does not reserve a slot for a new call: it is the plain headroom at the time of the read. Covers the concurrency gate only — credits, frozen subscriptions, included minutes, and the billing limit are not reflected here, so call create can still refuse. Omitted when the limits could not be computed, and for an org with no subscription at all (legacy ungated orgs), which has no concurrency ceiling.", + "allOf": [ + { + "$ref": "#/components/schemas/OrgConcurrencyLimitsDTO" + } + ] + }, + "apiLimits": { + "description": "API rate limit usage for the org. Approximate, per region, and scoped to the current minute. Omitted when the limit information is unavailable.", + "allOf": [ + { + "$ref": "#/components/schemas/OrgApiLimitsDTO" + } + ] + } + } + }, "UpdateOrgDTO": { "type": "object", "properties": {