diff --git a/api.json b/api.json index 16760af..c4ed395 100644 --- a/api.json +++ b/api.json @@ -10,9 +10,7 @@ "required": true, "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateAssistantDTO" - } + "schema": { "$ref": "#/components/schemas/CreateAssistantDTO" } } } }, @@ -21,21 +19,13 @@ "description": "", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Assistant" - } + "schema": { "$ref": "#/components/schemas/Assistant" } } } } }, - "tags": [ - "Assistants" - ], - "security": [ - { - "bearer": [] - } - ] + "tags": ["Assistants"], + "security": [{ "bearer": [] }] }, "get": { "operationId": "AssistantController_findAll", @@ -46,91 +36,63 @@ "required": false, "in": "query", "description": "This is the maximum number of items to return. Defaults to 100.", - "schema": { - "minimum": 0, - "maximum": 1000, - "type": "number" - } + "schema": { "minimum": 0, "maximum": 1000, "type": "number" } }, { "name": "createdAtGt", "required": false, "in": "query", "description": "This will return items where the createdAt is greater than the specified value.", - "schema": { - "format": "date-time", - "type": "string" - } + "schema": { "format": "date-time", "type": "string" } }, { "name": "createdAtLt", "required": false, "in": "query", "description": "This will return items where the createdAt is less than the specified value.", - "schema": { - "format": "date-time", - "type": "string" - } + "schema": { "format": "date-time", "type": "string" } }, { "name": "createdAtGe", "required": false, "in": "query", "description": "This will return items where the createdAt is greater than or equal to the specified value.", - "schema": { - "format": "date-time", - "type": "string" - } + "schema": { "format": "date-time", "type": "string" } }, { "name": "createdAtLe", "required": false, "in": "query", "description": "This will return items where the createdAt is less than or equal to the specified value.", - "schema": { - "format": "date-time", - "type": "string" - } + "schema": { "format": "date-time", "type": "string" } }, { "name": "updatedAtGt", "required": false, "in": "query", "description": "This will return items where the updatedAt is greater than the specified value.", - "schema": { - "format": "date-time", - "type": "string" - } + "schema": { "format": "date-time", "type": "string" } }, { "name": "updatedAtLt", "required": false, "in": "query", "description": "This will return items where the updatedAt is less than the specified value.", - "schema": { - "format": "date-time", - "type": "string" - } + "schema": { "format": "date-time", "type": "string" } }, { "name": "updatedAtGe", "required": false, "in": "query", "description": "This will return items where the updatedAt is greater than or equal to the specified value.", - "schema": { - "format": "date-time", - "type": "string" - } + "schema": { "format": "date-time", "type": "string" } }, { "name": "updatedAtLe", "required": false, "in": "query", "description": "This will return items where the updatedAt is less than or equal to the specified value.", - "schema": { - "format": "date-time", - "type": "string" - } + "schema": { "format": "date-time", "type": "string" } } ], "responses": { @@ -140,22 +102,14 @@ "application/json": { "schema": { "type": "array", - "items": { - "$ref": "#/components/schemas/Assistant" - } + "items": { "$ref": "#/components/schemas/Assistant" } } } } } }, - "tags": [ - "Assistants" - ], - "security": [ - { - "bearer": [] - } - ] + "tags": ["Assistants"], + "security": [{ "bearer": [] }] } }, "/assistant/{id}": { @@ -167,9 +121,7 @@ "name": "id", "required": true, "in": "path", - "schema": { - "type": "string" - } + "schema": { "type": "string" } } ], "responses": { @@ -177,21 +129,13 @@ "description": "", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Assistant" - } + "schema": { "$ref": "#/components/schemas/Assistant" } } } } }, - "tags": [ - "Assistants" - ], - "security": [ - { - "bearer": [] - } - ] + "tags": ["Assistants"], + "security": [{ "bearer": [] }] }, "patch": { "operationId": "AssistantController_update", @@ -201,18 +145,14 @@ "name": "id", "required": true, "in": "path", - "schema": { - "type": "string" - } + "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateAssistantDTO" - } + "schema": { "$ref": "#/components/schemas/UpdateAssistantDTO" } } } }, @@ -221,21 +161,13 @@ "description": "", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Assistant" - } + "schema": { "$ref": "#/components/schemas/Assistant" } } } } }, - "tags": [ - "Assistants" - ], - "security": [ - { - "bearer": [] - } - ] + "tags": ["Assistants"], + "security": [{ "bearer": [] }] }, "put": { "operationId": "AssistantController_replace", @@ -245,18 +177,14 @@ "name": "id", "required": true, "in": "path", - "schema": { - "type": "string" - } + "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateAssistantDTO" - } + "schema": { "$ref": "#/components/schemas/UpdateAssistantDTO" } } } }, @@ -265,21 +193,13 @@ "description": "", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Assistant" - } + "schema": { "$ref": "#/components/schemas/Assistant" } } } } }, - "tags": [ - "Assistants" - ], - "security": [ - { - "bearer": [] - } - ] + "tags": ["Assistants"], + "security": [{ "bearer": [] }] }, "delete": { "operationId": "AssistantController_remove", @@ -289,9 +209,7 @@ "name": "id", "required": true, "in": "path", - "schema": { - "type": "string" - } + "schema": { "type": "string" } } ], "responses": { @@ -299,21 +217,47 @@ "description": "", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Assistant" - } + "schema": { "$ref": "#/components/schemas/Assistant" } } } } }, - "tags": [ - "Assistants" - ], - "security": [ + "tags": ["Assistants"], + "security": [{ "bearer": [] }] + } + }, + "/assistant/{id}/publish": { + "patch": { + "operationId": "AssistantController_publish", + "summary": "Publish Assistant", + "parameters": [ { - "bearer": [] + "name": "id", + "required": true, + "in": "path", + "schema": { "type": "string" } } - ] + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/UpdateAssistantDTO" } + } + } + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/Assistant" } + } + } + } + }, + "tags": ["Assistants", "extended"], + "security": [{ "bearer": [] }] } }, "/call": { @@ -326,100 +270,70 @@ "required": false, "in": "query", "description": "This will return calls with the specified assistantId.", - "schema": { - "type": "string" - } + "schema": { "type": "string" } }, { "name": "limit", "required": false, "in": "query", "description": "This is the maximum number of items to return. Defaults to 100.", - "schema": { - "minimum": 0, - "maximum": 1000, - "type": "number" - } + "schema": { "minimum": 0, "maximum": 1000, "type": "number" } }, { "name": "createdAtGt", "required": false, "in": "query", "description": "This will return items where the createdAt is greater than the specified value.", - "schema": { - "format": "date-time", - "type": "string" - } + "schema": { "format": "date-time", "type": "string" } }, { "name": "createdAtLt", "required": false, "in": "query", "description": "This will return items where the createdAt is less than the specified value.", - "schema": { - "format": "date-time", - "type": "string" - } + "schema": { "format": "date-time", "type": "string" } }, { "name": "createdAtGe", "required": false, "in": "query", "description": "This will return items where the createdAt is greater than or equal to the specified value.", - "schema": { - "format": "date-time", - "type": "string" - } + "schema": { "format": "date-time", "type": "string" } }, { "name": "createdAtLe", "required": false, "in": "query", "description": "This will return items where the createdAt is less than or equal to the specified value.", - "schema": { - "format": "date-time", - "type": "string" - } + "schema": { "format": "date-time", "type": "string" } }, { "name": "updatedAtGt", "required": false, "in": "query", "description": "This will return items where the updatedAt is greater than the specified value.", - "schema": { - "format": "date-time", - "type": "string" - } + "schema": { "format": "date-time", "type": "string" } }, { "name": "updatedAtLt", "required": false, "in": "query", "description": "This will return items where the updatedAt is less than the specified value.", - "schema": { - "format": "date-time", - "type": "string" - } + "schema": { "format": "date-time", "type": "string" } }, { "name": "updatedAtGe", "required": false, "in": "query", "description": "This will return items where the updatedAt is greater than or equal to the specified value.", - "schema": { - "format": "date-time", - "type": "string" - } + "schema": { "format": "date-time", "type": "string" } }, { "name": "updatedAtLe", "required": false, "in": "query", "description": "This will return items where the updatedAt is less than or equal to the specified value.", - "schema": { - "format": "date-time", - "type": "string" - } + "schema": { "format": "date-time", "type": "string" } } ], "responses": { @@ -429,22 +343,120 @@ "application/json": { "schema": { "type": "array", - "items": { - "$ref": "#/components/schemas/Call" - } + "items": { "$ref": "#/components/schemas/Call" } } } } } }, - "tags": [ - "Calls" - ], - "security": [ + "tags": ["Calls"], + "security": [{ "bearer": [] }] + } + }, + "/v2/call": { + "get": { + "operationId": "CallController_findAllPaginated", + "summary": "List Calls", + "parameters": [ + { + "name": "assistantId", + "required": false, + "in": "query", + "description": "This will return calls with the specified assistantId.", + "schema": { "type": "string" } + }, + { + "name": "page", + "required": false, + "in": "query", + "description": "This is the page number to return. Defaults to 1.", + "schema": { "minimum": 1, "type": "number" } + }, + { + "name": "sortOrder", + "required": false, + "in": "query", + "description": "This is the sort order for pagination. Defaults to 'ASC'.", + "schema": { "enum": ["ASC", "DESC"], "type": "string" } + }, + { + "name": "limit", + "required": false, + "in": "query", + "description": "This is the maximum number of items to return. Defaults to 100.", + "schema": { "minimum": 0, "maximum": 1000, "type": "number" } + }, + { + "name": "createdAtGt", + "required": false, + "in": "query", + "description": "This will return items where the createdAt is greater than the specified value.", + "schema": { "format": "date-time", "type": "string" } + }, + { + "name": "createdAtLt", + "required": false, + "in": "query", + "description": "This will return items where the createdAt is less than the specified value.", + "schema": { "format": "date-time", "type": "string" } + }, + { + "name": "createdAtGe", + "required": false, + "in": "query", + "description": "This will return items where the createdAt is greater than or equal to the specified value.", + "schema": { "format": "date-time", "type": "string" } + }, + { + "name": "createdAtLe", + "required": false, + "in": "query", + "description": "This will return items where the createdAt is less than or equal to the specified value.", + "schema": { "format": "date-time", "type": "string" } + }, + { + "name": "updatedAtGt", + "required": false, + "in": "query", + "description": "This will return items where the updatedAt is greater than the specified value.", + "schema": { "format": "date-time", "type": "string" } + }, + { + "name": "updatedAtLt", + "required": false, + "in": "query", + "description": "This will return items where the updatedAt is less than the specified value.", + "schema": { "format": "date-time", "type": "string" } + }, + { + "name": "updatedAtGe", + "required": false, + "in": "query", + "description": "This will return items where the updatedAt is greater than or equal to the specified value.", + "schema": { "format": "date-time", "type": "string" } + }, { - "bearer": [] + "name": "updatedAtLe", + "required": false, + "in": "query", + "description": "This will return items where the updatedAt is less than or equal to the specified value.", + "schema": { "format": "date-time", "type": "string" } } - ] + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CallPaginatedResponse" + } + } + } + } + }, + "tags": ["Calls", "extended"], + "security": [{ "bearer": [] }] } }, "/call/{id}": { @@ -456,9 +468,7 @@ "name": "id", "required": true, "in": "path", - "schema": { - "type": "string" - } + "schema": { "type": "string" } } ], "responses": { @@ -466,21 +476,13 @@ "description": "", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Call" - } + "schema": { "$ref": "#/components/schemas/Call" } } } } }, - "tags": [ - "Calls" - ], - "security": [ - { - "bearer": [] - } - ] + "tags": ["Calls"], + "security": [{ "bearer": [] }] }, "delete": { "operationId": "CallController_deleteCallData", @@ -490,9 +492,7 @@ "name": "id", "required": true, "in": "path", - "schema": { - "type": "string" - } + "schema": { "type": "string" } } ], "responses": { @@ -500,21 +500,13 @@ "description": "", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Call" - } + "schema": { "$ref": "#/components/schemas/Call" } } } } }, - "tags": [ - "Calls" - ], - "security": [ - { - "bearer": [] - } - ] + "tags": ["Calls"], + "security": [{ "bearer": [] }] }, "patch": { "operationId": "CallController_update", @@ -524,18 +516,14 @@ "name": "id", "required": true, "in": "path", - "schema": { - "type": "string" - } + "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateCallDTO" - } + "schema": { "$ref": "#/components/schemas/UpdateCallDTO" } } } }, @@ -544,21 +532,13 @@ "description": "", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Call" - } + "schema": { "$ref": "#/components/schemas/Call" } } } } }, - "tags": [ - "Calls" - ], - "security": [ - { - "bearer": [] - } - ] + "tags": ["Calls"], + "security": [{ "bearer": [] }] } }, "/call/phone": { @@ -570,9 +550,7 @@ "required": true, "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateOutboundCallDTO" - } + "schema": { "$ref": "#/components/schemas/CreateOutboundCallDTO" } } } }, @@ -581,21 +559,233 @@ "description": "", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Call" - } + "schema": { "$ref": "#/components/schemas/Call" } } } } }, - "tags": [ - "Calls" - ], - "security": [ + "tags": ["Calls"], + "security": [{ "bearer": [] }] + } + }, + "/call/web": { + "post": { + "operationId": "CallController_createWebCall", + "summary": "Create Web Call", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/CreateWebCallDTO" } + } + } + }, + "responses": { + "201": { + "description": "", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/Call" } + } + } + } + }, + "tags": ["Calls", "extended"], + "security": [{ "bearer": [] }] + } + }, + "/squad": { + "post": { + "operationId": "SquadController_create", + "summary": "Create Squad", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/CreateSquadDTO" } + } + } + }, + "responses": { + "201": { + "description": "", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/Squad" } + } + } + } + }, + "tags": ["Squads"], + "security": [{ "bearer": [] }] + }, + "get": { + "operationId": "SquadController_findAll", + "summary": "List Squads", + "parameters": [ + { + "name": "limit", + "required": false, + "in": "query", + "description": "This is the maximum number of items to return. Defaults to 100.", + "schema": { "minimum": 0, "maximum": 1000, "type": "number" } + }, + { + "name": "createdAtGt", + "required": false, + "in": "query", + "description": "This will return items where the createdAt is greater than the specified value.", + "schema": { "format": "date-time", "type": "string" } + }, + { + "name": "createdAtLt", + "required": false, + "in": "query", + "description": "This will return items where the createdAt is less than the specified value.", + "schema": { "format": "date-time", "type": "string" } + }, + { + "name": "createdAtGe", + "required": false, + "in": "query", + "description": "This will return items where the createdAt is greater than or equal to the specified value.", + "schema": { "format": "date-time", "type": "string" } + }, + { + "name": "createdAtLe", + "required": false, + "in": "query", + "description": "This will return items where the createdAt is less than or equal to the specified value.", + "schema": { "format": "date-time", "type": "string" } + }, + { + "name": "updatedAtGt", + "required": false, + "in": "query", + "description": "This will return items where the updatedAt is greater than the specified value.", + "schema": { "format": "date-time", "type": "string" } + }, + { + "name": "updatedAtLt", + "required": false, + "in": "query", + "description": "This will return items where the updatedAt is less than the specified value.", + "schema": { "format": "date-time", "type": "string" } + }, + { + "name": "updatedAtGe", + "required": false, + "in": "query", + "description": "This will return items where the updatedAt is greater than or equal to the specified value.", + "schema": { "format": "date-time", "type": "string" } + }, { - "bearer": [] + "name": "updatedAtLe", + "required": false, + "in": "query", + "description": "This will return items where the updatedAt is less than or equal to the specified value.", + "schema": { "format": "date-time", "type": "string" } } - ] + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { "$ref": "#/components/schemas/Squad" } + } + } + } + } + }, + "tags": ["Squads"], + "security": [{ "bearer": [] }] + } + }, + "/squad/{id}": { + "get": { + "operationId": "SquadController_findOne", + "summary": "Get Squad", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { "type": "string" } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/Squad" } + } + } + } + }, + "tags": ["Squads"], + "security": [{ "bearer": [] }] + }, + "patch": { + "operationId": "SquadController_update", + "summary": "Update Squad", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { "type": "string" } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/UpdateSquadDTO" } + } + } + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/Squad" } + } + } + } + }, + "tags": ["Squads"], + "security": [{ "bearer": [] }] + }, + "delete": { + "operationId": "SquadController_remove", + "summary": "Delete Squad", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { "type": "string" } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/Squad" } + } + } + } + }, + "tags": ["Squads"], + "security": [{ "bearer": [] }] } }, "/credential": { @@ -847,14 +1037,8 @@ } } }, - "tags": [ - "Credentials" - ], - "security": [ - { - "bearer": [] - } - ] + "tags": ["Credentials"], + "security": [{ "bearer": [] }] }, "get": { "operationId": "CredentialController_findAll", @@ -865,91 +1049,63 @@ "required": false, "in": "query", "description": "This is the maximum number of items to return. Defaults to 100.", - "schema": { - "minimum": 0, - "maximum": 1000, - "type": "number" - } + "schema": { "minimum": 0, "maximum": 1000, "type": "number" } }, { "name": "createdAtGt", "required": false, "in": "query", "description": "This will return items where the createdAt is greater than the specified value.", - "schema": { - "format": "date-time", - "type": "string" - } + "schema": { "format": "date-time", "type": "string" } }, { "name": "createdAtLt", "required": false, "in": "query", "description": "This will return items where the createdAt is less than the specified value.", - "schema": { - "format": "date-time", - "type": "string" - } + "schema": { "format": "date-time", "type": "string" } }, { "name": "createdAtGe", "required": false, "in": "query", "description": "This will return items where the createdAt is greater than or equal to the specified value.", - "schema": { - "format": "date-time", - "type": "string" - } + "schema": { "format": "date-time", "type": "string" } }, { "name": "createdAtLe", "required": false, "in": "query", "description": "This will return items where the createdAt is less than or equal to the specified value.", - "schema": { - "format": "date-time", - "type": "string" - } + "schema": { "format": "date-time", "type": "string" } }, { "name": "updatedAtGt", "required": false, "in": "query", "description": "This will return items where the updatedAt is greater than the specified value.", - "schema": { - "format": "date-time", - "type": "string" - } + "schema": { "format": "date-time", "type": "string" } }, { "name": "updatedAtLt", "required": false, "in": "query", "description": "This will return items where the updatedAt is less than the specified value.", - "schema": { - "format": "date-time", - "type": "string" - } + "schema": { "format": "date-time", "type": "string" } }, { "name": "updatedAtGe", "required": false, "in": "query", "description": "This will return items where the updatedAt is greater than or equal to the specified value.", - "schema": { - "format": "date-time", - "type": "string" - } + "schema": { "format": "date-time", "type": "string" } }, { "name": "updatedAtLe", "required": false, "in": "query", "description": "This will return items where the updatedAt is less than or equal to the specified value.", - "schema": { - "format": "date-time", - "type": "string" - } + "schema": { "format": "date-time", "type": "string" } } ], "responses": { @@ -1078,14 +1234,8 @@ } } }, - "tags": [ - "Credentials" - ], - "security": [ - { - "bearer": [] - } - ] + "tags": ["Credentials"], + "security": [{ "bearer": [] }] } }, "/credential/{id}": { @@ -1097,9 +1247,7 @@ "name": "id", "required": true, "in": "path", - "schema": { - "type": "string" - } + "schema": { "type": "string" } } ], "responses": { @@ -1225,14 +1373,8 @@ } } }, - "tags": [ - "Credentials" - ], - "security": [ - { - "bearer": [] - } - ] + "tags": ["Credentials"], + "security": [{ "bearer": [] }] }, "put": { "operationId": "CredentialController_update", @@ -1242,9 +1384,7 @@ "name": "id", "required": true, "in": "path", - "schema": { - "type": "string" - } + "schema": { "type": "string" } } ], "requestBody": { @@ -1491,14 +1631,8 @@ } } }, - "tags": [ - "Credentials" - ], - "security": [ - { - "bearer": [] - } - ] + "tags": ["Credentials"], + "security": [{ "bearer": [] }] }, "delete": { "operationId": "CredentialController_remove", @@ -1508,9 +1642,7 @@ "name": "id", "required": true, "in": "path", - "schema": { - "type": "string" - } + "schema": { "type": "string" } } ], "responses": { @@ -1636,54 +1768,230 @@ } } }, - "tags": [ - "Credentials" - ], - "security": [ - { - "bearer": [] - } - ] + "tags": ["Credentials"], + "security": [{ "bearer": [] }] } }, - "/phone-number/buy": { + "/org": { "post": { - "operationId": "PhoneNumberController_buy", - "summary": "Buy Phone Number", + "operationId": "OrgController_create", + "summary": "Create Org", "parameters": [], "requestBody": { "required": true, "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/BuyPhoneNumberDTO" - } + "schema": { "$ref": "#/components/schemas/CreateOrgDTO" } } } }, "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/Org" } + } + } + }, "201": { + "description": "", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/Org" } + } + } + } + }, + "tags": ["Orgs", "extended"], + "security": [{ "bearer": [] }] + }, + "get": { + "operationId": "OrgController_findAll", + "summary": "List Orgs", + "parameters": [], + "responses": { + "200": { "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PhoneNumber" + "type": "array", + "items": { "$ref": "#/components/schemas/Org" } } } } } }, - "tags": [ - "Phone Numbers" - ], - "security": [ - { - "bearer": [] - } - ] + "tags": ["Orgs", "extended"], + "security": [{ "bearer": [] }] } }, - "/phone-number/import/twilio": { + "/org/{id}": { + "get": { + "operationId": "OrgController_findOne", + "summary": "Get Org", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { "type": "string" } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/Org" } + } + } + } + }, + "tags": ["Orgs", "extended"], + "security": [{ "bearer": [] }] + }, + "patch": { + "operationId": "OrgController_update", + "summary": "Update Org", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { "type": "string" } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/UpdateOrgDTO" } + } + } + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/Org" } + } + } + } + }, + "tags": ["Orgs", "extended"], + "security": [{ "bearer": [] }] + } + }, + "/org/{id}/user": { + "get": { + "operationId": "OrgController_findAllUsers", + "summary": "List Users", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { "type": "string" } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { "$ref": "#/components/schemas/User" } + } + } + } + } + }, + "tags": ["Orgs", "extended"], + "security": [{ "bearer": [] }] + } + }, + "/org/{id}/leave": { + "delete": { + "operationId": "OrgController_orgLeave", + "summary": "Leave Org", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { "type": "string" } + } + ], + "responses": { "200": { "description": "" } }, + "tags": ["Orgs", "extended"], + "security": [{ "bearer": [] }] + } + }, + "/org/{id}/invite": { + "post": { + "operationId": "OrgController_userInvite", + "summary": "Invite User", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { "type": "string" } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/InviteUserDTO" } + } + } + }, + "responses": { + "200": { "description": "" }, + "201": { + "description": "", + "content": { + "application/json": { "schema": { "type": "object" } } + } + } + }, + "tags": ["Orgs", "extended"], + "security": [{ "bearer": [] }] + } + }, + "/phone-number/buy": { + "post": { + "operationId": "PhoneNumberController_buy", + "summary": "Buy Phone Number", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/BuyPhoneNumberDTO" } + } + } + }, + "responses": { + "201": { + "description": "", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/PhoneNumber" } + } + } + } + }, + "tags": ["Phone Numbers"], + "security": [{ "bearer": [] }] + } + }, + "/phone-number/import/twilio": { "post": { "operationId": "PhoneNumberController_importTwilio", "summary": "Import Twilio Number", @@ -1703,21 +2011,13 @@ "description": "", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/PhoneNumber" - } + "schema": { "$ref": "#/components/schemas/PhoneNumber" } } } } }, - "tags": [ - "Phone Numbers" - ], - "security": [ - { - "bearer": [] - } - ] + "tags": ["Phone Numbers"], + "security": [{ "bearer": [] }] } }, "/phone-number/import/vonage": { @@ -1740,21 +2040,13 @@ "description": "", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/PhoneNumber" - } + "schema": { "$ref": "#/components/schemas/PhoneNumber" } } } } }, - "tags": [ - "Phone Numbers" - ], - "security": [ - { - "bearer": [] - } - ] + "tags": ["Phone Numbers"], + "security": [{ "bearer": [] }] } }, "/phone-number": { @@ -1767,91 +2059,63 @@ "required": false, "in": "query", "description": "This is the maximum number of items to return. Defaults to 100.", - "schema": { - "minimum": 0, - "maximum": 1000, - "type": "number" - } + "schema": { "minimum": 0, "maximum": 1000, "type": "number" } }, { "name": "createdAtGt", "required": false, "in": "query", "description": "This will return items where the createdAt is greater than the specified value.", - "schema": { - "format": "date-time", - "type": "string" - } + "schema": { "format": "date-time", "type": "string" } }, { "name": "createdAtLt", "required": false, "in": "query", "description": "This will return items where the createdAt is less than the specified value.", - "schema": { - "format": "date-time", - "type": "string" - } + "schema": { "format": "date-time", "type": "string" } }, { "name": "createdAtGe", "required": false, "in": "query", "description": "This will return items where the createdAt is greater than or equal to the specified value.", - "schema": { - "format": "date-time", - "type": "string" - } + "schema": { "format": "date-time", "type": "string" } }, { "name": "createdAtLe", "required": false, "in": "query", "description": "This will return items where the createdAt is less than or equal to the specified value.", - "schema": { - "format": "date-time", - "type": "string" - } + "schema": { "format": "date-time", "type": "string" } }, { "name": "updatedAtGt", "required": false, "in": "query", "description": "This will return items where the updatedAt is greater than the specified value.", - "schema": { - "format": "date-time", - "type": "string" - } + "schema": { "format": "date-time", "type": "string" } }, { "name": "updatedAtLt", "required": false, "in": "query", "description": "This will return items where the updatedAt is less than the specified value.", - "schema": { - "format": "date-time", - "type": "string" - } + "schema": { "format": "date-time", "type": "string" } }, { "name": "updatedAtGe", "required": false, "in": "query", "description": "This will return items where the updatedAt is greater than or equal to the specified value.", - "schema": { - "format": "date-time", - "type": "string" - } + "schema": { "format": "date-time", "type": "string" } }, { "name": "updatedAtLe", "required": false, "in": "query", "description": "This will return items where the updatedAt is less than or equal to the specified value.", - "schema": { - "format": "date-time", - "type": "string" - } + "schema": { "format": "date-time", "type": "string" } } ], "responses": { @@ -1861,22 +2125,14 @@ "application/json": { "schema": { "type": "array", - "items": { - "$ref": "#/components/schemas/PhoneNumber" - } + "items": { "$ref": "#/components/schemas/PhoneNumber" } } } } } }, - "tags": [ - "Phone Numbers" - ], - "security": [ - { - "bearer": [] - } - ] + "tags": ["Phone Numbers"], + "security": [{ "bearer": [] }] } }, "/phone-number/{id}": { @@ -1888,9 +2144,7 @@ "name": "id", "required": true, "in": "path", - "schema": { - "type": "string" - } + "schema": { "type": "string" } } ], "responses": { @@ -1898,21 +2152,13 @@ "description": "", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/PhoneNumber" - } + "schema": { "$ref": "#/components/schemas/PhoneNumber" } } } } }, - "tags": [ - "Phone Numbers" - ], - "security": [ - { - "bearer": [] - } - ] + "tags": ["Phone Numbers"], + "security": [{ "bearer": [] }] }, "patch": { "operationId": "PhoneNumberController_update", @@ -1922,18 +2168,14 @@ "name": "id", "required": true, "in": "path", - "schema": { - "type": "string" - } + "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdatePhoneNumberDTO" - } + "schema": { "$ref": "#/components/schemas/UpdatePhoneNumberDTO" } } } }, @@ -1942,21 +2184,13 @@ "description": "", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/PhoneNumber" - } + "schema": { "$ref": "#/components/schemas/PhoneNumber" } } } } }, - "tags": [ - "Phone Numbers" - ], - "security": [ - { - "bearer": [] - } - ] + "tags": ["Phone Numbers"], + "security": [{ "bearer": [] }] }, "delete": { "operationId": "PhoneNumberController_remove", @@ -1966,9 +2200,7 @@ "name": "id", "required": true, "in": "path", - "schema": { - "type": "string" - } + "schema": { "type": "string" } } ], "responses": { @@ -1976,21 +2208,13 @@ "description": "", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/PhoneNumber" - } + "schema": { "$ref": "#/components/schemas/PhoneNumber" } } } } }, - "tags": [ - "Phone Numbers" - ], - "security": [ - { - "bearer": [] - } - ] + "tags": ["Phone Numbers"], + "security": [{ "bearer": [] }] } }, "/metrics": { @@ -2004,29 +2228,21 @@ "in": "query", "example": "PST", "description": "Convert date & and time to provided timezone. https://popsql.com/learn-sql/postgresql/how-to-convert-utc-to-local-time-zone-in-postgresql", - "schema": { - "type": "string" - } + "schema": { "type": "string" } }, { "name": "rangeStart", "required": false, "in": "query", "description": "This will include calls with a createdAt timestamp greater than or equal to the specified value.\n\nIf not provided, defaults to the org's current period start.", - "schema": { - "format": "date-time", - "type": "string" - } + "schema": { "format": "date-time", "type": "string" } }, { "name": "rangeEnd", "required": false, "in": "query", "description": "This will include calls with a createdAt timestamp less than the specified value.\n\nIf not provided, the default value will be the current timestamp.", - "schema": { - "format": "date-time", - "type": "string" - } + "schema": { "format": "date-time", "type": "string" } } ], "responses": { @@ -2036,150 +2252,234 @@ "application/json": { "schema": { "type": "array", - "items": { - "$ref": "#/components/schemas/Metrics" - } + "items": { "$ref": "#/components/schemas/Metrics" } } } } } }, - "tags": [ - "Metrics" - ], - "security": [ - { - "bearer": [] - } - ] + "tags": ["Metrics"], + "security": [{ "bearer": [] }] } }, - "/log": { + "/voice-library/{provider}": { "get": { - "operationId": "LoggingController_getLogs", - "summary": "Get Call Logs", + "operationId": "VoiceLibraryController_voiceGetByProvider", + "summary": "Get voices in Voice Library by Providers", "parameters": [ { - "name": "callId", + "name": "provider", "required": true, - "in": "query", + "in": "path", "schema": { + "enum": [ + "11labs", + "azure", + "cartesia", + "deepgram", + "lmnt", + "neets", + "openai", + "playht", + "rime-ai" + ], "type": "string" } - }, - { - "name": "page", - "required": false, - "in": "query", - "description": "This is the page number to return. Defaults to 1.", - "schema": { - "minimum": 1, - "type": "number" + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { "$ref": "#/components/schemas/VoiceLibrary" } + } + } } - }, + } + }, + "tags": ["Voice Library", "extended"], + "security": [{ "bearer": [] }] + } + }, + "/voice-library/sync/{provider}": { + "post": { + "operationId": "VoiceLibraryController_voiceLibrarySyncByProvider", + "summary": "Sync voices in Voice Library by Providers", + "parameters": [ { - "name": "sortOrder", - "required": false, - "in": "query", - "description": "This is the sort order for pagination. Defaults to 'ASC'.", + "name": "provider", + "required": true, + "in": "path", "schema": { "enum": [ - "ASC", - "DESC" + "11labs", + "azure", + "cartesia", + "deepgram", + "lmnt", + "neets", + "openai", + "playht", + "rime-ai" ], "type": "string" } - }, - { - "name": "limit", - "required": false, - "in": "query", - "description": "This is the maximum number of items to return. Defaults to 100.", - "schema": { - "minimum": 0, - "maximum": 1000, - "type": "number" + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { "$ref": "#/components/schemas/VoiceLibrary" } + } + } + } + }, + "201": { + "description": "", + "content": { + "application/json": { "schema": { "type": "object" } } + } + } + }, + "tags": ["Voice Library", "extended"], + "security": [{ "bearer": [] }] + } + }, + "/voice-library/sync": { + "post": { + "operationId": "VoiceLibraryController_voiceLibraryGlobalSync", + "summary": "Sync Global voices in Voice Library by Providers", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/SyncVoiceLibraryDTO" } + } + } + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { "$ref": "#/components/schemas/VoiceLibrary" } + } + } + } + }, + "201": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { "$ref": "#/components/schemas/VoiceLibrary" } + } + } } + } + }, + "tags": ["Voice Library", "extended", "extended"], + "security": [{ "bearer": [] }] + } + }, + "/log": { + "get": { + "operationId": "LoggingController_getLogs", + "summary": "Get Call Logs", + "parameters": [ + { + "name": "callId", + "required": true, + "in": "query", + "schema": { "type": "string" } + }, + { + "name": "page", + "required": false, + "in": "query", + "description": "This is the page number to return. Defaults to 1.", + "schema": { "minimum": 1, "type": "number" } + }, + { + "name": "sortOrder", + "required": false, + "in": "query", + "description": "This is the sort order for pagination. Defaults to 'ASC'.", + "schema": { "enum": ["ASC", "DESC"], "type": "string" } + }, + { + "name": "limit", + "required": false, + "in": "query", + "description": "This is the maximum number of items to return. Defaults to 100.", + "schema": { "minimum": 0, "maximum": 1000, "type": "number" } }, { "name": "createdAtGt", "required": false, "in": "query", "description": "This will return items where the createdAt is greater than the specified value.", - "schema": { - "format": "date-time", - "type": "string" - } + "schema": { "format": "date-time", "type": "string" } }, { "name": "createdAtLt", "required": false, "in": "query", "description": "This will return items where the createdAt is less than the specified value.", - "schema": { - "format": "date-time", - "type": "string" - } + "schema": { "format": "date-time", "type": "string" } }, { "name": "createdAtGe", "required": false, "in": "query", "description": "This will return items where the createdAt is greater than or equal to the specified value.", - "schema": { - "format": "date-time", - "type": "string" - } + "schema": { "format": "date-time", "type": "string" } }, { "name": "createdAtLe", "required": false, "in": "query", "description": "This will return items where the createdAt is less than or equal to the specified value.", - "schema": { - "format": "date-time", - "type": "string" - } + "schema": { "format": "date-time", "type": "string" } }, { "name": "updatedAtGt", "required": false, "in": "query", "description": "This will return items where the updatedAt is greater than the specified value.", - "schema": { - "format": "date-time", - "type": "string" - } + "schema": { "format": "date-time", "type": "string" } }, { "name": "updatedAtLt", "required": false, "in": "query", "description": "This will return items where the updatedAt is less than the specified value.", - "schema": { - "format": "date-time", - "type": "string" - } + "schema": { "format": "date-time", "type": "string" } }, { "name": "updatedAtGe", "required": false, "in": "query", "description": "This will return items where the updatedAt is greater than or equal to the specified value.", - "schema": { - "format": "date-time", - "type": "string" - } + "schema": { "format": "date-time", "type": "string" } }, { "name": "updatedAtLe", "required": false, "in": "query", "description": "This will return items where the updatedAt is less than or equal to the specified value.", - "schema": { - "format": "date-time", - "type": "string" - } + "schema": { "format": "date-time", "type": "string" } } ], "responses": { @@ -2194,14 +2494,8 @@ } } }, - "tags": [ - "Logs" - ], - "security": [ - { - "bearer": [] - } - ] + "tags": ["Logs"], + "security": [{ "bearer": [] }] } }, "/tool": { @@ -2273,14 +2567,8 @@ } } }, - "tags": [ - "Tools" - ], - "security": [ - { - "bearer": [] - } - ] + "tags": ["Tools"], + "security": [{ "bearer": [] }] }, "get": { "operationId": "ToolController_findAll", @@ -2291,91 +2579,63 @@ "required": false, "in": "query", "description": "This is the maximum number of items to return. Defaults to 100.", - "schema": { - "minimum": 0, - "maximum": 1000, - "type": "number" - } + "schema": { "minimum": 0, "maximum": 1000, "type": "number" } }, { "name": "createdAtGt", "required": false, "in": "query", "description": "This will return items where the createdAt is greater than the specified value.", - "schema": { - "format": "date-time", - "type": "string" - } + "schema": { "format": "date-time", "type": "string" } }, { "name": "createdAtLt", "required": false, "in": "query", "description": "This will return items where the createdAt is less than the specified value.", - "schema": { - "format": "date-time", - "type": "string" - } + "schema": { "format": "date-time", "type": "string" } }, { "name": "createdAtGe", "required": false, "in": "query", "description": "This will return items where the createdAt is greater than or equal to the specified value.", - "schema": { - "format": "date-time", - "type": "string" - } + "schema": { "format": "date-time", "type": "string" } }, { "name": "createdAtLe", "required": false, "in": "query", "description": "This will return items where the createdAt is less than or equal to the specified value.", - "schema": { - "format": "date-time", - "type": "string" - } + "schema": { "format": "date-time", "type": "string" } }, { "name": "updatedAtGt", "required": false, "in": "query", "description": "This will return items where the updatedAt is greater than the specified value.", - "schema": { - "format": "date-time", - "type": "string" - } + "schema": { "format": "date-time", "type": "string" } }, { "name": "updatedAtLt", "required": false, "in": "query", "description": "This will return items where the updatedAt is less than the specified value.", - "schema": { - "format": "date-time", - "type": "string" - } + "schema": { "format": "date-time", "type": "string" } }, { "name": "updatedAtGe", "required": false, "in": "query", "description": "This will return items where the updatedAt is greater than or equal to the specified value.", - "schema": { - "format": "date-time", - "type": "string" - } + "schema": { "format": "date-time", "type": "string" } }, { "name": "updatedAtLe", "required": false, "in": "query", "description": "This will return items where the updatedAt is less than or equal to the specified value.", - "schema": { - "format": "date-time", - "type": "string" - } + "schema": { "format": "date-time", "type": "string" } } ], "responses": { @@ -2414,14 +2674,8 @@ } } }, - "tags": [ - "Tools" - ], - "security": [ - { - "bearer": [] - } - ] + "tags": ["Tools"], + "security": [{ "bearer": [] }] } }, "/tool/{id}": { @@ -2433,9 +2687,7 @@ "name": "id", "required": true, "in": "path", - "schema": { - "type": "string" - } + "schema": { "type": "string" } } ], "responses": { @@ -2471,14 +2723,8 @@ } } }, - "tags": [ - "Tools" - ], - "security": [ - { - "bearer": [] - } - ] + "tags": ["Tools"], + "security": [{ "bearer": [] }] }, "patch": { "operationId": "ToolController_update", @@ -2488,9 +2734,7 @@ "name": "id", "required": true, "in": "path", - "schema": { - "type": "string" - } + "schema": { "type": "string" } } ], "requestBody": { @@ -2557,14 +2801,8 @@ } } }, - "tags": [ - "Tools" - ], - "security": [ - { - "bearer": [] - } - ] + "tags": ["Tools"], + "security": [{ "bearer": [] }] }, "delete": { "operationId": "ToolController_remove", @@ -2574,9 +2812,7 @@ "name": "id", "required": true, "in": "path", - "schema": { - "type": "string" - } + "schema": { "type": "string" } } ], "responses": { @@ -2612,132 +2848,101 @@ } } }, - "tags": [ - "Tools" - ], - "security": [ - { - "bearer": [] - } - ] + "tags": ["Tools"], + "security": [{ "bearer": [] }] } }, - "/file/upload": { - "post": { - "operationId": "FileController_create", - "summary": "Upload File", - "parameters": [], - "requestBody": { - "required": true, - "content": { - "multipart/form-data": { - "schema": { - "$ref": "#/components/schemas/CreateFileDTO" - } - } + "/{provider}/workflows": { + "get": { + "operationId": "ProviderController_getWorkflows", + "parameters": [ + { + "name": "provider", + "required": true, + "in": "path", + "schema": { "enum": ["make", "ghl"], "type": "string" } + }, + { + "name": "locationId", + "required": false, + "in": "query", + "schema": { "type": "string" } } - }, + ], "responses": { - "201": { - "description": "File uploaded successfully", + "200": { + "description": "", "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/File" - } - } + "application/json": { "schema": { "type": "object" } } } - }, - "400": { - "description": "Invalid file" } }, - "tags": [ - "Files" - ], - "security": [ - { - "bearer": [] - } - ] + "tags": ["Providers", "extended"], + "security": [{ "bearer": [] }] } }, - "/file": { + "/{provider}/workflows/{workflowId}/hooks": { "get": { - "operationId": "FileController_findAll", - "summary": "List Files", - "parameters": [], + "operationId": "ProviderController_getWorkflowTriggerHook", + "parameters": [ + { + "name": "provider", + "required": true, + "in": "path", + "schema": { "enum": ["make", "ghl"], "type": "string" } + }, + { + "name": "workflowId", + "required": true, + "in": "path", + "schema": { "type": "string" } + } + ], "responses": { "200": { "description": "", "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/File" - } - } - } + "application/json": { "schema": { "type": "object" } } } } }, - "tags": [ - "Files" - ], - "security": [ - { - "bearer": [] - } - ] + "tags": ["Providers", "extended"], + "security": [{ "bearer": [] }] } }, - "/file/{id}": { + "/{provider}/locations": { "get": { - "operationId": "FileController_findOne", - "summary": "Get File", + "operationId": "ProviderController_getLocations", "parameters": [ { - "name": "id", + "name": "provider", "required": true, "in": "path", - "schema": { - "type": "string" - } + "schema": { "enum": ["make", "ghl"], "type": "string" } } ], "responses": { "200": { "description": "", "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/File" - } - } + "application/json": { "schema": { "type": "object" } } } } }, - "tags": [ - "Files" - ], - "security": [ - { - "bearer": [] - } - ] - }, - "delete": { - "operationId": "FileController_remove", - "summary": "Delete File", + "tags": ["Providers", "extended"], + "security": [{ "bearer": [] }] + } + }, + "/{provider}/voices/search": { + "get": { + "operationId": "VoiceProviderController_searchVoices", "parameters": [ { - "name": "id", + "name": "name", "required": true, - "in": "path", - "schema": { - "type": "string" - } + "in": "query", + "description": "The name of the voice from the provider you want to search.", + "schema": { "type": "string" } } ], "responses": { @@ -2746,20 +2951,144 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/File" - } - } + "type": "array", + "items": { + "$ref": "#/components/schemas/VoiceLibraryVoiceResponse" + } + } + } + } + } + }, + "tags": ["Providers", "extended", "extended"], + "security": [{ "bearer": [] }] + } + }, + "/{provider}/voices/add": { + "post": { + "operationId": "VoiceProviderController_addVoices", + "summary": "Add Shared Voice to your Provider Account.", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/AddVoiceToProviderDTO" } + } + } + }, + "responses": { + "201": { + "description": "", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/VoiceLibrary" } + } + } + } + }, + "tags": ["Providers", "extended", "extended"], + "security": [{ "bearer": [] }] + } + }, + "/file/upload": { + "post": { + "operationId": "FileController_create", + "summary": "Upload File", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "multipart/form-data": { + "schema": { "$ref": "#/components/schemas/CreateFileDTO" } + } + } + }, + "responses": { + "201": { + "description": "File uploaded successfully", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/File" } + } + } + }, + "400": { "description": "Invalid file" } + }, + "tags": ["Files"], + "security": [{ "bearer": [] }] + } + }, + "/file": { + "get": { + "operationId": "FileController_findAll", + "summary": "List Files", + "parameters": [], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { "$ref": "#/components/schemas/File" } + } + } } } }, - "tags": [ - "Files" + "tags": ["Files"], + "security": [{ "bearer": [] }] + } + }, + "/file/{id}": { + "get": { + "operationId": "FileController_findOne", + "summary": "Get File", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { "type": "string" } + } ], - "security": [ + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/File" } + } + } + } + }, + "tags": ["Files"], + "security": [{ "bearer": [] }] + }, + "delete": { + "operationId": "FileController_remove", + "summary": "Delete File", + "parameters": [ { - "bearer": [] + "name": "id", + "required": true, + "in": "path", + "schema": { "type": "string" } } - ] + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/File" } + } + } + } + }, + "tags": ["Files"], + "security": [{ "bearer": [] }] } } }, @@ -2767,277 +3096,368 @@ "title": "Vapi API", "description": "API for building voice assistants", "version": "1.0", - "contact": { - - } + "contact": {} }, "tags": [], - "servers": [ - { - "url": "https://api.vapi.ai" - } - ], + "servers": [{ "url": "https://api.vapi.ai" }], "components": { "securitySchemes": { "bearer": { "scheme": "bearer", "bearerFormat": "Bearer", "type": "http", - "description": "Retrieve your key from [Dashboard](dashboard.vapi.ai)." + "description": "Retrieve your API Key from [Dashboard](dashboard.vapi.ai)." } }, "schemas": { - "DeepgramVoice": { + "DeepgramTranscriber": { "type": "object", "properties": { - "inputPreprocessingEnabled": { - "type": "boolean", - "description": "This determines whether the model output is preprocessed before being sent to the voice provider. This includes things like giving better hints to the voice provider on how to pronounce complex structured text like phone numbers, emails and addresses. This might add latency as it waits for the model to output a full chunk before sending it to the voice provider. Defaults to true.", - "example": true - }, - "inputMinCharacters": { - "type": "number", - "description": "This is the minimum number of characters that will be passed to the voice provider. This helps decides the minimum chunk size that is sent to the voice provider for the voice generation as the model tokens are streaming in. Defaults to 30.", - "minimum": 1, - "maximum": 80, - "example": 10 - }, - "inputPunctuationBoundaries": { - "type": "array", - "description": "These are the punctuations that are considered valid boundaries and \"delimiters\". This helps decides the chunks that are sent to the voice provider for the voice generation as the model tokens are streaming in. Defaults to ['。', ',', '.', '!', '?', ';', ')', '،', '۔', '।', '॥', '|', '||', ',', ':'].", - "enum": [ - "。", - ",", - ".", - "!", - "?", - ";", - ")", - "،", - "۔", - "।", - "॥", - "|", - "||", - ",", - ":" - ], - "example": [ - "。", - ",", - ".", - "!", - "?", - ";", - ")", - "،", - "۔", - "।", - "॥", - "|", - "||", - ",", - ":" - ], - "items": { - "type": "string", - "enum": [ - "。", - ",", - ".", - "!", - "?", - ";", - ")", - "،", - "۔", - "।", - "॥", - "|", - "||", - ",", - ":" - ] - } - }, - "fillerInjectionEnabled": { - "type": "boolean", - "description": "This determines whether fillers are injected into the model output before inputting it into the voice provider.\n\nDefault `false` because you can achieve better results with prompting the model.", - "example": false - }, "provider": { "type": "string", - "description": "This is the voice provider that will be used.", - "enum": [ - "deepgram" - ] + "description": "This is the transcription provider that will be used.", + "enum": ["deepgram"] }, - "voiceId": { - "description": "This is the provider-specific ID that will be used.", + "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": [ - "asteria", - "luna", - "stella", - "athena", - "hera", - "orion", - "arcas", - "perseus", - "angus", - "orpheus", - "helios", - "zeus" - ], - "title": "Preset Voice Options" + "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" + ] }, - { - "type": "string", - "title": "Deepgram Voice ID" - } + { "type": "string" } ] - } - }, - "required": [ - "provider", - "voiceId" - ] - }, - "Condition": { - "type": "object", - "properties": { - "param": { - "type": "string" - }, - "value": { - "type": "object" }, - "operator": { + "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": [ - "eq", - "neq", - "gt", - "gte", - "lt", - "lte" + "bg", + "ro", + "cs", + "da", + "da-DK", + "de-CH", + "nl", + "en", + "en-US", + "en-AU", + "en-GB", + "en-NZ", + "en-IN", + "nl-BE", + "fr", + "fr-CA", + "de", + "el", + "hi", + "hi-Latn", + "id", + "it", + "ja", + "ko", + "ko-KR", + "no", + "pl", + "pt", + "pt-BR", + "ru", + "es", + "es-419", + "sv", + "sv-SE", + "tr", + "uk", + "ja", + "zh", + "zh-CN", + "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 sometimes but it's getting better.", + "example": false + }, + "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" + } } }, - "required": [ - "param", - "value", - "operator" - ] + "required": ["provider"] }, - "ToolMessageStart": { + "TalkscriberTranscriber": { "type": "object", "properties": { - "type": { + "provider": { + "type": "string", + "description": "This is the transcription provider that will be used.", + "enum": ["talkscriber"] + }, + "model": { + "type": "string", + "description": "This is the model that will be used for the transcription.", + "enum": ["whisper"] + }, + "language": { "type": "string", + "description": "This is the language that will be set for the transcription. The list of languages Whisper supports can be found here: https://github.com/openai/whisper/blob/main/whisper/tokenizer.py", "enum": [ - "request-start" + "en", + "zh", + "de", + "es", + "ru", + "ko", + "fr", + "ja", + "pt", + "tr", + "pl", + "ca", + "nl", + "ar", + "sv", + "it", + "id", + "hi", + "fi", + "vi", + "he", + "uk", + "el", + "ms", + "cs", + "ro", + "da", + "hu", + "ta", + "no", + "th", + "ur", + "hr", + "bg", + "lt", + "la", + "mi", + "ml", + "cy", + "sk", + "te", + "fa", + "lv", + "bn", + "sr", + "az", + "sl", + "kn", + "et", + "mk", + "br", + "eu", + "is", + "hy", + "ne", + "mn", + "bs", + "kk", + "sq", + "sw", + "gl", + "mr", + "pa", + "si", + "km", + "sn", + "yo", + "so", + "af", + "oc", + "ka", + "be", + "tg", + "sd", + "gu", + "am", + "yi", + "lo", + "uz", + "fo", + "ht", + "ps", + "tk", + "nn", + "mt", + "sa", + "lb", + "my", + "bo", + "tl", + "mg", + "as", + "tt", + "haw", + "ln", + "ha", + "ba", + "jw", + "su", + "yue" ] + } + }, + "required": ["provider"] + }, + "Condition": { + "type": "object", + "properties": { + "param": { + "type": "string", + "description": "This is the name of the parameter that you want to check." + }, + "value": { + "type": "string", + "description": "This is the value you want to compare against the parameter." + }, + "operator": { + "type": "string", + "description": "This is the operator you want to use to compare the parameter and value.", + "enum": ["eq", "neq", "gt", "gte", "lt", "lte"] + } + }, + "required": ["param", "value", "operator"] + }, + "ToolMessageStart": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": ["request-start"], + "description": "This message is triggered when the tool call starts.\n\nThis message is never triggered for async tools.\n\nIf this message is not provided, one of the default filler messages \"Hold on a sec\", \"One moment\", \"Just a sec\", \"Give me a moment\" or \"This'll just take a sec\" will be used." }, "content": { - "type": "string" + "type": "string", + "description": "This is the content that the assistant says when this message is triggered." }, "conditions": { + "description": "This is an optional array of conditions that the tool call arguments must meet in order for this message to be triggered.", "type": "array", - "items": { - "$ref": "#/components/schemas/Condition" - } + "items": { "$ref": "#/components/schemas/Condition" } } }, - "required": [ - "type", - "content" - ] + "required": ["type", "content"] }, "ToolMessageComplete": { "type": "object", "properties": { "type": { "type": "string", - "enum": [ - "request-complete" - ] + "description": "This message is triggered when the tool call is complete.\n\nThis message is triggered immediately without waiting for your server to respond for async tool calls.\n\nIf this message is not provided, the model will be requested to respond.", + "enum": ["request-complete"] + }, + "role": { + "type": "string", + "description": "This is optional and defaults to \"assistant\".\n\nWhen role=assistant, `content` is said out loud.\n\nWhen role=system, `content` is passed to the model in a system message. Example:\n system: default one\n assistant:\n user:\n assistant:\n user:\n assistant:\n user:\n assistant: tool called\n tool: your server response\n <--- system prompt as hint\n ---> model generates response which is spoken\nThis is useful when you want to provide a hint to the model about what to say next.", + "enum": ["assistant", "system"] }, "content": { - "type": "string" + "type": "string", + "description": "This is the content that the assistant says when this message is triggered." }, "conditions": { + "description": "This is an optional array of conditions that the tool call arguments must meet in order for this message to be triggered.", "type": "array", - "items": { - "$ref": "#/components/schemas/Condition" - } + "items": { "$ref": "#/components/schemas/Condition" } } }, - "required": [ - "type", - "content" - ] + "required": ["type", "content"] }, "ToolMessageFailed": { "type": "object", "properties": { "type": { "type": "string", - "enum": [ - "request-failed" - ] + "description": "This message is triggered when the tool call fails.\n\nThis message is never triggered for async tool calls.\n\nIf this message is not provided, the model will be requested to respond.", + "enum": ["request-failed"] }, "content": { - "type": "string" + "type": "string", + "description": "This is the content that the assistant says when this message is triggered." }, "conditions": { + "description": "This is an optional array of conditions that the tool call arguments must meet in order for this message to be triggered.", "type": "array", - "items": { - "$ref": "#/components/schemas/Condition" - } + "items": { "$ref": "#/components/schemas/Condition" } } }, - "required": [ - "type", - "content" - ] + "required": ["type", "content"] }, "ToolMessageDelayed": { "type": "object", "properties": { "type": { "type": "string", - "enum": [ - "request-response-delayed" - ] - }, - "content": { - "type": "string" + "description": "This message is triggered when the tool call is delayed.\n\nThere are the two things that can trigger this message:\n1. The user talks with the assistant while your server is processing the request. Default is \"Sorry, a few more seconds.\"\n2. The server doesn't respond within `timingMilliseconds`.\n\nThis message is never triggered for async tool calls.", + "enum": ["request-response-delayed"] }, "timingMilliseconds": { "type": "number", + "minimum": 100, + "maximum": 20000, "example": 1000, "description": "The number of milliseconds to wait for the server response before saying this message." }, + "content": { + "type": "string", + "description": "This is the content that the assistant says when this message is triggered." + }, "conditions": { + "description": "This is an optional array of conditions that the tool call arguments must meet in order for this message to be triggered.", "type": "array", - "items": { - "$ref": "#/components/schemas/Condition" - } + "items": { "$ref": "#/components/schemas/Condition" } } }, - "required": [ - "type", - "content" - ] + "required": ["type", "content"] }, "JsonSchema": { "type": "object", "properties": { "type": { "type": "string", + "description": "This is the type of output you'd like.\n\n`string`, `number`, `integer`, `boolean` are the primitive types and should be obvious.\n\n`array` and `object` are more interesting and quite powerful. They allow you to define nested structures.\n\nFor `array`, you can define the schema of the items in the array using the `items` property.\n\nFor `object`, you can define the properties of the object using the `properties` property.", "enum": [ "string", "number", @@ -3049,25 +3469,23 @@ }, "items": { "type": "object", - "description": "This is of type JsonSchema. However, Swagger doesn't support circular references." + "description": "This is required if the type is \"array\". This is the schema of the items in the array.\n\nThis is of type JsonSchema. However, Swagger doesn't support circular references." }, "properties": { "type": "object", - "description": "This is a map of string to JsonSchema. However, Swagger doesn't support circular references." + "description": "This is required if the type is \"object\". This specifies the properties of the object.\n\nThis is a map of string to JsonSchema. However, Swagger doesn't support circular references." }, "description": { - "type": "string" + "type": "string", + "description": "This is the description to help the model understand what it needs to output." }, "required": { + "description": "This is a list of properties that are required.\n\nThis only makes sense if the type is \"object\".", "type": "array", - "items": { - "type": "object" - } + "items": { "type": "string" } } }, - "required": [ - "type" - ] + "required": ["type"] }, "OpenAIFunctionParameters": { "type": "object", @@ -3075,9 +3493,7 @@ "type": { "type": "string", "description": "This must be set to 'object'. It instructs the model to return a JSON object containing the function call properties.", - "enum": [ - "object" - ] + "enum": ["object"] }, "properties": { "type": "object", @@ -3089,15 +3505,10 @@ "required": { "description": "This specifies the properties that are required by the function.", "type": "array", - "items": { - "type": "string" - } + "items": { "type": "string" } } }, - "required": [ - "type", - "properties" - ] + "required": ["type", "properties"] }, "OpenAIFunction": { "type": "object", @@ -3116,15 +3527,11 @@ "parameters": { "description": "These are the parameters the functions accepts, described as a JSON Schema object.\n\nSee the [OpenAI guide](https://platform.openai.com/docs/guides/function-calling) for examples, and the [JSON Schema reference](https://json-schema.org/understanding-json-schema) for documentation about the format.\n\nOmitting parameters defines a function with an empty parameter list.", "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunctionParameters" - } + { "$ref": "#/components/schemas/OpenAIFunctionParameters" } ] } }, - "required": [ - "name" - ] + "required": ["name"] }, "Server": { "type": "object", @@ -3138,9 +3545,7 @@ "description": "This is the secret you can set that Vapi will send with every request to your server. Will be sent as a header called x-vapi-secret.\n\nSame precedence logic as server." } }, - "required": [ - "url" - ] + "required": ["url"] }, "CreateDtmfToolDTO": { "type": "object", @@ -3176,31 +3581,19 @@ }, "type": { "type": "string", - "enum": [ - "dtmf" - ], + "enum": ["dtmf"], "description": "The type of tool. \"dtmf\" for DTMF tool." }, "function": { "description": "This is the function definition of the tool.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, this is a custom function definition.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] + "allOf": [{ "$ref": "#/components/schemas/OpenAIFunction" }] }, "server": { "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", - "allOf": [ - { - "$ref": "#/components/schemas/Server" - } - ] + "allOf": [{ "$ref": "#/components/schemas/Server" }] } }, - "required": [ - "type" - ] + "required": ["type"] }, "CreateEndCallToolDTO": { "type": "object", @@ -3236,31 +3629,19 @@ }, "type": { "type": "string", - "enum": [ - "endCall" - ], + "enum": ["endCall"], "description": "The type of tool. \"endCall\" for End Call tool." }, "function": { "description": "This is the function definition of the tool.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, this is a custom function definition.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] + "allOf": [{ "$ref": "#/components/schemas/OpenAIFunction" }] }, "server": { "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", - "allOf": [ - { - "$ref": "#/components/schemas/Server" - } - ] + "allOf": [{ "$ref": "#/components/schemas/Server" }] } }, - "required": [ - "type" - ] + "required": ["type"] }, "CreateFunctionToolDTO": { "type": "object", @@ -3296,41 +3677,25 @@ }, "type": { "type": "string", - "enum": [ - "function" - ], + "enum": ["function"], "description": "The type of tool. \"function\" for Function tool." }, "function": { "description": "This is the function definition of the tool.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, this is a custom function definition.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] + "allOf": [{ "$ref": "#/components/schemas/OpenAIFunction" }] }, "server": { "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", - "allOf": [ - { - "$ref": "#/components/schemas/Server" - } - ] + "allOf": [{ "$ref": "#/components/schemas/Server" }] } }, - "required": [ - "type" - ] + "required": ["type"] }, "GhlToolMetadata": { "type": "object", "properties": { - "workflowId": { - "type": "string" - }, - "locationId": { - "type": "string" - } + "workflowId": { "type": "string" }, + "locationId": { "type": "string" } } }, "CreateGhlToolDTO": { @@ -3367,45 +3732,26 @@ }, "type": { "type": "string", - "enum": [ - "ghl" - ], + "enum": ["ghl"], "description": "The type of tool. \"ghl\" for GHL tool." }, - "metadata": { - "$ref": "#/components/schemas/GhlToolMetadata" - }, + "metadata": { "$ref": "#/components/schemas/GhlToolMetadata" }, "function": { "description": "This is the function definition of the tool.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, this is a custom function definition.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] + "allOf": [{ "$ref": "#/components/schemas/OpenAIFunction" }] }, "server": { "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", - "allOf": [ - { - "$ref": "#/components/schemas/Server" - } - ] + "allOf": [{ "$ref": "#/components/schemas/Server" }] } }, - "required": [ - "type", - "metadata" - ] + "required": ["type", "metadata"] }, "MakeToolMetadata": { "type": "object", "properties": { - "scenarioId": { - "type": "number" - }, - "triggerHookId": { - "type": "number" - } + "scenarioId": { "type": "number" }, + "triggerHookId": { "type": "number" } } }, "CreateMakeToolDTO": { @@ -3442,45 +3788,25 @@ }, "type": { "type": "string", - "enum": [ - "make" - ], + "enum": ["make"], "description": "The type of tool. \"make\" for Make tool." }, - "metadata": { - "$ref": "#/components/schemas/MakeToolMetadata" - }, + "metadata": { "$ref": "#/components/schemas/MakeToolMetadata" }, "function": { "description": "This is the function definition of the tool.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, this is a custom function definition.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] + "allOf": [{ "$ref": "#/components/schemas/OpenAIFunction" }] }, "server": { "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", - "allOf": [ - { - "$ref": "#/components/schemas/Server" - } - ] + "allOf": [{ "$ref": "#/components/schemas/Server" }] } }, - "required": [ - "type", - "metadata" - ] + "required": ["type", "metadata"] }, "AssistantTransferDestination": { "type": "object", "properties": { - "type": { - "type": "string", - "enum": [ - "assistant" - ] - }, + "type": { "type": "string", "enum": ["assistant"] }, "assistantName": { "type": "string", "description": "This is the assistant to transfer the call to." @@ -3494,20 +3820,12 @@ "description": "This is the description of the destination, used by the AI to choose when and how to transfer the call." } }, - "required": [ - "type", - "assistantName" - ] + "required": ["type", "assistantName"] }, "PhoneNumberTransferDestination": { "type": "object", "properties": { - "type": { - "type": "string", - "enum": [ - "phoneNumber" - ] - }, + "type": { "type": "string", "enum": ["phoneNumber"] }, "number": { "type": "string", "description": "This is the phone number to transfer the call to." @@ -3521,20 +3839,12 @@ "description": "This is the description of the destination, used by the AI to choose when and how to transfer the call." } }, - "required": [ - "type", - "number" - ] + "required": ["type", "number"] }, "SipTransferDestination": { "type": "object", "properties": { - "type": { - "type": "string", - "enum": [ - "sip" - ] - }, + "type": { "type": "string", "enum": ["sip"] }, "sipUri": { "type": "string", "description": "This is the SIP URI to transfer the call to." @@ -3548,10 +3858,7 @@ "description": "This is the description of the destination, used by the AI to choose when and how to transfer the call." } }, - "required": [ - "type", - "sipUri" - ] + "required": ["type", "sipUri"] }, "CreateTransferCallToolDTO": { "type": "object", @@ -3585,12 +3892,7 @@ ] } }, - "type": { - "type": "string", - "enum": [ - "transferCall" - ] - }, + "type": { "type": "string", "enum": ["transferCall"] }, "destinations": { "type": "array", "description": "These are the destinations that the call can be transferred to. If no destinations are provided, server.url will be used to get the transfer destination once the tool is called.", @@ -3613,81 +3915,42 @@ }, "function": { "description": "This is the function definition of the tool.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, this is a custom function definition.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] + "allOf": [{ "$ref": "#/components/schemas/OpenAIFunction" }] }, "server": { "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", - "allOf": [ - { - "$ref": "#/components/schemas/Server" - } - ] + "allOf": [{ "$ref": "#/components/schemas/Server" }] } }, - "required": [ - "type" - ] + "required": ["type"] }, "OpenAIMessage": { "type": "object", "properties": { - "content": { - "type": "string", - "nullable": true - }, + "content": { "type": "string", "nullable": true }, "role": { "type": "string", - "enum": [ - "assistant", - "function", - "user", - "system", - "tool" - ] + "enum": ["assistant", "function", "user", "system", "tool"] } }, - "required": [ - "content", - "role" - ] + "required": ["content", "role"] }, "KnowledgeBase": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "canonical" - ] - }, - "topK": { - "type": "number" - }, - "fileIds": { - "type": "array", - "items": { - "type": "string" - } - } + "provider": { "type": "string", "enum": ["canonical"] }, + "topK": { "type": "number", "minimum": 1, "maximum": 10 }, + "fileIds": { "type": "array", "items": { "type": "string" } } }, - "required": [ - "provider", - "fileIds" - ] + "required": ["provider", "fileIds"] }, - "TogetherAIModel": { + "AnyscaleModel": { "type": "object", "properties": { "messages": { "description": "This is the starting state for the conversation.", "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAIMessage" - } + "items": { "$ref": "#/components/schemas/OpenAIMessage" } }, "tools": { "type": "array", @@ -3724,16 +3987,9 @@ "toolIds": { "description": "These are the tools that the assistant can use during the call. To use transient tools, use `tools`.\n\nBoth `tools` and `toolIds` can be used together.", "type": "array", - "items": { - "type": "string" - } - }, - "provider": { - "type": "string", - "enum": [ - "together-ai" - ] + "items": { "type": "string" } }, + "provider": { "type": "string", "enum": ["anyscale"] }, "model": { "type": "string", "description": "This is the name of the model. Ex. cognitivecomputations/dolphin-mixtral-8x7b" @@ -3746,11 +4002,7 @@ }, "knowledgeBase": { "description": "These are the options for the knowledge base.", - "allOf": [ - { - "$ref": "#/components/schemas/KnowledgeBase" - } - ] + "allOf": [{ "$ref": "#/components/schemas/KnowledgeBase" }] }, "maxTokens": { "type": "number", @@ -3763,20 +4015,15 @@ "description": "This determines whether we detect user's emotion while they speak and send it as an additional info to model.\n\nDefault `false` because the model is usually are good at understanding the user's emotion from text." } }, - "required": [ - "provider", - "model" - ] + "required": ["provider", "model"] }, - "AnyscaleModel": { + "AnthropicModel": { "type": "object", "properties": { "messages": { "description": "This is the starting state for the conversation.", "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAIMessage" - } + "items": { "$ref": "#/components/schemas/OpenAIMessage" } }, "tools": { "type": "array", @@ -3813,20 +4060,18 @@ "toolIds": { "description": "These are the tools that the assistant can use during the call. To use transient tools, use `tools`.\n\nBoth `tools` and `toolIds` can be used together.", "type": "array", - "items": { - "type": "string" - } + "items": { "type": "string" } }, - "provider": { + "model": { "type": "string", + "description": "This is the Anthropic/Claude models that will be used.", "enum": [ - "anyscale" + "claude-3-opus-20240229", + "claude-3-sonnet-20240229", + "claude-3-haiku-20240307" ] }, - "model": { - "type": "string", - "description": "This is the name of the model. Ex. cognitivecomputations/dolphin-mixtral-8x7b" - }, + "provider": { "type": "string", "enum": ["anthropic"] }, "temperature": { "type": "number", "description": "This is the temperature that will be used for calls. Default is 0 to leverage caching for lower latency.", @@ -3835,11 +4080,7 @@ }, "knowledgeBase": { "description": "These are the options for the knowledge base.", - "allOf": [ - { - "$ref": "#/components/schemas/KnowledgeBase" - } - ] + "allOf": [{ "$ref": "#/components/schemas/KnowledgeBase" }] }, "maxTokens": { "type": "number", @@ -3852,20 +4093,15 @@ "description": "This determines whether we detect user's emotion while they speak and send it as an additional info to model.\n\nDefault `false` because the model is usually are good at understanding the user's emotion from text." } }, - "required": [ - "provider", - "model" - ] + "required": ["model", "provider"] }, - "OpenRouterModel": { + "CustomLLMModel": { "type": "object", "properties": { "messages": { "description": "This is the starting state for the conversation.", "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAIMessage" - } + "items": { "$ref": "#/components/schemas/OpenAIMessage" } }, "tools": { "type": "array", @@ -3902,15 +4138,20 @@ "toolIds": { "description": "These are the tools that the assistant can use during the call. To use transient tools, use `tools`.\n\nBoth `tools` and `toolIds` can be used together.", "type": "array", - "items": { - "type": "string" - } + "items": { "type": "string" } }, "provider": { "type": "string", - "enum": [ - "openrouter" - ] + "description": "This is the provider that will be used for the model. Any service, including your own server, that is compatible with the OpenAI API can be used.", + "enum": ["custom-llm"] + }, + "url": { + "type": "string", + "description": "These is the URL we'll use for the OpenAI client's `baseURL`. Ex. https://openrouter.ai/api/v1" + }, + "urlRequestMetadataEnabled": { + "type": "boolean", + "description": "This sets whether the call object is sent in requests to the custom provider. Default is true." }, "model": { "type": "string", @@ -3924,11 +4165,7 @@ }, "knowledgeBase": { "description": "These are the options for the knowledge base.", - "allOf": [ - { - "$ref": "#/components/schemas/KnowledgeBase" - } - ] + "allOf": [{ "$ref": "#/components/schemas/KnowledgeBase" }] }, "maxTokens": { "type": "number", @@ -3941,20 +4178,15 @@ "description": "This determines whether we detect user's emotion while they speak and send it as an additional info to model.\n\nDefault `false` because the model is usually are good at understanding the user's emotion from text." } }, - "required": [ - "provider", - "model" - ] + "required": ["provider", "url", "urlRequestMetadataEnabled", "model"] }, - "PerplexityAIModel": { + "DeepInfraModel": { "type": "object", "properties": { "messages": { "description": "This is the starting state for the conversation.", "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAIMessage" - } + "items": { "$ref": "#/components/schemas/OpenAIMessage" } }, "tools": { "type": "array", @@ -3991,16 +4223,9 @@ "toolIds": { "description": "These are the tools that the assistant can use during the call. To use transient tools, use `tools`.\n\nBoth `tools` and `toolIds` can be used together.", "type": "array", - "items": { - "type": "string" - } - }, - "provider": { - "type": "string", - "enum": [ - "perplexity-ai" - ] + "items": { "type": "string" } }, + "provider": { "type": "string", "enum": ["deepinfra"] }, "model": { "type": "string", "description": "This is the name of the model. Ex. cognitivecomputations/dolphin-mixtral-8x7b" @@ -4013,11 +4238,7 @@ }, "knowledgeBase": { "description": "These are the options for the knowledge base.", - "allOf": [ - { - "$ref": "#/components/schemas/KnowledgeBase" - } - ] + "allOf": [{ "$ref": "#/components/schemas/KnowledgeBase" }] }, "maxTokens": { "type": "number", @@ -4030,20 +4251,15 @@ "description": "This determines whether we detect user's emotion while they speak and send it as an additional info to model.\n\nDefault `false` because the model is usually are good at understanding the user's emotion from text." } }, - "required": [ - "provider", - "model" - ] + "required": ["provider", "model"] }, - "DeepInfraModel": { + "GroqModel": { "type": "object", "properties": { "messages": { "description": "This is the starting state for the conversation.", "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAIMessage" - } + "items": { "$ref": "#/components/schemas/OpenAIMessage" } }, "tools": { "type": "array", @@ -4080,20 +4296,14 @@ "toolIds": { "description": "These are the tools that the assistant can use during the call. To use transient tools, use `tools`.\n\nBoth `tools` and `toolIds` can be used together.", "type": "array", - "items": { - "type": "string" - } - }, - "provider": { - "type": "string", - "enum": [ - "deepinfra" - ] + "items": { "type": "string" } }, "model": { "type": "string", - "description": "This is the name of the model. Ex. cognitivecomputations/dolphin-mixtral-8x7b" + "description": "This is the name of the model. Ex. cognitivecomputations/dolphin-mixtral-8x7b", + "enum": ["mixtral-8x7b-32768", "llama3-8b-8192", "llama3-70b-8192"] }, + "provider": { "type": "string", "enum": ["groq"] }, "temperature": { "type": "number", "description": "This is the temperature that will be used for calls. Default is 0 to leverage caching for lower latency.", @@ -4102,11 +4312,7 @@ }, "knowledgeBase": { "description": "These are the options for the knowledge base.", - "allOf": [ - { - "$ref": "#/components/schemas/KnowledgeBase" - } - ] + "allOf": [{ "$ref": "#/components/schemas/KnowledgeBase" }] }, "maxTokens": { "type": "number", @@ -4119,20 +4325,15 @@ "description": "This determines whether we detect user's emotion while they speak and send it as an additional info to model.\n\nDefault `false` because the model is usually are good at understanding the user's emotion from text." } }, - "required": [ - "provider", - "model" - ] + "required": ["model", "provider"] }, - "CustomLLMModel": { + "OpenAIModel": { "type": "object", "properties": { "messages": { "description": "This is the starting state for the conversation.", "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAIMessage" - } + "items": { "$ref": "#/components/schemas/OpenAIMessage" } }, "tools": { "type": "array", @@ -4169,42 +4370,88 @@ "toolIds": { "description": "These are the tools that the assistant can use during the call. To use transient tools, use `tools`.\n\nBoth `tools` and `toolIds` can be used together.", "type": "array", - "items": { - "type": "string" - } + "items": { "type": "string" } }, "provider": { "type": "string", - "description": "This is the provider that will be used for the model. Any service, including your own server, that is compatible with the OpenAI API can be used.", - "enum": [ - "custom-llm" - ] - }, - "url": { - "type": "string", - "description": "These is the URL we'll use for the OpenAI client's `baseURL`. Ex. https://openrouter.ai/api/v1" - }, - "urlRequestMetadataEnabled": { - "type": "boolean", - "description": "This sets whether the call object is sent in requests to the custom provider. Default is true." + "description": "This is the provider that will be used for the model.", + "enum": ["openai"] }, "model": { "type": "string", - "description": "This is the name of the model. Ex. cognitivecomputations/dolphin-mixtral-8x7b" - }, - "temperature": { - "type": "number", - "description": "This is the temperature that will be used for calls. Default is 0 to leverage caching for lower latency.", - "minimum": 0, + "description": "This is the OpenAI model that will be used.", + "enum": [ + "gpt-4o", + "gpt-4o-2024-05-13", + "gpt-4-turbo", + "gpt-4-turbo-2024-04-09", + "gpt-4-turbo-preview", + "gpt-4-0125-preview", + "gpt-4-1106-preview", + "gpt-4", + "gpt-4-0613", + "gpt-3.5-turbo", + "gpt-3.5-turbo-0125", + "gpt-3.5-turbo-1106", + "gpt-3.5-turbo-16k", + "gpt-3.5-turbo-0613" + ] + }, + "fallbackModels": { + "type": "array", + "description": "These are the fallback models that will be used if the primary model fails. This shouldn't be specified unless you have a specific reason to do so. Vapi will automatically find the fastest fallbacks that make sense.", + "enum": [ + "gpt-4o", + "gpt-4o-2024-05-13", + "gpt-4-turbo", + "gpt-4-turbo-2024-04-09", + "gpt-4-turbo-preview", + "gpt-4-0125-preview", + "gpt-4-1106-preview", + "gpt-4", + "gpt-4-0613", + "gpt-3.5-turbo", + "gpt-3.5-turbo-0125", + "gpt-3.5-turbo-1106", + "gpt-3.5-turbo-16k", + "gpt-3.5-turbo-0613" + ], + "example": ["gpt-4-0125-preview", "gpt-4-0613"], + "items": { + "type": "string", + "enum": [ + "gpt-4o", + "gpt-4o-2024-05-13", + "gpt-4-turbo", + "gpt-4-turbo-2024-04-09", + "gpt-4-turbo-preview", + "gpt-4-0125-preview", + "gpt-4-1106-preview", + "gpt-4", + "gpt-4-0613", + "gpt-3.5-turbo", + "gpt-3.5-turbo-0125", + "gpt-3.5-turbo-1106", + "gpt-3.5-turbo-16k", + "gpt-3.5-turbo-0613" + ] + } + }, + "semanticCachingEnabled": { "type": "boolean", "example": true }, + "numFastTurns": { + "type": "number", + "description": "This sets how many turns at the start of the conversation to use gpt-3.5-turbo before switching to the primary model. Default is 0.", + "minimum": 0 + }, + "temperature": { + "type": "number", + "description": "This is the temperature that will be used for calls. Default is 0 to leverage caching for lower latency.", + "minimum": 0, "maximum": 2 }, "knowledgeBase": { "description": "These are the options for the knowledge base.", - "allOf": [ - { - "$ref": "#/components/schemas/KnowledgeBase" - } - ] + "allOf": [{ "$ref": "#/components/schemas/KnowledgeBase" }] }, "maxTokens": { "type": "number", @@ -4217,22 +4464,15 @@ "description": "This determines whether we detect user's emotion while they speak and send it as an additional info to model.\n\nDefault `false` because the model is usually are good at understanding the user's emotion from text." } }, - "required": [ - "provider", - "url", - "urlRequestMetadataEnabled", - "model" - ] + "required": ["provider", "model"] }, - "GroqModel": { + "OpenRouterModel": { "type": "object", "properties": { "messages": { "description": "This is the starting state for the conversation.", "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAIMessage" - } + "items": { "$ref": "#/components/schemas/OpenAIMessage" } }, "tools": { "type": "array", @@ -4269,24 +4509,12 @@ "toolIds": { "description": "These are the tools that the assistant can use during the call. To use transient tools, use `tools`.\n\nBoth `tools` and `toolIds` can be used together.", "type": "array", - "items": { - "type": "string" - } + "items": { "type": "string" } }, + "provider": { "type": "string", "enum": ["openrouter"] }, "model": { "type": "string", - "description": "This is the name of the model. Ex. cognitivecomputations/dolphin-mixtral-8x7b", - "enum": [ - "mixtral-8x7b-32768", - "llama3-8b-8192", - "llama3-70b-8192" - ] - }, - "provider": { - "type": "string", - "enum": [ - "groq" - ] + "description": "This is the name of the model. Ex. cognitivecomputations/dolphin-mixtral-8x7b" }, "temperature": { "type": "number", @@ -4296,11 +4524,7 @@ }, "knowledgeBase": { "description": "These are the options for the knowledge base.", - "allOf": [ - { - "$ref": "#/components/schemas/KnowledgeBase" - } - ] + "allOf": [{ "$ref": "#/components/schemas/KnowledgeBase" }] }, "maxTokens": { "type": "number", @@ -4313,20 +4537,15 @@ "description": "This determines whether we detect user's emotion while they speak and send it as an additional info to model.\n\nDefault `false` because the model is usually are good at understanding the user's emotion from text." } }, - "required": [ - "model", - "provider" - ] + "required": ["provider", "model"] }, - "AnthropicModel": { + "PerplexityAIModel": { "type": "object", "properties": { "messages": { "description": "This is the starting state for the conversation.", "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAIMessage" - } + "items": { "$ref": "#/components/schemas/OpenAIMessage" } }, "tools": { "type": "array", @@ -4363,24 +4582,12 @@ "toolIds": { "description": "These are the tools that the assistant can use during the call. To use transient tools, use `tools`.\n\nBoth `tools` and `toolIds` can be used together.", "type": "array", - "items": { - "type": "string" - } + "items": { "type": "string" } }, + "provider": { "type": "string", "enum": ["perplexity-ai"] }, "model": { "type": "string", - "description": "This is the Anthropic/Claude models that will be used.", - "enum": [ - "claude-3-opus-20240229", - "claude-3-sonnet-20240229", - "claude-3-haiku-20240307" - ] - }, - "provider": { - "type": "string", - "enum": [ - "anthropic" - ] + "description": "This is the name of the model. Ex. cognitivecomputations/dolphin-mixtral-8x7b" }, "temperature": { "type": "number", @@ -4390,11 +4597,7 @@ }, "knowledgeBase": { "description": "These are the options for the knowledge base.", - "allOf": [ - { - "$ref": "#/components/schemas/KnowledgeBase" - } - ] + "allOf": [{ "$ref": "#/components/schemas/KnowledgeBase" }] }, "maxTokens": { "type": "number", @@ -4407,255 +4610,82 @@ "description": "This determines whether we detect user's emotion while they speak and send it as an additional info to model.\n\nDefault `false` because the model is usually are good at understanding the user's emotion from text." } }, - "required": [ - "model", - "provider" - ] + "required": ["provider", "model"] }, - "DeepgramTranscriber": { + "TogetherAIModel": { "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-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" - ] - }, - { - "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": [ - "bg", - "ro", - "cs", - "da", - "da-DK", - "de-CH", - "nl", - "en", - "en-US", - "en-AU", - "en-GB", - "en-NZ", - "en-IN", - "nl-BE", - "fr", - "fr-CA", - "de", - "el", - "hi", - "hi-Latn", - "id", - "it", - "ja", - "ko", - "ko-KR", - "no", - "pl", - "pt", - "pt-BR", - "ru", - "es", - "es-419", - "sv", - "sv-SE", - "tr", - "uk", - "ja", - "zh", - "zh-CN", - "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 sometimes but it's getting better.", - "example": false + "messages": { + "description": "This is the starting state for the conversation.", + "type": "array", + "items": { "$ref": "#/components/schemas/OpenAIMessage" } }, - "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.", + "tools": { "type": "array", + "description": "These are the tools that the assistant can use during the call. To use existing tools, use `toolIds`.\n\nBoth `tools` and `toolIds` can be used together.", "items": { - "type": "string", - "pattern": "/^\\p{L}[\\p{L}\\d]*(?::[+-]?\\d+)?$/u" - } - } - }, - "required": [ - "provider" - ] - }, - "TalkscriberTranscriber": { - "type": "object", - "properties": { - "provider": { - "type": "string", - "description": "This is the transcription provider that will be used.", - "enum": [ - "talkscriber" - ] - }, - "model": { - "type": "string", - "description": "This is the model that will be used for the transcription.", - "enum": [ - "whisper" - ] - }, - "language": { - "type": "string", - "description": "This is the language that will be set for the transcription. The list of languages Whisper supports can be found here: https://github.com/openai/whisper/blob/main/whisper/tokenizer.py", - "enum": [ - "en", - "zh", - "de", - "es", - "ru", - "ko", - "fr", - "ja", - "pt", - "tr", - "pl", - "ca", - "nl", - "ar", - "sv", - "it", - "id", - "hi", - "fi", - "vi", - "he", - "uk", - "el", - "ms", - "cs", - "ro", - "da", - "hu", - "ta", - "no", - "th", - "ur", - "hr", - "bg", - "lt", - "la", - "mi", - "ml", - "cy", - "sk", - "te", - "fa", - "lv", - "bn", - "sr", - "az", - "sl", - "kn", - "et", - "mk", - "br", - "eu", - "is", - "hy", - "ne", - "mn", - "bs", - "kk", - "sq", - "sw", - "gl", - "mr", - "pa", - "si", - "km", - "sn", - "yo", - "so", - "af", - "oc", - "ka", - "be", - "tg", - "sd", - "gu", - "am", - "yi", - "lo", - "uz", - "fo", - "ht", - "ps", - "tk", - "nn", - "mt", - "sa", - "lb", - "my", - "bo", - "tl", - "mg", - "as", - "tt", - "haw", - "ln", - "ha", - "ba", - "jw", - "su", - "yue" - ] + "oneOf": [ + { + "$ref": "#/components/schemas/CreateTransferCallToolDTO", + "title": "TransferTool" + }, + { + "$ref": "#/components/schemas/CreateFunctionToolDTO", + "title": "FunctionTool" + }, + { + "$ref": "#/components/schemas/CreateEndCallToolDTO", + "title": "EndCallTool" + }, + { + "$ref": "#/components/schemas/CreateDtmfToolDTO", + "title": "DtmfTool" + }, + { + "$ref": "#/components/schemas/CreateMakeToolDTO", + "title": "MakeTool" + }, + { + "$ref": "#/components/schemas/CreateGhlToolDTO", + "title": "GhlTool" + } + ] + } + }, + "toolIds": { + "description": "These are the tools that the assistant can use during the call. To use transient tools, use `tools`.\n\nBoth `tools` and `toolIds` can be used together.", + "type": "array", + "items": { "type": "string" } + }, + "provider": { "type": "string", "enum": ["together-ai"] }, + "model": { + "type": "string", + "description": "This is the name of the model. Ex. cognitivecomputations/dolphin-mixtral-8x7b" + }, + "temperature": { + "type": "number", + "description": "This is the temperature that will be used for calls. Default is 0 to leverage caching for lower latency.", + "minimum": 0, + "maximum": 2 + }, + "knowledgeBase": { + "description": "These are the options for the knowledge base.", + "allOf": [{ "$ref": "#/components/schemas/KnowledgeBase" }] + }, + "maxTokens": { + "type": "number", + "description": "This is the max number of tokens that the assistant will be allowed to generate in each turn of the conversation. Default is 250.", + "minimum": 50, + "maximum": 1000 + }, + "emotionRecognitionEnabled": { + "type": "boolean", + "description": "This determines whether we detect user's emotion while they speak and send it as an additional info to model.\n\nDefault `false` because the model is usually are good at understanding the user's emotion from text." } }, - "required": [ - "provider" - ] + "required": ["provider", "model"] }, - "ElevenLabsVoice": { + "AzureVoice": { "type": "object", "properties": { "inputPreprocessingEnabled": { @@ -4736,254 +4766,122 @@ "provider": { "type": "string", "description": "This is the voice provider that will be used.", - "enum": [ - "11labs" - ] + "enum": ["azure"] }, "voiceId": { - "description": "This is the provider-specific ID that will be used. Ensure the Voice is present in your 11Labs Voice Library.", + "description": "This is the provider-specific ID that will be used.", "oneOf": [ { "type": "string", - "enum": [ - "burt", - "marissa", - "andrea", - "sarah", - "phillip", - "steve", - "joseph", - "myra", - "paula", - "ryan", - "drew", - "paul", - "mrb", - "matilda", - "mark" - ], + "enum": ["andrew", "brian", "emma"], "title": "Preset Voice Options" }, - { - "type": "string", - "title": "11Labs Voice ID" - } + { "type": "string", "title": "Azure Voice ID" } ] }, - "stability": { - "type": "number", - "description": "Defines the stability for voice settings.", - "minimum": 0, - "maximum": 1, - "example": 0.5 - }, - "similarityBoost": { - "type": "number", - "description": "Defines the similarity boost for voice settings.", - "minimum": 0, - "maximum": 1, - "example": 0.75 - }, - "style": { - "type": "number", - "description": "Defines the style for voice settings.", - "minimum": 0, - "maximum": 1, - "example": 0 - }, - "useSpeakerBoost": { - "type": "boolean", - "description": "Defines the use speaker boost for voice settings.", - "example": false - }, - "optimizeStreamingLatency": { + "speed": { "type": "number", - "description": "Defines the optimize streaming latency for voice settings. Defaults to 3.", - "minimum": 0, - "maximum": 4, - "example": 3 - }, - "enableSsmlParsing": { - "type": "boolean", - "description": "Defines the use of https://elevenlabs.io/docs/speech-synthesis/prompting#pronunciation. Disabled by default.", - "example": false - }, - "model": { - "type": "string", - "description": "This is the model that will be used. Defaults to 'eleven_multilingual_v2' if transcriber.language is non-English, otherwise 'eleven_turbo_v2_5'.", - "enum": [ - "eleven_multilingual_v2", - "eleven_turbo_v2", - "eleven_turbo_v2_5", - "eleven_monolingual_v1" - ], - "example": "eleven_turbo_v2_5" + "description": "This is the speed multiplier that will be used.", + "minimum": 0.5, + "maximum": 2 } }, - "required": [ - "provider", - "voiceId" - ] + "required": ["provider", "voiceId"] }, - "OpenAIModel": { + "CartesiaVoice": { "type": "object", "properties": { - "messages": { - "description": "This is the starting state for the conversation.", - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAIMessage" - } - }, - "tools": { - "type": "array", - "description": "These are the tools that the assistant can use during the call. To use existing tools, use `toolIds`.\n\nBoth `tools` and `toolIds` can be used together.", - "items": { - "oneOf": [ - { - "$ref": "#/components/schemas/CreateTransferCallToolDTO", - "title": "TransferTool" - }, - { - "$ref": "#/components/schemas/CreateFunctionToolDTO", - "title": "FunctionTool" - }, - { - "$ref": "#/components/schemas/CreateEndCallToolDTO", - "title": "EndCallTool" - }, - { - "$ref": "#/components/schemas/CreateDtmfToolDTO", - "title": "DtmfTool" - }, - { - "$ref": "#/components/schemas/CreateMakeToolDTO", - "title": "MakeTool" - }, - { - "$ref": "#/components/schemas/CreateGhlToolDTO", - "title": "GhlTool" - } - ] - } - }, - "toolIds": { - "description": "These are the tools that the assistant can use during the call. To use transient tools, use `tools`.\n\nBoth `tools` and `toolIds` can be used together.", - "type": "array", - "items": { - "type": "string" - } - }, - "provider": { - "type": "string", - "description": "This is the provider that will be used for the model.", - "enum": [ - "openai" - ] + "inputPreprocessingEnabled": { + "type": "boolean", + "description": "This determines whether the model output is preprocessed before being sent to the voice provider. This includes things like giving better hints to the voice provider on how to pronounce complex structured text like phone numbers, emails and addresses. This might add latency as it waits for the model to output a full chunk before sending it to the voice provider. Defaults to true.", + "example": true }, - "model": { - "type": "string", - "description": "This is the OpenAI model that will be used.", - "enum": [ - "gpt-4o", - "gpt-4o-2024-05-13", - "gpt-4-turbo", - "gpt-4-turbo-2024-04-09", - "gpt-4-turbo-preview", - "gpt-4-0125-preview", - "gpt-4-1106-preview", - "gpt-4", - "gpt-4-0613", - "gpt-3.5-turbo", - "gpt-3.5-turbo-0125", - "gpt-3.5-turbo-1106", - "gpt-3.5-turbo-16k", - "gpt-3.5-turbo-0613" - ] + "inputMinCharacters": { + "type": "number", + "description": "This is the minimum number of characters that will be passed to the voice provider. This helps decides the minimum chunk size that is sent to the voice provider for the voice generation as the model tokens are streaming in. Defaults to 30.", + "minimum": 1, + "maximum": 80, + "example": 10 }, - "fallbackModels": { + "inputPunctuationBoundaries": { "type": "array", - "description": "These are the fallback models that will be used if the primary model fails. This shouldn't be specified unless you have a specific reason to do so. Vapi will automatically find the fastest fallbacks that make sense.", + "description": "These are the punctuations that are considered valid boundaries and \"delimiters\". This helps decides the chunks that are sent to the voice provider for the voice generation as the model tokens are streaming in. Defaults to ['。', ',', '.', '!', '?', ';', ')', '،', '۔', '।', '॥', '|', '||', ',', ':'].", "enum": [ - "gpt-4o", - "gpt-4o-2024-05-13", - "gpt-4-turbo", - "gpt-4-turbo-2024-04-09", - "gpt-4-turbo-preview", - "gpt-4-0125-preview", - "gpt-4-1106-preview", - "gpt-4", - "gpt-4-0613", - "gpt-3.5-turbo", - "gpt-3.5-turbo-0125", - "gpt-3.5-turbo-1106", - "gpt-3.5-turbo-16k", - "gpt-3.5-turbo-0613" + "。", + ",", + ".", + "!", + "?", + ";", + ")", + "،", + "۔", + "।", + "॥", + "|", + "||", + ",", + ":" ], "example": [ - "gpt-4-0125-preview", - "gpt-4-0613" + "。", + ",", + ".", + "!", + "?", + ";", + ")", + "،", + "۔", + "।", + "॥", + "|", + "||", + ",", + ":" ], "items": { "type": "string", "enum": [ - "gpt-4o", - "gpt-4o-2024-05-13", - "gpt-4-turbo", - "gpt-4-turbo-2024-04-09", - "gpt-4-turbo-preview", - "gpt-4-0125-preview", - "gpt-4-1106-preview", - "gpt-4", - "gpt-4-0613", - "gpt-3.5-turbo", - "gpt-3.5-turbo-0125", - "gpt-3.5-turbo-1106", - "gpt-3.5-turbo-16k", - "gpt-3.5-turbo-0613" + "。", + ",", + ".", + "!", + "?", + ";", + ")", + "،", + "۔", + "।", + "॥", + "|", + "||", + ",", + ":" ] } }, - "semanticCachingEnabled": { + "fillerInjectionEnabled": { "type": "boolean", - "example": true - }, - "numFastTurns": { - "type": "number", - "description": "This sets how many turns at the start of the conversation to use gpt-3.5-turbo before switching to the primary model. Default is 0.", - "minimum": 0 + "description": "This determines whether fillers are injected into the model output before inputting it into the voice provider.\n\nDefault `false` because you can achieve better results with prompting the model.", + "example": false }, - "temperature": { - "type": "number", - "description": "This is the temperature that will be used for calls. Default is 0 to leverage caching for lower latency.", - "minimum": 0, - "maximum": 2 + "provider": { + "type": "string", + "description": "This is the voice provider that will be used.", + "enum": ["cartesia"] }, - "knowledgeBase": { - "description": "These are the options for the knowledge base.", - "allOf": [ - { - "$ref": "#/components/schemas/KnowledgeBase" - } + "voiceId": { + "description": "This is the provider-specific ID that will be used.", + "oneOf": [ + { "type": "string", "enum": [], "title": "Preset Voice Options" }, + { "type": "string", "title": "Cartesia Voice ID" } ] - }, - "maxTokens": { - "type": "number", - "description": "This is the max number of tokens that the assistant will be allowed to generate in each turn of the conversation. Default is 250.", - "minimum": 50, - "maximum": 1000 - }, - "emotionRecognitionEnabled": { - "type": "boolean", - "description": "This determines whether we detect user's emotion while they speak and send it as an additional info to model.\n\nDefault `false` because the model is usually are good at understanding the user's emotion from text." } }, - "required": [ - "provider", - "model" - ] + "required": ["provider", "voiceId"] }, - "PlayHTVoice": { + "DeepgramVoice": { "type": "object", "properties": { "inputPreprocessingEnabled": { @@ -5064,9 +4962,7 @@ "provider": { "type": "string", "description": "This is the voice provider that will be used.", - "enum": [ - "playht" - ] + "enum": ["deepgram"] }, "voiceId": { "description": "This is the provider-specific ID that will be used.", @@ -5074,86 +4970,28 @@ { "type": "string", "enum": [ - "jennifer", - "melissa", - "will", - "chris", - "matt", - "jack", - "ruby", - "davis", - "donna", - "michael" + "asteria", + "luna", + "stella", + "athena", + "hera", + "orion", + "arcas", + "perseus", + "angus", + "orpheus", + "helios", + "zeus" ], "title": "Preset Voice Options" }, - { - "type": "string", - "title": "PlayHT Voice ID" - } + { "type": "string", "title": "Deepgram Voice ID" } ] - }, - "speed": { - "type": "number", - "description": "This is the speed multiplier that will be used.", - "minimum": 0.1, - "maximum": 5, - "example": null - }, - "temperature": { - "type": "number", - "description": "A floating point number between 0, exclusive, and 2, inclusive. If equal to null or not provided, the model's default temperature will be used. The temperature parameter controls variance. Lower temperatures result in more predictable results, higher temperatures allow each run to vary more, so the voice may sound less like the baseline voice.", - "minimum": 0.1, - "maximum": 2, - "example": null - }, - "emotion": { - "type": "string", - "description": "An emotion to be applied to the speech.", - "enum": [ - "female_happy", - "female_sad", - "female_angry", - "female_fearful", - "female_disgust", - "female_surprised", - "male_happy", - "male_sad", - "male_angry", - "male_fearful", - "male_disgust", - "male_surprised" - ], - "example": null - }, - "voiceGuidance": { - "type": "number", - "description": "A number between 1 and 6. Use lower numbers to reduce how unique your chosen voice will be compared to other voices.", - "minimum": 1, - "maximum": 6, - "example": null - }, - "styleGuidance": { - "type": "number", - "description": "A number between 1 and 30. Use lower numbers to to reduce how strong your chosen emotion will be. Higher numbers will create a very emotional performance.", - "minimum": 1, - "maximum": 30, - "example": null - }, - "textGuidance": { - "type": "number", - "description": "A number between 1 and 2. This number influences how closely the generated speech adheres to the input text. Use lower values to create more fluid speech, but with a higher chance of deviating from the input text. Higher numbers will make the generated speech more accurate to the input text, ensuring that the words spoken align closely with the provided text.", - "minimum": 1, - "maximum": 2, - "example": null } }, - "required": [ - "provider", - "voiceId" - ] + "required": ["provider", "voiceId"] }, - "RimeAIVoice": { + "ElevenLabsVoice": { "type": "object", "properties": { "inputPreprocessingEnabled": { @@ -5234,128 +5072,88 @@ "provider": { "type": "string", "description": "This is the voice provider that will be used.", - "enum": [ - "rime-ai" - ] + "enum": ["11labs"] }, "voiceId": { - "description": "This is the provider-specific ID that will be used.", + "description": "This is the provider-specific ID that will be used. Ensure the Voice is present in your 11Labs Voice Library.", "oneOf": [ { "type": "string", "enum": [ - "marsh", - "bayou", - "creek", - "brook", - "flower", - "spore", - "glacier", - "gulch", - "alpine", - "cove", - "lagoon", - "tundra", - "steppe", - "mesa", - "grove", - "rainforest", - "moraine", - "wildflower", - "peak", - "boulder", - "abbie", - "allison", - "ally", - "alona", - "amber", - "ana", - "antoine", - "armon", - "brenda", - "brittany", - "carol", - "colin", - "courtney", - "elena", - "elliot", - "eva", - "geoff", - "gerald", - "hank", - "helen", - "hera", - "jen", - "joe", - "joy", - "juan", - "kendra", - "kendrick", - "kenneth", - "kevin", - "kris", - "linda", - "madison", - "marge", - "marina", + "burt", "marissa", - "marta", - "maya", - "nicholas", - "nyles", - "phil", - "reba", - "rex", - "rick", - "ritu", - "rob", - "rodney", - "rohan", - "rosco", - "samantha", - "sandy", - "selena", - "seth", - "sharon", - "stan", - "tamra", - "tanya", - "tibur", - "tj", - "tyler", - "viv", - "yadira" + "andrea", + "sarah", + "phillip", + "steve", + "joseph", + "myra", + "paula", + "ryan", + "drew", + "paul", + "mrb", + "matilda", + "mark" ], "title": "Preset Voice Options" }, - { - "type": "string", - "title": "RimeAI Voice ID" - } + { "type": "string", "title": "11Labs Voice ID" } ] }, + "stability": { + "type": "number", + "description": "Defines the stability for voice settings.", + "minimum": 0, + "maximum": 1, + "example": 0.5 + }, + "similarityBoost": { + "type": "number", + "description": "Defines the similarity boost for voice settings.", + "minimum": 0, + "maximum": 1, + "example": 0.75 + }, + "style": { + "type": "number", + "description": "Defines the style for voice settings.", + "minimum": 0, + "maximum": 1, + "example": 0 + }, + "useSpeakerBoost": { + "type": "boolean", + "description": "Defines the use speaker boost for voice settings.", + "example": false + }, + "optimizeStreamingLatency": { + "type": "number", + "description": "Defines the optimize streaming latency for voice settings. Defaults to 3.", + "minimum": 0, + "maximum": 4, + "example": 3 + }, + "enableSsmlParsing": { + "type": "boolean", + "description": "Defines the use of https://elevenlabs.io/docs/speech-synthesis/prompting#pronunciation. Disabled by default.", + "example": false + }, "model": { "type": "string", - "description": "This is the model that will be used. Defaults to 'v1' when not specified.", + "description": "This is the model that will be used. Defaults to 'eleven_multilingual_v2' if transcriber.language is non-English, otherwise 'eleven_turbo_v2_5'.", "enum": [ - "v1", - "mist" + "eleven_multilingual_v2", + "eleven_turbo_v2", + "eleven_turbo_v2_5", + "eleven_monolingual_v1" ], - "example": "v1" - }, - "speed": { - "type": "number", - "description": "This is the speed multiplier that will be used.", - "minimum": 0.1, - "example": null + "example": "eleven_turbo_v2_5" } }, - "required": [ - "provider", - "voiceId" - ] + "required": ["provider", "voiceId"] }, - "OpenAIVoice": { + "LMNTVoice": { "type": "object", "properties": { "inputPreprocessingEnabled": { @@ -5436,53 +5234,30 @@ "provider": { "type": "string", "description": "This is the voice provider that will be used.", - "enum": [ - "openai" - ] + "enum": ["lmnt"] }, "voiceId": { "description": "This is the provider-specific ID that will be used.", - "enum": [ - "alloy", - "echo", - "fable", - "onyx", - "nova", - "shimmer" - ], "oneOf": [ { "type": "string", - "enum": [ - "alloy", - "echo", - "fable", - "onyx", - "nova", - "shimmer" - ], + "enum": ["lily", "daniel"], "title": "Preset Voice Options" }, - { - "type": "string", - "title": "OpenAI Voice ID" - } + { "type": "string", "title": "LMNT Voice ID" } ] }, "speed": { "type": "number", "description": "This is the speed multiplier that will be used.", "minimum": 0.25, - "maximum": 4, + "maximum": 2, "example": null } }, - "required": [ - "provider", - "voiceId" - ] + "required": ["provider", "voiceId"] }, - "AzureVoice": { + "NeetsVoice": { "type": "object", "properties": { "inputPreprocessingEnabled": { @@ -5563,41 +5338,23 @@ "provider": { "type": "string", "description": "This is the voice provider that will be used.", - "enum": [ - "azure" - ] + "enum": ["neets"] }, "voiceId": { "description": "This is the provider-specific ID that will be used.", "oneOf": [ { "type": "string", - "enum": [ - "andrew", - "brian", - "emma" - ], + "enum": ["vits", "vits"], "title": "Preset Voice Options" }, - { - "type": "string", - "title": "Azure Voice ID" - } + { "type": "string", "title": "Neets Voice ID" } ] - }, - "speed": { - "type": "number", - "description": "This is the speed multiplier that will be used.", - "minimum": 0.5, - "maximum": 2 } }, - "required": [ - "provider", - "voiceId" - ] + "required": ["provider", "voiceId"] }, - "LMNTVoice": { + "OpenAIVoice": { "type": "object", "properties": { "inputPreprocessingEnabled": { @@ -5678,41 +5435,31 @@ "provider": { "type": "string", "description": "This is the voice provider that will be used.", - "enum": [ - "lmnt" - ] + "enum": ["openai"] }, "voiceId": { "description": "This is the provider-specific ID that will be used.", + "enum": ["alloy", "echo", "fable", "onyx", "nova", "shimmer"], "oneOf": [ { "type": "string", - "enum": [ - "lily", - "daniel" - ], + "enum": ["alloy", "echo", "fable", "onyx", "nova", "shimmer"], "title": "Preset Voice Options" }, - { - "type": "string", - "title": "LMNT Voice ID" - } + { "type": "string", "title": "OpenAI Voice ID" } ] }, "speed": { "type": "number", "description": "This is the speed multiplier that will be used.", "minimum": 0.25, - "maximum": 2, + "maximum": 4, "example": null } }, - "required": [ - "provider", - "voiceId" - ] + "required": ["provider", "voiceId"] }, - "NeetsVoice": { + "PlayHTVoice": { "type": "object", "properties": { "inputPreprocessingEnabled": { @@ -5793,9 +5540,7 @@ "provider": { "type": "string", "description": "This is the voice provider that will be used.", - "enum": [ - "neets" - ] + "enum": ["playht"] }, "voiceId": { "description": "This is the provider-specific ID that will be used.", @@ -5803,24 +5548,80 @@ { "type": "string", "enum": [ - "vits", - "vits" + "jennifer", + "melissa", + "will", + "chris", + "matt", + "jack", + "ruby", + "davis", + "donna", + "michael" ], "title": "Preset Voice Options" }, - { - "type": "string", - "title": "Neets Voice ID" - } + { "type": "string", "title": "PlayHT Voice ID" } ] + }, + "speed": { + "type": "number", + "description": "This is the speed multiplier that will be used.", + "minimum": 0.1, + "maximum": 5, + "example": null + }, + "temperature": { + "type": "number", + "description": "A floating point number between 0, exclusive, and 2, inclusive. If equal to null or not provided, the model's default temperature will be used. The temperature parameter controls variance. Lower temperatures result in more predictable results, higher temperatures allow each run to vary more, so the voice may sound less like the baseline voice.", + "minimum": 0.1, + "maximum": 2, + "example": null + }, + "emotion": { + "type": "string", + "description": "An emotion to be applied to the speech.", + "enum": [ + "female_happy", + "female_sad", + "female_angry", + "female_fearful", + "female_disgust", + "female_surprised", + "male_happy", + "male_sad", + "male_angry", + "male_fearful", + "male_disgust", + "male_surprised" + ], + "example": null + }, + "voiceGuidance": { + "type": "number", + "description": "A number between 1 and 6. Use lower numbers to reduce how unique your chosen voice will be compared to other voices.", + "minimum": 1, + "maximum": 6, + "example": null + }, + "styleGuidance": { + "type": "number", + "description": "A number between 1 and 30. Use lower numbers to to reduce how strong your chosen emotion will be. Higher numbers will create a very emotional performance.", + "minimum": 1, + "maximum": 30, + "example": null + }, + "textGuidance": { + "type": "number", + "description": "A number between 1 and 2. This number influences how closely the generated speech adheres to the input text. Use lower values to create more fluid speech, but with a higher chance of deviating from the input text. Higher numbers will make the generated speech more accurate to the input text, ensuring that the words spoken align closely with the provided text.", + "minimum": 1, + "maximum": 2, + "example": null } }, - "required": [ - "provider", - "voiceId" - ] + "required": ["provider", "voiceId"] }, - "CartesiaVoice": { + "RimeAIVoice": { "type": "object", "properties": { "inputPreprocessingEnabled": { @@ -5901,38 +5702,120 @@ "provider": { "type": "string", "description": "This is the voice provider that will be used.", - "enum": [ - "cartesia" - ] + "enum": ["rime-ai"] }, "voiceId": { "description": "This is the provider-specific ID that will be used.", "oneOf": [ { "type": "string", + "enum": [ + "marsh", + "bayou", + "creek", + "brook", + "flower", + "spore", + "glacier", + "gulch", + "alpine", + "cove", + "lagoon", + "tundra", + "steppe", + "mesa", + "grove", + "rainforest", + "moraine", + "wildflower", + "peak", + "boulder", + "abbie", + "allison", + "ally", + "alona", + "amber", + "ana", + "antoine", + "armon", + "brenda", + "brittany", + "carol", + "colin", + "courtney", + "elena", + "elliot", + "eva", + "geoff", + "gerald", + "hank", + "helen", + "hera", + "jen", + "joe", + "joy", + "juan", + "kendra", + "kendrick", + "kenneth", + "kevin", + "kris", + "linda", + "madison", + "marge", + "marina", + "marissa", + "marta", + "maya", + "nicholas", + "nyles", + "phil", + "reba", + "rex", + "rick", + "ritu", + "rob", + "rodney", + "rohan", + "rosco", + "samantha", + "sandy", + "selena", + "seth", + "sharon", + "stan", + "tamra", + "tanya", + "tibur", + "tj", + "tyler", + "viv", + "yadira" + ], "title": "Preset Voice Options" }, - { - "type": "string", - "title": "Cartesia Voice ID" - } + { "type": "string", "title": "RimeAI Voice ID" } ] + }, + "model": { + "type": "string", + "description": "This is the model that will be used. Defaults to 'v1' when not specified.", + "enum": ["v1", "mist"], + "example": "v1" + }, + "speed": { + "type": "number", + "description": "This is the speed multiplier that will be used.", + "minimum": 0.1, + "example": null } }, - "required": [ - "provider", - "voiceId" - ] + "required": ["provider", "voiceId"] }, "TwilioVoicemailDetection": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "twilio" - ] - }, + "provider": { "type": "string", "enum": ["twilio"] }, "voicemailDetectionTypes": { "type": "array", "description": "These are the AMD messages from Twilio that are considered as voicemail. Default is ['machine_end_beep', 'machine_end_silence'].", @@ -5945,10 +5828,7 @@ "machine_end_silence", "machine_end_other" ], - "example": [ - "machine_end_beep", - "machine_end_silence" - ], + "example": ["machine_end_beep", "machine_end_silence"], "items": { "type": "string", "enum": [ @@ -5962,9 +5842,7 @@ ] } }, - "enabled": { - "type": "boolean" - }, + "enabled": { "type": "boolean" }, "machineDetectionTimeout": { "type": "number", "minimum": 3, @@ -5986,9 +5864,7 @@ "maximum": 10000 } }, - "required": [ - "provider" - ] + "required": ["provider"] }, "AnalysisPlan": { "type": "object", @@ -5998,6 +5874,18 @@ "maxLength": 2000, "description": "This is the prompt that's used to summarize the call. The output is stored in `call.analysis.summary`.\n\nDefault is \"You are an expert note-taker. You will be given a transcript of a call. Summarize the call in 2-3 sentences, if applicable.\".\n\nSet to '' or 'off' to disable." }, + "summaryRequestTimeoutSeconds": { + "type": "number", + "minimum": 1, + "maximum": 20, + "description": "This is how long the request is tried before giving up. When request times out, `call.analysis.summary` will be empty. Increasing this timeout will delay the end of call report.\n\nDefault is 5 seconds." + }, + "structuredDataRequestTimeoutSeconds": { + "type": "number", + "minimum": 1, + "maximum": 20, + "description": "This is how long the request is tried before giving up. When request times out, `call.analysis.structuredData` will be empty. Increasing this timeout will delay the end of call report.\n\nDefault is 5 seconds." + }, "successEvaluationPrompt": { "type": "string", "maxLength": 2000, @@ -6017,6 +5905,12 @@ ], "description": "This enforces the rubric of the evaluation. The output is stored in `call.analysis.successEvaluation`.\n\nOptions include:\n- 'NumericScale': A scale of 1 to 10.\n- 'DescriptiveScale': A scale of Excellent, Good, Fair, Poor.\n- 'Checklist': A checklist of criteria and their status.\n- 'Matrix': A grid that evaluates multiple criteria across different performance levels.\n- 'PercentageScale': A scale of 0% to 100%.\n- 'LikertScale': A scale of Strongly Agree, Agree, Neutral, Disagree, Strongly Disagree.\n- 'AutomaticRubric': Automatically break down evaluation into several criteria, each with its own score.\n- 'PassFail': A simple 'true' if call passed, 'false' if not.\n\nFor 'Checklist' and 'Matrix', provide the criteria in `successEvaluationPrompt`.\n\nDefault is 'PassFail' if `successEvaluationPrompt` is not provided, and null if `successEvaluationPrompt` is provided.\n\nYou can use this standalone or in combination with `successEvaluationPrompt`. If both are provided, they are concatenated into appropriate instructions." }, + "successEvaluationRequestTimeoutSeconds": { + "type": "number", + "minimum": 1, + "maximum": 20, + "description": "This is how long the request is tried before giving up. When request times out, `call.analysis.successEvaluation` will be empty. Increasing this timeout will delay the end of call report.\n\nDefault is 5 seconds." + }, "structuredDataPrompt": { "type": "string", "description": "This is the prompt that's used to extract structured data from the call. The output is stored in `call.analysis.structuredData`.\n\nDisabled by default.\n\nYou can use this standalone or in combination with `structuredDataSchema`. If both are provided, they are concatenated into appropriate instructions.", @@ -6024,11 +5918,16 @@ }, "structuredDataSchema": { "description": "This enforces the schema of the structured data. This output is stored in `call.analysis.structuredData`.\n\nComplete guide on JSON Schema can be found [here](https://ajv.js.org/json-schema.html#json-data-type).\n\nDisabled by default.\n\nYou can use this standalone or in combination with `structuredDataPrompt`. If both are provided, they are concatenated into appropriate instructions.", - "allOf": [ - { - "$ref": "#/components/schemas/JsonSchema" - } - ] + "allOf": [{ "$ref": "#/components/schemas/JsonSchema" }] + } + } + }, + "ArtifactPlan": { + "type": "object", + "properties": { + "videoRecordingEnabled": { + "type": "boolean", + "description": "This determines whether the video is recorded during the call. Default is false. Only relevant for `webCall` type." } } }, @@ -6051,25 +5950,17 @@ "model": { "description": "These are the options for the assistant's LLM.", "oneOf": [ - { - "$ref": "#/components/schemas/OpenAIModel", - "title": "OpenAIModel" - }, - { - "$ref": "#/components/schemas/TogetherAIModel", - "title": "TogetherAIModel" - }, { "$ref": "#/components/schemas/AnyscaleModel", "title": "AnyscaleModel" }, { - "$ref": "#/components/schemas/OpenRouterModel", - "title": "OpenRouterModel" + "$ref": "#/components/schemas/AnthropicModel", + "title": "AnthropicModel" }, { - "$ref": "#/components/schemas/PerplexityAIModel", - "title": "PerplexityAIModel" + "$ref": "#/components/schemas/CustomLLMModel", + "title": "CustomLLMModel" }, { "$ref": "#/components/schemas/DeepInfraModel", @@ -6080,12 +5971,20 @@ "title": "GroqModel" }, { - "$ref": "#/components/schemas/AnthropicModel", - "title": "AnthropicModel" + "$ref": "#/components/schemas/OpenAIModel", + "title": "OpenAIModel" }, { - "$ref": "#/components/schemas/CustomLLMModel", - "title": "CustomLLMModel" + "$ref": "#/components/schemas/OpenRouterModel", + "title": "OpenRouterModel" + }, + { + "$ref": "#/components/schemas/PerplexityAIModel", + "title": "PerplexityAIModel" + }, + { + "$ref": "#/components/schemas/TogetherAIModel", + "title": "TogetherAIModel" } ] }, @@ -6096,6 +5995,10 @@ "$ref": "#/components/schemas/AzureVoice", "title": "AzureVoice" }, + { + "$ref": "#/components/schemas/CartesiaVoice", + "title": "CartesiaVoice" + }, { "$ref": "#/components/schemas/DeepgramVoice", "title": "DeepgramVoice" @@ -6123,24 +6026,14 @@ { "$ref": "#/components/schemas/RimeAIVoice", "title": "RimeAIVoice" - }, - { - "$ref": "#/components/schemas/CartesiaVoice", - "title": "CartesiaVoice" } ], - "default": { - "provider": "playht", - "voiceId": "jennifer" - } + "default": { "provider": "playht", "voiceId": "jennifer" } }, "firstMessageMode": { "type": "string", "description": "This is the mode for the first message. Default is 'assistant-speaks-first'.\n\nSpecify 'assistant-waits-for-user' to have the assistant wait for the user to speak first.", - "enum": [ - "assistant-speaks-first", - "assistant-waits-for-user" - ], + "enum": ["assistant-speaks-first", "assistant-waits-for-user"], "example": "assistant-speaks-first" }, "recordingEnabled": { @@ -6155,76 +6048,97 @@ }, "clientMessages": { "type": "array", - "description": "These are the messages that will be sent to the Client SDKs. Default is ['transcript', 'hang', 'tool-calls', 'speech-update', 'metadata', 'conversation-update']", "enum": [ - "status-update", - "speech-update", - "transcript", - "hang", + "conversation-update", "function-call", - "tool-calls", + "function-call-result", + "hang", "metadata", - "conversation-update", "model-output", + "speech-update", + "status-update", + "transcript", + "tool-calls", + "tool-calls-result", + "user-interrupted", "voice-input" ], "example": [ - "transcript", + "conversation-update", + "function-call", "hang", - "tool-calls", + "model-output", "speech-update", - "metadata", - "conversation-update" + "status-update", + "transcript", + "tool-calls", + "user-interrupted", + "voice-input" ], + "description": "These are the messages that will be sent to your Client SDKs. Default is conversation-update,function-call,hang,model-output,speech-update,status-update,transcript,tool-calls,user-interrupted,voice-input. You can check the shape of the messages in ClientMessage schema.", "items": { "type": "string", "enum": [ - "status-update", - "speech-update", - "transcript", - "hang", + "conversation-update", "function-call", - "tool-calls", + "function-call-result", + "hang", "metadata", - "conversation-update", "model-output", + "speech-update", + "status-update", + "transcript", + "tool-calls", + "tool-calls-result", + "user-interrupted", "voice-input" ] } }, "serverMessages": { "type": "array", - "description": "These are the messages that will be sent to your Server URL. Default is ['end-of-call-report', 'status-update', 'hang', 'tool-calls']", "enum": [ + "conversation-update", + "end-of-call-report", + "function-call", + "hang", + "model-output", + "phone-call-control", + "speech-update", "status-update", "transcript", - "hang", - "function-call", "tool-calls", - "end-of-call-report", - "conversation-update", - "phone-call-control", - "model-output", + "transfer-destination-request", + "user-interrupted", "voice-input" ], "example": [ + "conversation-update", "end-of-call-report", - "status-update", + "function-call", "hang", - "tool-calls" + "speech-update", + "status-update", + "tool-calls", + "transfer-destination-request", + "user-interrupted" ], + "description": "These are the messages that will be sent to your Server URL. Default is conversation-update,end-of-call-report,function-call,hang,speech-update,status-update,tool-calls,transfer-destination-request,user-interrupted. You can check the shape of the messages in ServerMessage schema.", "items": { "type": "string", "enum": [ + "conversation-update", + "end-of-call-report", + "function-call", + "hang", + "model-output", + "phone-call-control", + "speech-update", "status-update", "transcript", - "hang", - "function-call", "tool-calls", - "end-of-call-report", - "conversation-update", - "phone-call-control", - "model-output", + "transfer-destination-request", + "user-interrupted", "voice-input" ] } @@ -6267,21 +6181,23 @@ "backgroundSound": { "type": "string", "description": "This is the background sound in the call. Default for phone calls is 'office' and default for web calls is 'off'.", - "enum": [ - "off", - "office" - ], + "enum": ["off", "office"], "example": "office" }, "backchannelingEnabled": { "type": "boolean", "description": "This determines whether the model says 'mhmm', 'ahem' etc. while user is speaking.\n\nDefault `false` while in beta.", - "example": true + "example": false + }, + "backgroundDenoisingEnabled": { + "type": "boolean", + "description": "This enables filtering of noise and background speech while the user is talking.\n\nDefault `false` while in beta.", + "example": false }, "name": { "type": "string", - "description": "This is the name of the assistant.\nThis is only required to transfer calls between assistants.", - "maxLength": 100 + "description": "This is the name of the assistant.\n\nThis is required when you want to transfer between assistants in a call.", + "maxLength": 40 }, "firstMessage": { "type": "string", @@ -6291,9 +6207,7 @@ "voicemailDetection": { "description": "These are the settings to configure or disable voicemail detection.", "allOf": [ - { - "$ref": "#/components/schemas/TwilioVoicemailDetection" - } + { "$ref": "#/components/schemas/TwilioVoicemailDetection" } ] }, "voicemailMessage": { @@ -6309,11 +6223,7 @@ "endCallPhrases": { "description": "This list contains phrases that, if spoken by the assistant, will trigger the call to be hung up. Case insensitive.", "type": "array", - "items": { - "type": "string", - "maxLength": 35, - "minLength": 2 - } + "items": { "type": "string", "maxLength": 35, "minLength": 2 } }, "metadata": { "type": "object", @@ -6321,14 +6231,19 @@ }, "serverUrl": { "type": "string", - "description": "This is the URL Vapi will communicate with via HTTP GET and POST Requests. This is used for retrieving context, function calling, and end-of-call reports.\n\nAll requests will be sent with the call object among other things relevant to that message. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: function.serverUrl \u003E assistant.serverUrl \u003E phoneNumber.serverUrl \u003E org.serverUrl" + "description": "This is the URL Vapi will communicate with via HTTP GET and POST Requests. This is used for retrieving context, function calling, and end-of-call reports.\n\nAll requests will be sent with the call object among other things relevant to that message. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: function.serverUrl > assistant.serverUrl > phoneNumber.serverUrl > org.serverUrl" }, "serverUrlSecret": { "type": "string", "description": "This is the secret you can set that Vapi will send with every request to your server. Will be sent as a header called x-vapi-secret.\n\nSame precedence logic as serverUrl." }, "analysisPlan": { - "$ref": "#/components/schemas/AnalysisPlan" + "description": "This is the plan for analysis of assistant's calls. Stored in `call.analysis`.", + "allOf": [{ "$ref": "#/components/schemas/AnalysisPlan" }] + }, + "artifactPlan": { + "description": "This is the plan for artifacts generated during assistant's calls. Stored in `call.artifact`.", + "allOf": [{ "$ref": "#/components/schemas/ArtifactPlan" }] } } }, @@ -6351,25 +6266,17 @@ "model": { "description": "These are the options for the assistant's LLM.", "oneOf": [ - { - "$ref": "#/components/schemas/OpenAIModel", - "title": "OpenAIModel" - }, - { - "$ref": "#/components/schemas/TogetherAIModel", - "title": "TogetherAIModel" - }, { "$ref": "#/components/schemas/AnyscaleModel", "title": "AnyscaleModel" }, { - "$ref": "#/components/schemas/OpenRouterModel", - "title": "OpenRouterModel" + "$ref": "#/components/schemas/AnthropicModel", + "title": "AnthropicModel" }, { - "$ref": "#/components/schemas/PerplexityAIModel", - "title": "PerplexityAIModel" + "$ref": "#/components/schemas/CustomLLMModel", + "title": "CustomLLMModel" }, { "$ref": "#/components/schemas/DeepInfraModel", @@ -6380,12 +6287,20 @@ "title": "GroqModel" }, { - "$ref": "#/components/schemas/AnthropicModel", - "title": "AnthropicModel" + "$ref": "#/components/schemas/OpenAIModel", + "title": "OpenAIModel" }, { - "$ref": "#/components/schemas/CustomLLMModel", - "title": "CustomLLMModel" + "$ref": "#/components/schemas/OpenRouterModel", + "title": "OpenRouterModel" + }, + { + "$ref": "#/components/schemas/PerplexityAIModel", + "title": "PerplexityAIModel" + }, + { + "$ref": "#/components/schemas/TogetherAIModel", + "title": "TogetherAIModel" } ] }, @@ -6396,6 +6311,10 @@ "$ref": "#/components/schemas/AzureVoice", "title": "AzureVoice" }, + { + "$ref": "#/components/schemas/CartesiaVoice", + "title": "CartesiaVoice" + }, { "$ref": "#/components/schemas/DeepgramVoice", "title": "DeepgramVoice" @@ -6423,24 +6342,14 @@ { "$ref": "#/components/schemas/RimeAIVoice", "title": "RimeAIVoice" - }, - { - "$ref": "#/components/schemas/CartesiaVoice", - "title": "CartesiaVoice" } ], - "default": { - "provider": "playht", - "voiceId": "jennifer" - } + "default": { "provider": "playht", "voiceId": "jennifer" } }, "firstMessageMode": { "type": "string", "description": "This is the mode for the first message. Default is 'assistant-speaks-first'.\n\nSpecify 'assistant-waits-for-user' to have the assistant wait for the user to speak first.", - "enum": [ - "assistant-speaks-first", - "assistant-waits-for-user" - ], + "enum": ["assistant-speaks-first", "assistant-waits-for-user"], "example": "assistant-speaks-first" }, "recordingEnabled": { @@ -6455,76 +6364,97 @@ }, "clientMessages": { "type": "array", - "description": "These are the messages that will be sent to the Client SDKs. Default is ['transcript', 'hang', 'tool-calls', 'speech-update', 'metadata', 'conversation-update']", "enum": [ - "status-update", - "speech-update", - "transcript", - "hang", + "conversation-update", "function-call", - "tool-calls", + "function-call-result", + "hang", "metadata", - "conversation-update", "model-output", + "speech-update", + "status-update", + "transcript", + "tool-calls", + "tool-calls-result", + "user-interrupted", "voice-input" ], "example": [ - "transcript", + "conversation-update", + "function-call", "hang", - "tool-calls", + "model-output", "speech-update", - "metadata", - "conversation-update" + "status-update", + "transcript", + "tool-calls", + "user-interrupted", + "voice-input" ], + "description": "These are the messages that will be sent to your Client SDKs. Default is conversation-update,function-call,hang,model-output,speech-update,status-update,transcript,tool-calls,user-interrupted,voice-input. You can check the shape of the messages in ClientMessage schema.", "items": { "type": "string", "enum": [ - "status-update", - "speech-update", - "transcript", - "hang", + "conversation-update", "function-call", - "tool-calls", + "function-call-result", + "hang", "metadata", - "conversation-update", "model-output", + "speech-update", + "status-update", + "transcript", + "tool-calls", + "tool-calls-result", + "user-interrupted", "voice-input" ] } }, "serverMessages": { "type": "array", - "description": "These are the messages that will be sent to your Server URL. Default is ['end-of-call-report', 'status-update', 'hang', 'tool-calls']", "enum": [ + "conversation-update", + "end-of-call-report", + "function-call", + "hang", + "model-output", + "phone-call-control", + "speech-update", "status-update", "transcript", - "hang", - "function-call", "tool-calls", - "end-of-call-report", - "conversation-update", - "phone-call-control", - "model-output", + "transfer-destination-request", + "user-interrupted", "voice-input" ], "example": [ + "conversation-update", "end-of-call-report", - "status-update", + "function-call", "hang", - "tool-calls" + "speech-update", + "status-update", + "tool-calls", + "transfer-destination-request", + "user-interrupted" ], + "description": "These are the messages that will be sent to your Server URL. Default is conversation-update,end-of-call-report,function-call,hang,speech-update,status-update,tool-calls,transfer-destination-request,user-interrupted. You can check the shape of the messages in ServerMessage schema.", "items": { "type": "string", "enum": [ + "conversation-update", + "end-of-call-report", + "function-call", + "hang", + "model-output", + "phone-call-control", + "speech-update", "status-update", "transcript", - "hang", - "function-call", "tool-calls", - "end-of-call-report", - "conversation-update", - "phone-call-control", - "model-output", + "transfer-destination-request", + "user-interrupted", "voice-input" ] } @@ -6567,21 +6497,24 @@ "backgroundSound": { "type": "string", "description": "This is the background sound in the call. Default for phone calls is 'office' and default for web calls is 'off'.", - "enum": [ - "off", - "office" - ], + "enum": ["off", "office"], "example": "office" }, "backchannelingEnabled": { "type": "boolean", "description": "This determines whether the model says 'mhmm', 'ahem' etc. while user is speaking.\n\nDefault `false` while in beta.", - "example": true + "example": false + }, + "backgroundDenoisingEnabled": { + "type": "boolean", + "description": "This enables filtering of noise and background speech while the user is talking.\n\nDefault `false` while in beta.", + "example": false }, + "isServerUrlSecretSet": { "type": "object" }, "name": { "type": "string", - "description": "This is the name of the assistant.\nThis is only required to transfer calls between assistants.", - "maxLength": 100 + "description": "This is the name of the assistant.\n\nThis is required when you want to transfer between assistants in a call.", + "maxLength": 40 }, "firstMessage": { "type": "string", @@ -6591,9 +6524,7 @@ "voicemailDetection": { "description": "These are the settings to configure or disable voicemail detection.", "allOf": [ - { - "$ref": "#/components/schemas/TwilioVoicemailDetection" - } + { "$ref": "#/components/schemas/TwilioVoicemailDetection" } ] }, "voicemailMessage": { @@ -6609,11 +6540,7 @@ "endCallPhrases": { "description": "This list contains phrases that, if spoken by the assistant, will trigger the call to be hung up. Case insensitive.", "type": "array", - "items": { - "type": "string", - "maxLength": 35, - "minLength": 2 - } + "items": { "type": "string", "maxLength": 35, "minLength": 2 } }, "metadata": { "type": "object", @@ -6621,14 +6548,19 @@ }, "serverUrl": { "type": "string", - "description": "This is the URL Vapi will communicate with via HTTP GET and POST Requests. This is used for retrieving context, function calling, and end-of-call reports.\n\nAll requests will be sent with the call object among other things relevant to that message. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: function.serverUrl \u003E assistant.serverUrl \u003E phoneNumber.serverUrl \u003E org.serverUrl" + "description": "This is the URL Vapi will communicate with via HTTP GET and POST Requests. This is used for retrieving context, function calling, and end-of-call reports.\n\nAll requests will be sent with the call object among other things relevant to that message. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: function.serverUrl > assistant.serverUrl > phoneNumber.serverUrl > org.serverUrl" }, "serverUrlSecret": { "type": "string", "description": "This is the secret you can set that Vapi will send with every request to your server. Will be sent as a header called x-vapi-secret.\n\nSame precedence logic as serverUrl." }, "analysisPlan": { - "$ref": "#/components/schemas/AnalysisPlan" + "description": "This is the plan for analysis of assistant's calls. Stored in `call.analysis`.", + "allOf": [{ "$ref": "#/components/schemas/AnalysisPlan" }] + }, + "artifactPlan": { + "description": "This is the plan for artifacts generated during assistant's calls. Stored in `call.artifact`.", + "allOf": [{ "$ref": "#/components/schemas/ArtifactPlan" }] }, "id": { "type": "string", @@ -6650,6 +6582,7 @@ } }, "required": [ + "isServerUrlSecretSet", "id", "orgId", "createdAt", @@ -6675,25 +6608,17 @@ "model": { "description": "These are the options for the assistant's LLM.", "oneOf": [ - { - "$ref": "#/components/schemas/OpenAIModel", - "title": "OpenAIModel" - }, - { - "$ref": "#/components/schemas/TogetherAIModel", - "title": "TogetherAIModel" - }, { "$ref": "#/components/schemas/AnyscaleModel", "title": "AnyscaleModel" }, { - "$ref": "#/components/schemas/OpenRouterModel", - "title": "OpenRouterModel" + "$ref": "#/components/schemas/AnthropicModel", + "title": "AnthropicModel" }, { - "$ref": "#/components/schemas/PerplexityAIModel", - "title": "PerplexityAIModel" + "$ref": "#/components/schemas/CustomLLMModel", + "title": "CustomLLMModel" }, { "$ref": "#/components/schemas/DeepInfraModel", @@ -6704,12 +6629,20 @@ "title": "GroqModel" }, { - "$ref": "#/components/schemas/AnthropicModel", - "title": "AnthropicModel" + "$ref": "#/components/schemas/OpenAIModel", + "title": "OpenAIModel" }, { - "$ref": "#/components/schemas/CustomLLMModel", - "title": "CustomLLMModel" + "$ref": "#/components/schemas/OpenRouterModel", + "title": "OpenRouterModel" + }, + { + "$ref": "#/components/schemas/PerplexityAIModel", + "title": "PerplexityAIModel" + }, + { + "$ref": "#/components/schemas/TogetherAIModel", + "title": "TogetherAIModel" } ] }, @@ -6720,6 +6653,10 @@ "$ref": "#/components/schemas/AzureVoice", "title": "AzureVoice" }, + { + "$ref": "#/components/schemas/CartesiaVoice", + "title": "CartesiaVoice" + }, { "$ref": "#/components/schemas/DeepgramVoice", "title": "DeepgramVoice" @@ -6747,24 +6684,14 @@ { "$ref": "#/components/schemas/RimeAIVoice", "title": "RimeAIVoice" - }, - { - "$ref": "#/components/schemas/CartesiaVoice", - "title": "CartesiaVoice" } ], - "default": { - "provider": "playht", - "voiceId": "jennifer" - } + "default": { "provider": "playht", "voiceId": "jennifer" } }, "firstMessageMode": { "type": "string", "description": "This is the mode for the first message. Default is 'assistant-speaks-first'.\n\nSpecify 'assistant-waits-for-user' to have the assistant wait for the user to speak first.", - "enum": [ - "assistant-speaks-first", - "assistant-waits-for-user" - ], + "enum": ["assistant-speaks-first", "assistant-waits-for-user"], "example": "assistant-speaks-first" }, "recordingEnabled": { @@ -6779,76 +6706,97 @@ }, "clientMessages": { "type": "array", - "description": "These are the messages that will be sent to the Client SDKs. Default is ['transcript', 'hang', 'tool-calls', 'speech-update', 'metadata', 'conversation-update']", "enum": [ - "status-update", - "speech-update", - "transcript", - "hang", + "conversation-update", "function-call", - "tool-calls", + "function-call-result", + "hang", "metadata", - "conversation-update", "model-output", + "speech-update", + "status-update", + "transcript", + "tool-calls", + "tool-calls-result", + "user-interrupted", "voice-input" ], "example": [ - "transcript", + "conversation-update", + "function-call", "hang", - "tool-calls", + "model-output", "speech-update", - "metadata", - "conversation-update" + "status-update", + "transcript", + "tool-calls", + "user-interrupted", + "voice-input" ], + "description": "These are the messages that will be sent to your Client SDKs. Default is conversation-update,function-call,hang,model-output,speech-update,status-update,transcript,tool-calls,user-interrupted,voice-input. You can check the shape of the messages in ClientMessage schema.", "items": { "type": "string", "enum": [ - "status-update", - "speech-update", - "transcript", - "hang", + "conversation-update", "function-call", - "tool-calls", + "function-call-result", + "hang", "metadata", - "conversation-update", "model-output", + "speech-update", + "status-update", + "transcript", + "tool-calls", + "tool-calls-result", + "user-interrupted", "voice-input" ] } }, "serverMessages": { "type": "array", - "description": "These are the messages that will be sent to your Server URL. Default is ['end-of-call-report', 'status-update', 'hang', 'tool-calls']", "enum": [ + "conversation-update", + "end-of-call-report", + "function-call", + "hang", + "model-output", + "phone-call-control", + "speech-update", "status-update", "transcript", - "hang", - "function-call", "tool-calls", - "end-of-call-report", - "conversation-update", - "phone-call-control", - "model-output", + "transfer-destination-request", + "user-interrupted", "voice-input" ], "example": [ + "conversation-update", "end-of-call-report", - "status-update", + "function-call", "hang", - "tool-calls" + "speech-update", + "status-update", + "tool-calls", + "transfer-destination-request", + "user-interrupted" ], + "description": "These are the messages that will be sent to your Server URL. Default is conversation-update,end-of-call-report,function-call,hang,speech-update,status-update,tool-calls,transfer-destination-request,user-interrupted. You can check the shape of the messages in ServerMessage schema.", "items": { "type": "string", "enum": [ + "conversation-update", + "end-of-call-report", + "function-call", + "hang", + "model-output", + "phone-call-control", + "speech-update", "status-update", "transcript", - "hang", - "function-call", "tool-calls", - "end-of-call-report", - "conversation-update", - "phone-call-control", - "model-output", + "transfer-destination-request", + "user-interrupted", "voice-input" ] } @@ -6891,21 +6839,23 @@ "backgroundSound": { "type": "string", "description": "This is the background sound in the call. Default for phone calls is 'office' and default for web calls is 'off'.", - "enum": [ - "off", - "office" - ], + "enum": ["off", "office"], "example": "office" }, "backchannelingEnabled": { "type": "boolean", "description": "This determines whether the model says 'mhmm', 'ahem' etc. while user is speaking.\n\nDefault `false` while in beta.", - "example": true + "example": false + }, + "backgroundDenoisingEnabled": { + "type": "boolean", + "description": "This enables filtering of noise and background speech while the user is talking.\n\nDefault `false` while in beta.", + "example": false }, "name": { "type": "string", - "description": "This is the name of the assistant.\nThis is only required to transfer calls between assistants.", - "maxLength": 100 + "description": "This is the name of the assistant.\n\nThis is required when you want to transfer between assistants in a call.", + "maxLength": 40 }, "firstMessage": { "type": "string", @@ -6915,9 +6865,7 @@ "voicemailDetection": { "description": "These are the settings to configure or disable voicemail detection.", "allOf": [ - { - "$ref": "#/components/schemas/TwilioVoicemailDetection" - } + { "$ref": "#/components/schemas/TwilioVoicemailDetection" } ] }, "voicemailMessage": { @@ -6933,11 +6881,7 @@ "endCallPhrases": { "description": "This list contains phrases that, if spoken by the assistant, will trigger the call to be hung up. Case insensitive.", "type": "array", - "items": { - "type": "string", - "maxLength": 35, - "minLength": 2 - } + "items": { "type": "string", "maxLength": 35, "minLength": 2 } }, "metadata": { "type": "object", @@ -6945,14 +6889,19 @@ }, "serverUrl": { "type": "string", - "description": "This is the URL Vapi will communicate with via HTTP GET and POST Requests. This is used for retrieving context, function calling, and end-of-call reports.\n\nAll requests will be sent with the call object among other things relevant to that message. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: function.serverUrl \u003E assistant.serverUrl \u003E phoneNumber.serverUrl \u003E org.serverUrl" + "description": "This is the URL Vapi will communicate with via HTTP GET and POST Requests. This is used for retrieving context, function calling, and end-of-call reports.\n\nAll requests will be sent with the call object among other things relevant to that message. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: function.serverUrl > assistant.serverUrl > phoneNumber.serverUrl > org.serverUrl" }, "serverUrlSecret": { "type": "string", "description": "This is the secret you can set that Vapi will send with every request to your server. Will be sent as a header called x-vapi-secret.\n\nSame precedence logic as serverUrl." }, "analysisPlan": { - "$ref": "#/components/schemas/AnalysisPlan" + "description": "This is the plan for analysis of assistant's calls. Stored in `call.analysis`.", + "allOf": [{ "$ref": "#/components/schemas/AnalysisPlan" }] + }, + "artifactPlan": { + "description": "This is the plan for artifacts generated during assistant's calls. Stored in `call.artifact`.", + "allOf": [{ "$ref": "#/components/schemas/ArtifactPlan" }] } } }, @@ -7038,11 +6987,16 @@ }, "analysisCostBreakdown": { "description": "This is the cost of the analysis.", - "allOf": [ - { - "$ref": "#/components/schemas/AnalysisCostBreakdown" - } - ] + "allOf": [{ "$ref": "#/components/schemas/AnalysisCostBreakdown" }] + } + } + }, + "Artifact": { + "type": "object", + "properties": { + "videoRecordingUrl": { + "type": "string", + "description": "This is video recording url for the call. Enable by setting `assistant.artifactPlan.videoRecordingEnabled`." } } }, @@ -7054,7 +7008,7 @@ "description": "This is the summary of the call. Customize by setting `assistant.analysisPlan.summaryPrompt`." }, "structuredData": { - "type": "string", + "type": "object", "description": "This is the structured data extracted from the call. Customize by setting `assistant.analysisPlan.structuredDataPrompt` and/or `assistant.analysisPlan.structuredDataSchema`." }, "successEvaluation": { @@ -7063,75 +7017,7 @@ } } }, - "PhoneCallTwilioDetails": { - "type": "object", - "properties": { - "statusCallbackEvent": { - "type": "string", - "enum": [ - "initiated", - "ringing", - "answered", - "completed" - ] - }, - "machineDetection": { - "type": "string", - "enum": [ - "Enable", - "DetectMessageEnd" - ] - }, - "to": { - "type": "string" - }, - "from": { - "type": "string" - }, - "twiml": { - "type": "string" - }, - "statusCallback": { - "type": "string" - }, - "machineDetectionTimeout": { - "type": "number", - "description": "The number of seconds that we should attempt to detect an answering machine before timing out and sending a voice request with `AnsweredBy` of `unknown`. The default timeout is 30 seconds." - }, - "machineDetectionSpeechThreshold": { - "type": "number", - "description": "The number of milliseconds that is used as the measuring stick for the length of the speech activity, where durations lower than this value will be interpreted as a human and longer than this value as a machine. Possible Values: 1000-6000. Default: 2400.", - "minimum": 1000, - "maximum": 6000 - }, - "machineDetectionSpeechEndThreshold": { - "type": "number", - "description": "The number of milliseconds of silence after speech activity at which point the speech activity is considered complete. Possible Values: 500-5000. Default: 1200.", - "minimum": 500, - "maximum": 5000 - }, - "machineDetectionSilenceTimeout": { - "type": "number", - "description": "The number of milliseconds of initial silence after which an `unknown` AnsweredBy result will be returned. Possible Values: 2000-10000. Default: 5000.", - "minimum": 2000, - "maximum": 10000 - }, - "asyncAmd": { - "type": "string" - }, - "asyncAmdStatusCallback": { - "type": "string" - }, - "record": { - "type": "boolean" - } - }, - "required": [ - "to", - "from" - ] - }, - "OverrideAssistantDTO": { + "AssistantOverrides": { "type": "object", "properties": { "transcriber": { @@ -7150,25 +7036,17 @@ "model": { "description": "These are the options for the assistant's LLM.", "oneOf": [ - { - "$ref": "#/components/schemas/OpenAIModel", - "title": "OpenAIModel" - }, - { - "$ref": "#/components/schemas/TogetherAIModel", - "title": "TogetherAIModel" - }, { "$ref": "#/components/schemas/AnyscaleModel", "title": "AnyscaleModel" }, { - "$ref": "#/components/schemas/OpenRouterModel", - "title": "OpenRouterModel" + "$ref": "#/components/schemas/AnthropicModel", + "title": "AnthropicModel" }, { - "$ref": "#/components/schemas/PerplexityAIModel", - "title": "PerplexityAIModel" + "$ref": "#/components/schemas/CustomLLMModel", + "title": "CustomLLMModel" }, { "$ref": "#/components/schemas/DeepInfraModel", @@ -7179,12 +7057,20 @@ "title": "GroqModel" }, { - "$ref": "#/components/schemas/AnthropicModel", - "title": "AnthropicModel" + "$ref": "#/components/schemas/OpenAIModel", + "title": "OpenAIModel" }, { - "$ref": "#/components/schemas/CustomLLMModel", - "title": "CustomLLMModel" + "$ref": "#/components/schemas/OpenRouterModel", + "title": "OpenRouterModel" + }, + { + "$ref": "#/components/schemas/PerplexityAIModel", + "title": "PerplexityAIModel" + }, + { + "$ref": "#/components/schemas/TogetherAIModel", + "title": "TogetherAIModel" } ] }, @@ -7195,6 +7081,10 @@ "$ref": "#/components/schemas/AzureVoice", "title": "AzureVoice" }, + { + "$ref": "#/components/schemas/CartesiaVoice", + "title": "CartesiaVoice" + }, { "$ref": "#/components/schemas/DeepgramVoice", "title": "DeepgramVoice" @@ -7222,24 +7112,14 @@ { "$ref": "#/components/schemas/RimeAIVoice", "title": "RimeAIVoice" - }, - { - "$ref": "#/components/schemas/CartesiaVoice", - "title": "CartesiaVoice" } ], - "default": { - "provider": "playht", - "voiceId": "jennifer" - } + "default": { "provider": "playht", "voiceId": "jennifer" } }, "firstMessageMode": { "type": "string", "description": "This is the mode for the first message. Default is 'assistant-speaks-first'.\n\nSpecify 'assistant-waits-for-user' to have the assistant wait for the user to speak first.", - "enum": [ - "assistant-speaks-first", - "assistant-waits-for-user" - ], + "enum": ["assistant-speaks-first", "assistant-waits-for-user"], "example": "assistant-speaks-first" }, "recordingEnabled": { @@ -7254,76 +7134,97 @@ }, "clientMessages": { "type": "array", - "description": "These are the messages that will be sent to the Client SDKs. Default is ['transcript', 'hang', 'tool-calls', 'speech-update', 'metadata', 'conversation-update']", "enum": [ - "status-update", - "speech-update", - "transcript", - "hang", + "conversation-update", "function-call", - "tool-calls", + "function-call-result", + "hang", "metadata", - "conversation-update", "model-output", + "speech-update", + "status-update", + "transcript", + "tool-calls", + "tool-calls-result", + "user-interrupted", "voice-input" ], "example": [ - "transcript", + "conversation-update", + "function-call", "hang", - "tool-calls", + "model-output", "speech-update", - "metadata", - "conversation-update" + "status-update", + "transcript", + "tool-calls", + "user-interrupted", + "voice-input" ], + "description": "These are the messages that will be sent to your Client SDKs. Default is conversation-update,function-call,hang,model-output,speech-update,status-update,transcript,tool-calls,user-interrupted,voice-input. You can check the shape of the messages in ClientMessage schema.", "items": { "type": "string", "enum": [ - "status-update", - "speech-update", - "transcript", - "hang", + "conversation-update", "function-call", - "tool-calls", + "function-call-result", + "hang", "metadata", - "conversation-update", "model-output", + "speech-update", + "status-update", + "transcript", + "tool-calls", + "tool-calls-result", + "user-interrupted", "voice-input" ] } }, "serverMessages": { "type": "array", - "description": "These are the messages that will be sent to your Server URL. Default is ['end-of-call-report', 'status-update', 'hang', 'tool-calls']", "enum": [ + "conversation-update", + "end-of-call-report", + "function-call", + "hang", + "model-output", + "phone-call-control", + "speech-update", "status-update", "transcript", - "hang", - "function-call", "tool-calls", - "end-of-call-report", - "conversation-update", - "phone-call-control", - "model-output", + "transfer-destination-request", + "user-interrupted", "voice-input" ], "example": [ + "conversation-update", "end-of-call-report", - "status-update", + "function-call", "hang", - "tool-calls" + "speech-update", + "status-update", + "tool-calls", + "transfer-destination-request", + "user-interrupted" ], + "description": "These are the messages that will be sent to your Server URL. Default is conversation-update,end-of-call-report,function-call,hang,speech-update,status-update,tool-calls,transfer-destination-request,user-interrupted. You can check the shape of the messages in ServerMessage schema.", "items": { "type": "string", "enum": [ + "conversation-update", + "end-of-call-report", + "function-call", + "hang", + "model-output", + "phone-call-control", + "speech-update", "status-update", "transcript", - "hang", - "function-call", "tool-calls", - "end-of-call-report", - "conversation-update", - "phone-call-control", - "model-output", + "transfer-destination-request", + "user-interrupted", "voice-input" ] } @@ -7366,16 +7267,18 @@ "backgroundSound": { "type": "string", "description": "This is the background sound in the call. Default for phone calls is 'office' and default for web calls is 'off'.", - "enum": [ - "off", - "office" - ], + "enum": ["off", "office"], "example": "office" }, "backchannelingEnabled": { "type": "boolean", "description": "This determines whether the model says 'mhmm', 'ahem' etc. while user is speaking.\n\nDefault `false` while in beta.", - "example": true + "example": false + }, + "backgroundDenoisingEnabled": { + "type": "boolean", + "description": "This enables filtering of noise and background speech while the user is talking.\n\nDefault `false` while in beta.", + "example": false }, "variableValues": { "type": "object", @@ -7383,8 +7286,8 @@ }, "name": { "type": "string", - "description": "This is the name of the assistant.\nThis is only required to transfer calls between assistants.", - "maxLength": 100 + "description": "This is the name of the assistant.\n\nThis is required when you want to transfer between assistants in a call.", + "maxLength": 40 }, "firstMessage": { "type": "string", @@ -7394,9 +7297,7 @@ "voicemailDetection": { "description": "These are the settings to configure or disable voicemail detection.", "allOf": [ - { - "$ref": "#/components/schemas/TwilioVoicemailDetection" - } + { "$ref": "#/components/schemas/TwilioVoicemailDetection" } ] }, "voicemailMessage": { @@ -7412,11 +7313,7 @@ "endCallPhrases": { "description": "This list contains phrases that, if spoken by the assistant, will trigger the call to be hung up. Case insensitive.", "type": "array", - "items": { - "type": "string", - "maxLength": 35, - "minLength": 2 - } + "items": { "type": "string", "maxLength": 35, "minLength": 2 } }, "metadata": { "type": "object", @@ -7424,14 +7321,19 @@ }, "serverUrl": { "type": "string", - "description": "This is the URL Vapi will communicate with via HTTP GET and POST Requests. This is used for retrieving context, function calling, and end-of-call reports.\n\nAll requests will be sent with the call object among other things relevant to that message. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: function.serverUrl \u003E assistant.serverUrl \u003E phoneNumber.serverUrl \u003E org.serverUrl" + "description": "This is the URL Vapi will communicate with via HTTP GET and POST Requests. This is used for retrieving context, function calling, and end-of-call reports.\n\nAll requests will be sent with the call object among other things relevant to that message. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: function.serverUrl > assistant.serverUrl > phoneNumber.serverUrl > org.serverUrl" }, "serverUrlSecret": { "type": "string", "description": "This is the secret you can set that Vapi will send with every request to your server. Will be sent as a header called x-vapi-secret.\n\nSame precedence logic as serverUrl." }, "analysisPlan": { - "$ref": "#/components/schemas/AnalysisPlan" + "description": "This is the plan for analysis of assistant's calls. Stored in `call.analysis`.", + "allOf": [{ "$ref": "#/components/schemas/AnalysisPlan" }] + }, + "artifactPlan": { + "description": "This is the plan for artifacts generated during assistant's calls. Stored in `call.artifact`.", + "allOf": [{ "$ref": "#/components/schemas/ArtifactPlan" }] } } }, @@ -7445,19 +7347,11 @@ }, "assistant": { "description": "This is the assistant that will be used for the call. To use an existing assistant, use `assistantId` instead.", - "allOf": [ - { - "$ref": "#/components/schemas/CreateAssistantDTO" - } - ] + "allOf": [{ "$ref": "#/components/schemas/CreateAssistantDTO" }] }, "assistantOverrides": { "description": "Overrides for a single assistant's settings and template variables.", - "allOf": [ - { - "$ref": "#/components/schemas/OverrideAssistantDTO" - } - ] + "allOf": [{ "$ref": "#/components/schemas/AssistantOverrides" }] }, "assistantDestinations": { "description": "These are the others assistants that this assistant can transfer to.\nThese destinations are in addition to destinations that already exist in the assistant's TransferCall tool.", @@ -7474,33 +7368,10 @@ "members": { "description": "The list of assistant members in the squad. By default, the call will start\nwith the first assistant supplied in the list.", "type": "array", - "items": { - "$ref": "#/components/schemas/SquadMemberDTO" - } + "items": { "$ref": "#/components/schemas/SquadMemberDTO" } } }, - "required": [ - "members" - ] - }, - "CreateCustomerDTO": { - "type": "object", - "properties": { - "number": { - "type": "string", - "description": "This is the number of the customer." - }, - "name": { - "type": "string", - "description": "This is the name of the customer. This is just for your own reference.", - "maxLength": 40 - }, - "extension": { - "type": "string", - "description": "This is the extension that will be dialed after the call is answered.", - "maxLength": 30 - } - } + "required": ["members"] }, "ImportTwilioPhoneNumberDTO": { "type": "object", @@ -7529,18 +7400,33 @@ }, "serverUrl": { "type": "string", - "description": "This is the server URL that will be used to handle this phone number.\n\nAll requests will be sent with the call object among other things relevant to that message. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org. Order of precedence: function.serverUrl \u003E assistant.serverUrl \u003E phoneNumber.serverUrl \u003E org.serverUrl." + "description": "This is the server URL that will be used to handle this phone number.\n\nAll requests will be sent with the call object among other things relevant to that message. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org. Order of precedence: function.serverUrl > assistant.serverUrl > phoneNumber.serverUrl > org.serverUrl." }, "serverUrlSecret": { "type": "string", "description": "This is the secret you can set that Vapi will send with every request to your server. Will be sent as a header called x-vapi-secret.\n\nSame precendence logic as serverUrl." } }, - "required": [ - "twilioPhoneNumber", - "twilioAccountSid", - "twilioAuthToken" - ] + "required": ["twilioPhoneNumber", "twilioAccountSid", "twilioAuthToken"] + }, + "CreateCustomerDTO": { + "type": "object", + "properties": { + "number": { + "type": "string", + "description": "This is the number of the customer." + }, + "name": { + "type": "string", + "description": "This is the name of the customer. This is just for your own reference.", + "maxLength": 40 + }, + "extension": { + "type": "string", + "description": "This is the extension that will be dialed after the call is answered.", + "maxLength": 30 + } + } }, "Call": { "type": "object", @@ -7548,38 +7434,58 @@ "type": { "type": "string", "description": "This is the type of call.", - "enum": [ - "inboundPhoneCall", - "outboundPhoneCall", - "webCall" - ] + "enum": ["inboundPhoneCall", "outboundPhoneCall", "webCall"] + }, + "messages": { + "type": "array", + "description": "These are the messages that were spoken during the call.", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/UserMessage", + "title": "UserMessage" + }, + { + "$ref": "#/components/schemas/SystemMessage", + "title": "SystemMessage" + }, + { + "$ref": "#/components/schemas/BotMessage", + "title": "BotMessage" + }, + { + "$ref": "#/components/schemas/FunctionCallMessage", + "title": "FunctionCallMessage" + }, + { + "$ref": "#/components/schemas/ToolCallMessage", + "title": "ToolCallMessage" + }, + { + "$ref": "#/components/schemas/ToolCallResultMessage", + "title": "ToolCallResultMessage" + }, + { + "$ref": "#/components/schemas/FunctionResultMessage", + "title": "FunctionResultMessage" + } + ] + } }, "phoneCallProvider": { "type": "string", "description": "This is the provider of the call.\n\nOnly relevant for `outboundPhoneCall` and `inboundPhoneCall` type.", - "enum": [ - "twilio", - "vonage" - ] + "enum": ["twilio", "vonage"] }, "phoneCallTransport": { "type": "string", "description": "This is the transport of the phone call.\n\nOnly relevant for `outboundPhoneCall` and `inboundPhoneCall` type.", - "enum": [ - "sip", - "pstn" - ] + "enum": ["sip", "pstn"] }, "status": { "type": "string", "description": "This is the status of the call.", - "enum": [ - "queued", - "ringing", - "in-progress", - "forwarding", - "ended" - ] + "enum": ["queued", "ringing", "in-progress", "forwarding", "ended"] }, "endedReason": { "type": "string", @@ -7627,6 +7533,8 @@ "vapi-error-web-call-worker-setup-failed", "assistant-not-invalid", "assistant-not-provided", + "call-start-error-neither-assistant-nor-server-set", + "assistant-request-failed", "assistant-request-returned-error", "assistant-request-returned-invalid-assistant", "assistant-request-returned-no-assistant", @@ -7698,11 +7606,7 @@ }, "costBreakdown": { "description": "This is the cost of the call in USD.", - "allOf": [ - { - "$ref": "#/components/schemas/CostBreakdown" - } - ] + "allOf": [{ "$ref": "#/components/schemas/CostBreakdown" }] }, "transcript": { "type": "string", @@ -7716,44 +7620,22 @@ "type": "string", "description": "This is the URL of the recording of the call in two channels." }, - "analysis": { - "description": "This is the analysis of the call. Customize the analysis by setting `assistant.analysisPlan`.", - "allOf": [ - { - "$ref": "#/components/schemas/Analysis" - } - ] + "artifact": { + "description": "This stores artifacts of the call. Customize what artifacts are created by configuring `assistant.artifactPlan`.", + "allOf": [{ "$ref": "#/components/schemas/Artifact" }] }, - "messages": { - "description": "These are the messages that were spoken during the call.", - "type": "array", - "items": { - "type": "object" - } + "artifactPlan": { + "description": "This is a copy of assistant artifact plan. This isn't actually stored on the call but rather just returned in POST /call/web to enable artifact creation client side.", + "allOf": [{ "$ref": "#/components/schemas/ArtifactPlan" }] + }, + "analysis": { + "description": "This is the analysis of the call. Customize the analysis by configuring `assistant.analysisPlan`.", + "allOf": [{ "$ref": "#/components/schemas/Analysis" }] }, "phoneCallProviderId": { "type": "string", "description": "The ID of the call as provided by the phone number service. callSid in Twilio. conversationUuid in Vonage.\n\nOnly relevant for `outboundPhoneCall` and `inboundPhoneCall` type." }, - "phoneCallProviderBypassEnabled": { - "type": "boolean", - "description": "If enabled, prevents Vapi from initiating calls directly. Defaults to disabled.\nSuitable for external call handling, such as with Twilio Studio Flow, with integration details provided in `phoneCallProviderDetails`.\n\nOnly relevant for `outboundPhoneCall` and `inboundPhoneCall` types." - }, - "phoneCallProviderDetails": { - "description": "This is the phone call provider details to bridge the assistant into the external call. Only filled if `phoneCallProviderBypassEnabled` is true.\n\nOnly relevant for `outboundPhoneCall` and `inboundPhoneCall` types.", - "allOf": [ - { - "$ref": "#/components/schemas/PhoneCallTwilioDetails" - } - ] - }, - "webCallUrl": { - "type": "string" - }, - "webCallSipUri": { - "type": "string", - "description": "This is the SIP URI of the call that the assistant will join.\n\nOnly relevant for `webCall` type." - }, "forwardedPhoneNumber": { "type": "string", "description": "This is the phone number that the call was forwarded to." @@ -7765,19 +7647,11 @@ }, "assistant": { "description": "This is the assistant that will be used for the call. To use an existing assistant, use `assistantId` instead.", - "allOf": [ - { - "$ref": "#/components/schemas/CreateAssistantDTO" - } - ] + "allOf": [{ "$ref": "#/components/schemas/CreateAssistantDTO" }] }, "assistantOverrides": { "description": "These are the overrides for the `assistant` or `assistantId`'s settings and template variables.", - "allOf": [ - { - "$ref": "#/components/schemas/OverrideAssistantDTO" - } - ] + "allOf": [{ "$ref": "#/components/schemas/AssistantOverrides" }] }, "squadId": { "type": "string", @@ -7785,10 +7659,16 @@ }, "squad": { "description": "This is a squad that will be used for the call. To use an existing squad, use `squadId` instead.", + "allOf": [{ "$ref": "#/components/schemas/CreateSquadDTO" }] + }, + "phoneNumberId": { + "type": "string", + "description": "This is the phone number that will be used for the call. To use a transient number, use `phoneNumber` instead.\n\nOnly relevant for `outboundPhoneCall` and `inboundPhoneCall` type." + }, + "phoneNumber": { + "description": "This is the phone number that will be used for the call. To use an existing number, use `phoneNumberId` instead.\n\nOnly relevant for `outboundPhoneCall` and `inboundPhoneCall` type.", "allOf": [ - { - "$ref": "#/components/schemas/CreateSquadDTO" - } + { "$ref": "#/components/schemas/ImportTwilioPhoneNumberDTO" } ] }, "customerId": { @@ -7797,50 +7677,64 @@ }, "customer": { "description": "This is the customer that will be called. To call an existing customer, use `customerId` instead.\n\nOnly relevant for `outboundPhoneCall` and `inboundPhoneCall` type.", - "allOf": [ - { - "$ref": "#/components/schemas/CreateCustomerDTO" - } - ] + "allOf": [{ "$ref": "#/components/schemas/CreateCustomerDTO" }] }, - "phoneNumberId": { + "name": { "type": "string", - "description": "This is the phone number that will be used for the call. To use a transient number, use `phoneNumber` instead.\n\nOnly relevant for `outboundPhoneCall` and `inboundPhoneCall` type." - }, - "phoneNumber": { - "description": "This is the phone number that will be used for the call. To use an existing number, use `phoneNumberId` instead.\n\nOnly relevant for `outboundPhoneCall` and `inboundPhoneCall` type.", - "allOf": [ - { - "$ref": "#/components/schemas/ImportTwilioPhoneNumberDTO" - } - ] - }, - "metadata": { - "type": "object", - "description": "This is the metadata associated with the call." + "description": "This is the name of the call. This is just for your own reference.", + "maxLength": 40 } }, - "required": [ - "id", - "orgId", - "createdAt", - "updatedAt" - ] + "required": ["id", "orgId", "createdAt", "updatedAt"] + }, + "PaginationMeta": { + "type": "object", + "properties": { + "itemsPerPage": { "type": "number" }, + "totalItems": { "type": "number" }, + "currentPage": { "type": "number" } + }, + "required": ["itemsPerPage", "totalItems", "currentPage"] + }, + "CallPaginatedResponse": { + "type": "object", + "properties": { + "results": { + "type": "array", + "items": { "$ref": "#/components/schemas/Call" } + }, + "metadata": { "$ref": "#/components/schemas/PaginationMeta" } + }, + "required": ["results", "metadata"] }, "CreateOutboundCallDTO": { "type": "object", "properties": { - "customerId": { + "name": { "type": "string", - "description": "This is the customer that will be called. To call a transient customer , use `customer` instead.\n\nOnly relevant for `outboundPhoneCall` and `inboundPhoneCall` type." + "description": "This is the name of the call. This is just for your own reference.", + "maxLength": 40 }, - "customer": { - "description": "This is the customer that will be called. To call an existing customer, use `customerId` instead.\n\nOnly relevant for `outboundPhoneCall` and `inboundPhoneCall` type.", - "allOf": [ - { - "$ref": "#/components/schemas/CreateCustomerDTO" - } - ] + "assistantId": { + "type": "string", + "nullable": true, + "description": "This is the assistant that will be used for the call. To use a transient assistant, use `assistant` instead." + }, + "assistant": { + "description": "This is the assistant that will be used for the call. To use an existing assistant, use `assistantId` instead.", + "allOf": [{ "$ref": "#/components/schemas/CreateAssistantDTO" }] + }, + "assistantOverrides": { + "description": "These are the overrides for the `assistant` or `assistantId`'s settings and template variables.", + "allOf": [{ "$ref": "#/components/schemas/AssistantOverrides" }] + }, + "squadId": { + "type": "string", + "description": "This is the squad that will be used for the call. To use a transient squad, use `squad` instead." + }, + "squad": { + "description": "This is a squad that will be used for the call. To use an existing squad, use `squadId` instead.", + "allOf": [{ "$ref": "#/components/schemas/CreateSquadDTO" }] }, "phoneNumberId": { "type": "string", @@ -7849,15 +7743,22 @@ "phoneNumber": { "description": "This is the phone number that will be used for the call. To use an existing number, use `phoneNumberId` instead.\n\nOnly relevant for `outboundPhoneCall` and `inboundPhoneCall` type.", "allOf": [ - { - "$ref": "#/components/schemas/ImportTwilioPhoneNumberDTO" - } + { "$ref": "#/components/schemas/ImportTwilioPhoneNumberDTO" } ] }, - "metadata": { - "type": "object", - "description": "This is the metadata associated with the call." + "customerId": { + "type": "string", + "description": "This is the customer that will be called. To call a transient customer , use `customer` instead.\n\nOnly relevant for `outboundPhoneCall` and `inboundPhoneCall` type." }, + "customer": { + "description": "This is the customer that will be called. To call an existing customer, use `customerId` instead.\n\nOnly relevant for `outboundPhoneCall` and `inboundPhoneCall` type.", + "allOf": [{ "$ref": "#/components/schemas/CreateCustomerDTO" }] + } + } + }, + "CreateWebCallDTO": { + "type": "object", + "properties": { "assistantId": { "type": "string", "nullable": true, @@ -7865,19 +7766,11 @@ }, "assistant": { "description": "This is the assistant that will be used for the call. To use an existing assistant, use `assistantId` instead.", - "allOf": [ - { - "$ref": "#/components/schemas/CreateAssistantDTO" - } - ] + "allOf": [{ "$ref": "#/components/schemas/CreateAssistantDTO" }] }, "assistantOverrides": { "description": "These are the overrides for the `assistant` or `assistantId`'s settings and template variables.", - "allOf": [ - { - "$ref": "#/components/schemas/OverrideAssistantDTO" - } - ] + "allOf": [{ "$ref": "#/components/schemas/AssistantOverrides" }] }, "squadId": { "type": "string", @@ -7885,32 +7778,64 @@ }, "squad": { "description": "This is a squad that will be used for the call. To use an existing squad, use `squadId` instead.", - "allOf": [ - { - "$ref": "#/components/schemas/CreateSquadDTO" - } - ] + "allOf": [{ "$ref": "#/components/schemas/CreateSquadDTO" }] } } }, "UpdateCallDTO": { "type": "object", "properties": { - "metadata": { - "type": "object", - "description": "This is the metadata associated with the call." + "name": { + "type": "string", + "description": "This is the name of the call. This is just for your own reference.", + "maxLength": 40 } } }, - "AnyscaleCredential": { + "Squad": { "type": "object", "properties": { - "provider": { + "members": { + "description": "The list of assistant members in the squad. By default, the call will start\nwith the first assistant supplied in the list.", + "type": "array", + "items": { "$ref": "#/components/schemas/SquadMemberDTO" } + }, + "id": { "type": "string", - "enum": [ - "anyscale" - ] + "description": "This is the unique identifier for the squad." + }, + "orgId": { + "type": "string", + "description": "This is the unique identifier for the org that this squad belongs to." + }, + "createdAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the squad was created." }, + "updatedAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the squad was last updated." + } + }, + "required": ["members", "id", "orgId", "createdAt", "updatedAt"] + }, + "UpdateSquadDTO": { + "type": "object", + "properties": { + "members": { + "description": "The list of assistant members in the squad. By default, the call will start\nwith the first assistant supplied in the list.", + "type": "array", + "items": { "$ref": "#/components/schemas/SquadMemberDTO" } + } + }, + "required": ["members"] + }, + "AnyscaleCredential": { + "type": "object", + "properties": { + "provider": { "type": "string", "enum": ["anyscale"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." @@ -7946,12 +7871,7 @@ "AnthropicCredential": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "anthropic" - ] - }, + "provider": { "type": "string", "enum": ["anthropic"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." @@ -7987,12 +7907,7 @@ "AzureOpenAICredential": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "azure-openai" - ] - }, + "provider": { "type": "string", "enum": ["azure-openai"] }, "region": { "type": "string", "enum": [ @@ -8024,10 +7939,7 @@ "gpt-35-turbo-0125", "gpt-35-turbo-1106" ], - "example": [ - "gpt-4-0125-preview", - "gpt-4-0613" - ], + "example": ["gpt-4-0125-preview", "gpt-4-0613"], "items": { "type": "string", "enum": [ @@ -8063,9 +7975,7 @@ "type": "string", "description": "This is the ISO 8601 date-time string of when the assistant was last updated." }, - "openAIEndpoint": { - "type": "string" - } + "openAIEndpoint": { "type": "string" } }, "required": [ "provider", @@ -8082,12 +7992,7 @@ "CartesiaCredential": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "cartesia" - ] - }, + "provider": { "type": "string", "enum": ["cartesia"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." @@ -8123,12 +8028,7 @@ "CustomLLMCredential": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "custom-llm" - ] - }, + "provider": { "type": "string", "enum": ["custom-llm"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." @@ -8164,12 +8064,7 @@ "DeepgramCredential": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "deepgram" - ] - }, + "provider": { "type": "string", "enum": ["deepgram"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." @@ -8205,12 +8100,7 @@ "DeepInfraCredential": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "deepinfra" - ] - }, + "provider": { "type": "string", "enum": ["deepinfra"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." @@ -8246,12 +8136,7 @@ "ElevenLabsCredential": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "11labs" - ] - }, + "provider": { "type": "string", "enum": ["11labs"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." @@ -8287,12 +8172,7 @@ "GoHighLevelCredential": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "gohighlevel" - ] - }, + "provider": { "type": "string", "enum": ["gohighlevel"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." @@ -8328,12 +8208,7 @@ "GroqCredential": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "groq" - ] - }, + "provider": { "type": "string", "enum": ["groq"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." @@ -8369,12 +8244,7 @@ "LmntCredential": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "lmnt" - ] - }, + "provider": { "type": "string", "enum": ["lmnt"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." @@ -8410,16 +8280,8 @@ "MakeCredential": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "make" - ] - }, - "teamId": { - "type": "string", - "description": "Team ID" - }, + "provider": { "type": "string", "enum": ["make"] }, + "teamId": { "type": "string", "description": "Team ID" }, "region": { "type": "string", "description": "Region of your application. For example: eu1, eu2, us1, us2" @@ -8461,12 +8323,7 @@ "OpenAICredential": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "openai" - ] - }, + "provider": { "type": "string", "enum": ["openai"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." @@ -8502,12 +8359,43 @@ "OpenRouterCredential": { "type": "object", "properties": { - "provider": { + "provider": { "type": "string", "enum": ["openrouter"] }, + "apiKey": { "type": "string", - "enum": [ - "openrouter" - ] + "description": "This is not returned in the API." }, + "id": { + "type": "string", + "description": "This is the unique identifier for the credential." + }, + "orgId": { + "type": "string", + "description": "This is the unique identifier for the org that this credential belongs to." + }, + "createdAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the credential was created." + }, + "updatedAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the assistant was last updated." + } + }, + "required": [ + "provider", + "apiKey", + "id", + "orgId", + "createdAt", + "updatedAt" + ] + }, + "PerplexityAICredential": { + "type": "object", + "properties": { + "provider": { "type": "string", "enum": ["perplexity-ai"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." @@ -8540,15 +8428,48 @@ "updatedAt" ] }, - "PerplexityAICredential": { + "PlayHTCredential": { "type": "object", "properties": { - "provider": { + "provider": { "type": "string", "enum": ["playht"] }, + "apiKey": { "type": "string", - "enum": [ - "perplexity-ai" - ] + "description": "This is not returned in the API." + }, + "id": { + "type": "string", + "description": "This is the unique identifier for the credential." + }, + "orgId": { + "type": "string", + "description": "This is the unique identifier for the org that this credential belongs to." + }, + "createdAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the credential was created." + }, + "updatedAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the assistant was last updated." }, + "userId": { "type": "string" } + }, + "required": [ + "provider", + "apiKey", + "id", + "orgId", + "createdAt", + "updatedAt", + "userId" + ] + }, + "RimeAICredential": { + "type": "object", + "properties": { + "provider": { "type": "string", "enum": ["rime-ai"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." @@ -8581,15 +8502,46 @@ "updatedAt" ] }, - "PlayHTCredential": { + "RunpodCredential": { "type": "object", "properties": { - "provider": { + "provider": { "type": "string", "enum": ["runpod"] }, + "apiKey": { "type": "string", - "enum": [ - "playht" - ] + "description": "This is not returned in the API." + }, + "id": { + "type": "string", + "description": "This is the unique identifier for the credential." + }, + "orgId": { + "type": "string", + "description": "This is the unique identifier for the org that this credential belongs to." + }, + "createdAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the credential was created." }, + "updatedAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the assistant was last updated." + } + }, + "required": [ + "provider", + "apiKey", + "id", + "orgId", + "createdAt", + "updatedAt" + ] + }, + "TogetherAICredential": { + "type": "object", + "properties": { + "provider": { "type": "string", "enum": ["together-ai"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." @@ -8611,9 +8563,6 @@ "format": "date-time", "type": "string", "description": "This is the ISO 8601 date-time string of when the assistant was last updated." - }, - "userId": { - "type": "string" } }, "required": [ @@ -8622,20 +8571,14 @@ "id", "orgId", "createdAt", - "updatedAt", - "userId" + "updatedAt" ] }, - "RimeAICredential": { + "TwilioCredential": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "rime-ai" - ] - }, - "apiKey": { + "provider": { "type": "string", "enum": ["twilio"] }, + "authToken": { "type": "string", "description": "This is not returned in the API." }, @@ -8656,27 +8599,24 @@ "format": "date-time", "type": "string", "description": "This is the ISO 8601 date-time string of when the assistant was last updated." - } + }, + "accountSid": { "type": "string" } }, "required": [ "provider", - "apiKey", + "authToken", "id", "orgId", "createdAt", - "updatedAt" + "updatedAt", + "accountSid" ] }, - "RunpodCredential": { + "VonageCredential": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "runpod" - ] - }, - "apiKey": { + "provider": { "type": "string", "enum": ["vonage"] }, + "apiSecret": { "type": "string", "description": "This is not returned in the API." }, @@ -8697,205 +8637,346 @@ "format": "date-time", "type": "string", "description": "This is the ISO 8601 date-time string of when the assistant was last updated." - } + }, + "vonageApplicationId": { + "type": "string", + "description": "This is the Vonage Application ID for the credential.\n\nOnly relevant for Vonage credentials." + }, + "vonageApplicationPrivateKey": { + "type": "string", + "description": "This is the Vonage Application Private Key for the credential.\n\nOnly relevant for Vonage credentials." + }, + "apiKey": { "type": "string" } }, "required": [ "provider", - "apiKey", + "apiSecret", "id", "orgId", "createdAt", - "updatedAt" + "updatedAt", + "vonageApplicationId", + "vonageApplicationPrivateKey", + "apiKey" ] }, - "TogetherAICredential": { + "CreateAnyscaleCredentialDTO": { "type": "object", "properties": { - "provider": { + "provider": { "type": "string", "enum": ["anyscale"] }, + "apiKey": { + "type": "string", + "description": "This is not returned in the API." + } + }, + "required": ["provider", "apiKey"] + }, + "CreateAnthropicCredentialDTO": { + "type": "object", + "properties": { + "provider": { "type": "string", "enum": ["anthropic"] }, + "apiKey": { + "type": "string", + "description": "This is not returned in the API." + } + }, + "required": ["provider", "apiKey"] + }, + "CreateAzureOpenAICredentialDTO": { + "type": "object", + "properties": { + "provider": { "type": "string", "enum": ["azure-openai"] }, + "region": { "type": "string", "enum": [ - "together-ai" + "australia", + "canada", + "eastus2", + "eastus", + "france", + "india", + "japan", + "northcentralus", + "norway", + "southcentralus", + "sweden", + "switzerland", + "uk", + "westus", + "westus3" ] }, - "apiKey": { + "models": { + "type": "array", + "enum": [ + "gpt-4o-2024-05-13", + "gpt-4-turbo-2024-04-09", + "gpt-4-0125-preview", + "gpt-4-1106-preview", + "gpt-4-0613", + "gpt-35-turbo-0125", + "gpt-35-turbo-1106" + ], + "example": ["gpt-4-0125-preview", "gpt-4-0613"], + "items": { + "type": "string", + "enum": [ + "gpt-4o-2024-05-13", + "gpt-4-turbo-2024-04-09", + "gpt-4-0125-preview", + "gpt-4-1106-preview", + "gpt-4-0613", + "gpt-35-turbo-0125", + "gpt-35-turbo-1106" + ] + } + }, + "openAIKey": { "type": "string", "description": "This is not returned in the API." }, - "id": { + "openAIEndpoint": { "type": "string" } + }, + "required": [ + "provider", + "region", + "models", + "openAIKey", + "openAIEndpoint" + ] + }, + "CreateCartesiaCredentialDTO": { + "type": "object", + "properties": { + "provider": { "type": "string", "enum": ["cartesia"] }, + "apiKey": { "type": "string", - "description": "This is the unique identifier for the credential." - }, - "orgId": { + "description": "This is not returned in the API." + } + }, + "required": ["provider", "apiKey"] + }, + "CreateCustomLLMCredentialDTO": { + "type": "object", + "properties": { + "provider": { "type": "string", "enum": ["custom-llm"] }, + "apiKey": { "type": "string", - "description": "This is the unique identifier for the org that this credential belongs to." + "description": "This is not returned in the API." + } + }, + "required": ["provider", "apiKey"] + }, + "CreateDeepgramCredentialDTO": { + "type": "object", + "properties": { + "provider": { "type": "string", "enum": ["deepgram"] }, + "apiKey": { + "type": "string", + "description": "This is not returned in the API." + } + }, + "required": ["provider", "apiKey"] + }, + "CreateDeepInfraCredentialDTO": { + "type": "object", + "properties": { + "provider": { "type": "string", "enum": ["deepinfra"] }, + "apiKey": { + "type": "string", + "description": "This is not returned in the API." + } + }, + "required": ["provider", "apiKey"] + }, + "CreateElevenLabsCredentialDTO": { + "type": "object", + "properties": { + "provider": { "type": "string", "enum": ["11labs"] }, + "apiKey": { + "type": "string", + "description": "This is not returned in the API." + } + }, + "required": ["provider", "apiKey"] + }, + "CreateGoHighLevelCredentialDTO": { + "type": "object", + "properties": { + "provider": { "type": "string", "enum": ["gohighlevel"] }, + "apiKey": { + "type": "string", + "description": "This is not returned in the API." + } + }, + "required": ["provider", "apiKey"] + }, + "CreateGroqCredentialDTO": { + "type": "object", + "properties": { + "provider": { "type": "string", "enum": ["groq"] }, + "apiKey": { + "type": "string", + "description": "This is not returned in the API." + } + }, + "required": ["provider", "apiKey"] + }, + "CreateLmntCredentialDTO": { + "type": "object", + "properties": { + "provider": { "type": "string", "enum": ["lmnt"] }, + "apiKey": { + "type": "string", + "description": "This is not returned in the API." + } + }, + "required": ["provider", "apiKey"] + }, + "CreateMakeCredentialDTO": { + "type": "object", + "properties": { + "provider": { "type": "string", "enum": ["make"] }, + "teamId": { "type": "string", "description": "Team ID" }, + "region": { + "type": "string", + "description": "Region of your application. For example: eu1, eu2, us1, us2" }, - "createdAt": { - "format": "date-time", + "apiKey": { "type": "string", - "description": "This is the ISO 8601 date-time string of when the credential was created." + "description": "This is not returned in the API." + } + }, + "required": ["provider", "teamId", "region", "apiKey"] + }, + "CreateOpenAICredentialDTO": { + "type": "object", + "properties": { + "provider": { "type": "string", "enum": ["openai"] }, + "apiKey": { + "type": "string", + "description": "This is not returned in the API." + } + }, + "required": ["provider", "apiKey"] + }, + "CreateOpenRouterCredentialDTO": { + "type": "object", + "properties": { + "provider": { "type": "string", "enum": ["openrouter"] }, + "apiKey": { + "type": "string", + "description": "This is not returned in the API." + } + }, + "required": ["provider", "apiKey"] + }, + "CreatePerplexityAICredentialDTO": { + "type": "object", + "properties": { + "provider": { "type": "string", "enum": ["perplexity-ai"] }, + "apiKey": { + "type": "string", + "description": "This is not returned in the API." + } + }, + "required": ["provider", "apiKey"] + }, + "CreatePlayHTCredentialDTO": { + "type": "object", + "properties": { + "provider": { "type": "string", "enum": ["playht"] }, + "apiKey": { + "type": "string", + "description": "This is not returned in the API." }, - "updatedAt": { - "format": "date-time", + "userId": { "type": "string" } + }, + "required": ["provider", "apiKey", "userId"] + }, + "CreateRimeAICredentialDTO": { + "type": "object", + "properties": { + "provider": { "type": "string", "enum": ["rime-ai"] }, + "apiKey": { "type": "string", - "description": "This is the ISO 8601 date-time string of when the assistant was last updated." + "description": "This is not returned in the API." + } + }, + "required": ["provider", "apiKey"] + }, + "CreateRunpodCredentialDTO": { + "type": "object", + "properties": { + "provider": { "type": "string", "enum": ["runpod"] }, + "apiKey": { + "type": "string", + "description": "This is not returned in the API." } }, - "required": [ - "provider", - "apiKey", - "id", - "orgId", - "createdAt", - "updatedAt" - ] + "required": ["provider", "apiKey"] }, - "TwilioCredential": { + "CreateTogetherAICredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "twilio" - ] - }, - "authToken": { + "provider": { "type": "string", "enum": ["together-ai"] }, + "apiKey": { "type": "string", "description": "This is not returned in the API." - }, - "id": { - "type": "string", - "description": "This is the unique identifier for the credential." - }, - "orgId": { - "type": "string", - "description": "This is the unique identifier for the org that this credential belongs to." - }, - "createdAt": { - "format": "date-time", - "type": "string", - "description": "This is the ISO 8601 date-time string of when the credential was created." - }, - "updatedAt": { - "format": "date-time", - "type": "string", - "description": "This is the ISO 8601 date-time string of when the assistant was last updated." - }, - "accountSid": { - "type": "string" } }, - "required": [ - "provider", - "authToken", - "id", - "orgId", - "createdAt", - "updatedAt", - "accountSid" - ] + "required": ["provider", "apiKey"] }, - "VonageCredential": { + "CreateTwilioCredentialDTO": { "type": "object", "properties": { - "provider": { + "provider": { "type": "string", "enum": ["twilio"] }, + "authToken": { "type": "string", - "enum": [ - "vonage" - ] + "description": "This is not returned in the API." }, + "accountSid": { "type": "string" } + }, + "required": ["provider", "authToken", "accountSid"] + }, + "CreateVonageCredentialDTO": { + "type": "object", + "properties": { + "provider": { "type": "string", "enum": ["vonage"] }, "apiSecret": { "type": "string", "description": "This is not returned in the API." }, - "id": { - "type": "string", - "description": "This is the unique identifier for the credential." - }, - "orgId": { - "type": "string", - "description": "This is the unique identifier for the org that this credential belongs to." - }, - "createdAt": { - "format": "date-time", - "type": "string", - "description": "This is the ISO 8601 date-time string of when the credential was created." - }, - "updatedAt": { - "format": "date-time", - "type": "string", - "description": "This is the ISO 8601 date-time string of when the assistant was last updated." - }, - "vonageApplicationId": { - "type": "string", - "description": "This is the Vonage Application ID for the credential.\n\nOnly relevant for Vonage credentials." - }, - "vonageApplicationPrivateKey": { - "type": "string", - "description": "This is the Vonage Application Private Key for the credential.\n\nOnly relevant for Vonage credentials." - }, - "apiKey": { - "type": "string" - } + "apiKey": { "type": "string" } }, - "required": [ - "provider", - "apiSecret", - "id", - "orgId", - "createdAt", - "updatedAt", - "vonageApplicationId", - "vonageApplicationPrivateKey", - "apiKey" - ] + "required": ["provider", "apiSecret", "apiKey"] }, - "CreateAnyscaleCredentialDTO": { + "UpdateAnyscaleCredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "anyscale" - ] - }, + "provider": { "type": "string", "enum": ["anyscale"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." } }, - "required": [ - "provider", - "apiKey" - ] + "required": ["provider", "apiKey"] }, - "CreateAnthropicCredentialDTO": { + "UpdateAnthropicCredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "anthropic" - ] - }, + "provider": { "type": "string", "enum": ["anthropic"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." } }, - "required": [ - "provider", - "apiKey" - ] + "required": ["provider", "apiKey"] }, - "CreateAzureOpenAICredentialDTO": { + "UpdateAzureOpenAICredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "azure-openai" - ] - }, + "provider": { "type": "string", "enum": ["azure-openai"] }, "region": { "type": "string", "enum": [ @@ -8927,10 +9008,7 @@ "gpt-35-turbo-0125", "gpt-35-turbo-1106" ], - "example": [ - "gpt-4-0125-preview", - "gpt-4-0613" - ], + "example": ["gpt-4-0125-preview", "gpt-4-0613"], "items": { "type": "string", "enum": [ @@ -8948,1693 +9026,2248 @@ "type": "string", "description": "This is not returned in the API." }, - "openAIEndpoint": { - "type": "string" - } + "openAIEndpoint": { "type": "string" } + }, + "required": [ + "provider", + "region", + "models", + "openAIKey", + "openAIEndpoint" + ] + }, + "UpdateCartesiaCredentialDTO": { + "type": "object", + "properties": { + "provider": { "type": "string", "enum": ["cartesia"] }, + "apiKey": { + "type": "string", + "description": "This is not returned in the API." + } + }, + "required": ["provider", "apiKey"] + }, + "UpdateCustomLLMCredentialDTO": { + "type": "object", + "properties": { + "provider": { "type": "string", "enum": ["custom-llm"] }, + "apiKey": { + "type": "string", + "description": "This is not returned in the API." + } + }, + "required": ["provider", "apiKey"] + }, + "UpdateDeepInfraCredentialDTO": { + "type": "object", + "properties": { + "provider": { "type": "string", "enum": ["deepinfra"] }, + "apiKey": { + "type": "string", + "description": "This is not returned in the API." + } + }, + "required": ["provider", "apiKey"] + }, + "UpdateDeepgramCredentialDTO": { + "type": "object", + "properties": { + "provider": { "type": "string", "enum": ["deepgram"] }, + "apiKey": { + "type": "string", + "description": "This is not returned in the API." + } + }, + "required": ["provider", "apiKey"] + }, + "UpdateElevenLabsCredentialDTO": { + "type": "object", + "properties": { + "provider": { "type": "string", "enum": ["11labs"] }, + "apiKey": { + "type": "string", + "description": "This is not returned in the API." + } + }, + "required": ["provider", "apiKey"] + }, + "UpdateGoHighLevelCredentialDTO": { + "type": "object", + "properties": { + "provider": { "type": "string", "enum": ["gohighlevel"] }, + "apiKey": { + "type": "string", + "description": "This is not returned in the API." + } + }, + "required": ["provider", "apiKey"] + }, + "UpdateGroqCredentialDTO": { + "type": "object", + "properties": { + "provider": { "type": "string", "enum": ["groq"] }, + "apiKey": { + "type": "string", + "description": "This is not returned in the API." + } + }, + "required": ["provider", "apiKey"] + }, + "UpdateLmntCredentialDTO": { + "type": "object", + "properties": { + "provider": { "type": "string", "enum": ["lmnt"] }, + "apiKey": { + "type": "string", + "description": "This is not returned in the API." + } + }, + "required": ["provider", "apiKey"] + }, + "UpdateMakeCredentialDTO": { + "type": "object", + "properties": { + "provider": { "type": "string", "enum": ["make"] }, + "teamId": { "type": "string", "description": "Team ID" }, + "region": { + "type": "string", + "description": "Region of your application. For example: eu1, eu2, us1, us2" + }, + "apiKey": { + "type": "string", + "description": "This is not returned in the API." + } + }, + "required": ["provider", "teamId", "region", "apiKey"] + }, + "UpdateOpenAICredentialDTO": { + "type": "object", + "properties": { + "provider": { "type": "string", "enum": ["openai"] }, + "apiKey": { + "type": "string", + "description": "This is not returned in the API." + } + }, + "required": ["provider", "apiKey"] + }, + "UpdateOpenRouterCredentialDTO": { + "type": "object", + "properties": { + "provider": { "type": "string", "enum": ["openrouter"] }, + "apiKey": { + "type": "string", + "description": "This is not returned in the API." + } + }, + "required": ["provider", "apiKey"] + }, + "UpdatePerplexityAICredentialDTO": { + "type": "object", + "properties": { + "provider": { "type": "string", "enum": ["perplexity-ai"] }, + "apiKey": { + "type": "string", + "description": "This is not returned in the API." + } + }, + "required": ["provider", "apiKey"] + }, + "UpdatePlayHTCredentialDTO": { + "type": "object", + "properties": { + "provider": { "type": "string", "enum": ["playht"] }, + "apiKey": { + "type": "string", + "description": "This is not returned in the API." + }, + "userId": { "type": "string" } }, - "required": [ - "provider", - "region", - "models", - "openAIKey", - "openAIEndpoint" - ] + "required": ["provider", "apiKey", "userId"] }, - "CreateCartesiaCredentialDTO": { + "UpdateRimeAICredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "cartesia" - ] - }, + "provider": { "type": "string", "enum": ["rime-ai"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." } }, - "required": [ - "provider", - "apiKey" - ] + "required": ["provider", "apiKey"] }, - "CreateCustomLLMCredentialDTO": { + "UpdateRunpodCredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "custom-llm" - ] - }, + "provider": { "type": "string", "enum": ["runpod"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." } }, - "required": [ - "provider", - "apiKey" - ] + "required": ["provider", "apiKey"] }, - "CreateDeepgramCredentialDTO": { + "UpdateTogetherAICredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "deepgram" - ] - }, + "provider": { "type": "string", "enum": ["together-ai"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." } }, - "required": [ - "provider", - "apiKey" - ] + "required": ["provider", "apiKey"] }, - "CreateDeepInfraCredentialDTO": { + "UpdateTwilioCredentialDTO": { "type": "object", "properties": { - "provider": { + "provider": { "type": "string", "enum": ["twilio"] }, + "authToken": { "type": "string", - "enum": [ - "deepinfra" - ] + "description": "This is not returned in the API." }, - "apiKey": { + "accountSid": { "type": "string" } + }, + "required": ["provider", "authToken", "accountSid"] + }, + "UpdateVonageCredentialDTO": { + "type": "object", + "properties": { + "provider": { "type": "string", "enum": ["vonage"] }, + "apiSecret": { "type": "string", "description": "This is not returned in the API." + }, + "apiKey": { "type": "string" } + }, + "required": ["provider", "apiSecret", "apiKey"] + }, + "CreateOrgDTO": { + "type": "object", + "properties": { + "hipaaEnabled": { + "type": "boolean", + "description": "When this is enabled, no logs, recordings, or transcriptions will be stored. At the end of the call, you will still receive an end-of-call-report message to store on your server. Defaults to false.\nWhen HIPAA is enabled, only OpenAI/Custom LLM or Azure Providers will be available for LLM and Voice respectively.\nThis is due to the compliance requirements of HIPAA. Other providers may not meet these requirements.", + "example": false + }, + "name": { + "type": "string", + "description": "This is the name of the org. This is just for your own reference.", + "maxLength": 40 + }, + "billingLimit": { + "type": "number", + "description": "This is the monthly billing limit for the org. To go beyond $1000/mo, please contact us at support@vapi.ai.", + "minimum": 0, + "maximum": 1000 + }, + "serverUrl": { + "type": "string", + "description": "This is the URL Vapi will communicate with via HTTP GET and POST Requests. This is used for retrieving context, function calling, and end-of-call reports.\n\nAll requests will be sent with the call object among other things relevant to that message. You can find more details in the Server URL documentation." + }, + "serverUrlSecret": { + "type": "string", + "description": "This is the secret you can set that Vapi will send with every request to your server. Will be sent as a header called x-vapi-secret." + }, + "concurrencyLimit": { + "type": "number", + "description": "This is the concurrency limit for the org. This is the maximum number of calls that can be active at any given time. To go beyond 10, please contact us at support@vapi.ai.", + "minimum": 1, + "maximum": 10 + } + } + }, + "Org": { + "type": "object", + "properties": { + "hipaaEnabled": { + "type": "boolean", + "description": "When this is enabled, no logs, recordings, or transcriptions will be stored. At the end of the call, you will still receive an end-of-call-report message to store on your server. Defaults to false.\nWhen HIPAA is enabled, only OpenAI/Custom LLM or Azure Providers will be available for LLM and Voice respectively.\nThis is due to the compliance requirements of HIPAA. Other providers may not meet these requirements.", + "example": false + }, + "id": { + "type": "string", + "description": "This is the unique identifier for the org." + }, + "createdAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the org was created." + }, + "updatedAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the org was last updated." + }, + "stripeCustomerId": { + "type": "string", + "description": "This is the Stripe customer for the org." + }, + "stripeSubscriptionId": { + "type": "string", + "description": "This is the subscription for the org." + }, + "stripeSubscriptionItemId": { + "type": "string", + "description": "This is the subscription's subscription item." + }, + "stripeSubscriptionCurrentPeriodStart": { + "format": "date-time", + "type": "string", + "description": "This is the subscription's current period start." + }, + "stripeSubscriptionStatus": { + "type": "string", + "description": "This is the subscription's status." + }, + "name": { + "type": "string", + "description": "This is the name of the org. This is just for your own reference.", + "maxLength": 40 + }, + "billingLimit": { + "type": "number", + "description": "This is the monthly billing limit for the org. To go beyond $1000/mo, please contact us at support@vapi.ai.", + "minimum": 0, + "maximum": 1000 + }, + "serverUrl": { + "type": "string", + "description": "This is the URL Vapi will communicate with via HTTP GET and POST Requests. This is used for retrieving context, function calling, and end-of-call reports.\n\nAll requests will be sent with the call object among other things relevant to that message. You can find more details in the Server URL documentation." + }, + "serverUrlSecret": { + "type": "string", + "description": "This is the secret you can set that Vapi will send with every request to your server. Will be sent as a header called x-vapi-secret." + }, + "concurrencyLimit": { + "type": "number", + "description": "This is the concurrency limit for the org. This is the maximum number of calls that can be active at any given time. To go beyond 10, please contact us at support@vapi.ai.", + "minimum": 1, + "maximum": 10 } }, - "required": [ - "provider", - "apiKey" - ] + "required": ["id", "createdAt", "updatedAt"] }, - "CreateElevenLabsCredentialDTO": { + "UpdateOrgDTO": { "type": "object", "properties": { - "provider": { + "hipaaEnabled": { + "type": "boolean", + "description": "When this is enabled, no logs, recordings, or transcriptions will be stored. At the end of the call, you will still receive an end-of-call-report message to store on your server. Defaults to false.\nWhen HIPAA is enabled, only OpenAI/Custom LLM or Azure Providers will be available for LLM and Voice respectively.\nThis is due to the compliance requirements of HIPAA. Other providers may not meet these requirements.", + "example": false + }, + "name": { "type": "string", - "enum": [ - "11labs" - ] + "description": "This is the name of the org. This is just for your own reference.", + "maxLength": 40 }, - "apiKey": { + "billingLimit": { + "type": "number", + "description": "This is the monthly billing limit for the org. To go beyond $1000/mo, please contact us at support@vapi.ai.", + "minimum": 0, + "maximum": 1000 + }, + "serverUrl": { "type": "string", - "description": "This is not returned in the API." + "description": "This is the URL Vapi will communicate with via HTTP GET and POST Requests. This is used for retrieving context, function calling, and end-of-call reports.\n\nAll requests will be sent with the call object among other things relevant to that message. You can find more details in the Server URL documentation." + }, + "serverUrlSecret": { + "type": "string", + "description": "This is the secret you can set that Vapi will send with every request to your server. Will be sent as a header called x-vapi-secret." + }, + "concurrencyLimit": { + "type": "number", + "description": "This is the concurrency limit for the org. This is the maximum number of calls that can be active at any given time. To go beyond 10, please contact us at support@vapi.ai.", + "minimum": 1, + "maximum": 10 + } + } + }, + "User": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "This is the unique identifier for the profile or user." + }, + "createdAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the profile was created." + }, + "updatedAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the profile was last updated." + }, + "email": { + "type": "string", + "description": "This is the email of the user that is associated with the profile." + }, + "fullName": { + "type": "string", + "description": "This is the full name of the user that is associated with the profile." } }, - "required": [ - "provider", - "apiKey" - ] + "required": ["id", "createdAt", "updatedAt", "email"] }, - "CreateGoHighLevelCredentialDTO": { + "InviteUserDTO": { + "type": "object", + "properties": { "email": { "type": "string" } }, + "required": ["email"] + }, + "BuyPhoneNumberDTO": { "type": "object", "properties": { - "provider": { + "areaCode": { "type": "string", - "enum": [ - "gohighlevel" - ] + "description": "This is the area code of the phone number to purchase.", + "minLength": 3, + "maxLength": 3 }, - "apiKey": { + "name": { "type": "string", - "description": "This is not returned in the API." + "description": "This is the name of the phone number. This is just for your own reference.", + "maxLength": 40 + }, + "assistantId": { + "type": "string", + "nullable": true, + "description": "This is the assistant that will be used for incoming calls to this phone number.\n\nIf this is not set, then the phone number will not handle incoming calls." + }, + "serverUrl": { + "type": "string", + "description": "This is the server URL that will be used to handle this phone number.\n\nAll requests will be sent with the call object among other things relevant to that message. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org. Order of precedence: function.serverUrl > assistant.serverUrl > phoneNumber.serverUrl > org.serverUrl." + }, + "serverUrlSecret": { + "type": "string", + "description": "This is the secret you can set that Vapi will send with every request to your server. Will be sent as a header called x-vapi-secret.\n\nSame precendence logic as serverUrl." } }, - "required": [ - "provider", - "apiKey" - ] + "required": ["areaCode"] }, - "CreateGroqCredentialDTO": { + "PhoneNumber": { "type": "object", "properties": { - "provider": { + "id": { + "type": "string", + "description": "This is the unique identifier for the phone number." + }, + "orgId": { + "type": "string", + "description": "This is the unique identifier for the org that this phone number belongs to." + }, + "createdAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the phone number was created." + }, + "updatedAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the phone number was last updated." + }, + "stripeSubscriptionId": { + "type": "string", + "description": "This is the subscription for the phone number." + }, + "stripeSubscriptionStatus": { + "type": "string", + "description": "This is the subscription's status." + }, + "stripeSubscriptionCurrentPeriodStart": { + "format": "date-time", + "type": "string", + "description": "This is the subscription's current period start." + }, + "number": { + "type": "string", + "description": "These are the digits of the phone number." + }, + "twilioAccountSid": { + "type": "string", + "description": "This is the Twilio Account SID for the phone number.\n\nThis is for numbers not bought on Vapi." + }, + "twilioAuthToken": { "type": "string", - "enum": [ - "groq" - ] + "description": "This is the Twilio Auth Token for the phone number.\n\nThis is for numbers not bought on Vapi." }, - "apiKey": { + "credentialId": { "type": "string", - "description": "This is not returned in the API." - } - }, - "required": [ - "provider", - "apiKey" - ] - }, - "CreateLmntCredentialDTO": { - "type": "object", - "properties": { - "provider": { + "description": "This is the credential that will be used to handle this phone number.\n\nThis is for numbers not bought on Vapi." + }, + "name": { "type": "string", - "enum": [ - "lmnt" - ] + "description": "This is the name of the phone number. This is just for your own reference.", + "maxLength": 40 }, - "apiKey": { + "assistantId": { "type": "string", - "description": "This is not returned in the API." + "nullable": true, + "description": "This is the assistant that will be used for incoming calls to this phone number.\n\nIf this is not set, then the phone number will not handle incoming calls." + }, + "serverUrl": { + "type": "string", + "description": "This is the server URL that will be used to handle this phone number.\n\nAll requests will be sent with the call object among other things relevant to that message. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org. Order of precedence: function.serverUrl > assistant.serverUrl > phoneNumber.serverUrl > org.serverUrl." + }, + "serverUrlSecret": { + "type": "string", + "description": "This is the secret you can set that Vapi will send with every request to your server. Will be sent as a header called x-vapi-secret.\n\nSame precendence logic as serverUrl." } }, - "required": [ - "provider", - "apiKey" - ] + "required": ["id", "orgId", "createdAt", "updatedAt", "number"] }, - "CreateMakeCredentialDTO": { + "ImportVonagePhoneNumberDTO": { "type": "object", "properties": { - "provider": { + "vonagePhoneNumber": { "type": "string", - "enum": [ - "make" - ] + "description": "These are the digits of the phone number you own on your Vonage." }, - "teamId": { + "credentialId": { "type": "string", - "description": "Team ID" + "description": "This is the credential that will be used to handle this phone number.\n\nYou can add the Vonage credentials in the Provider Keys page on the dashboard to get the credentialId." }, - "region": { + "name": { "type": "string", - "description": "Region of your application. For example: eu1, eu2, us1, us2" + "description": "This is the name of the phone number. This is just for your own reference.", + "maxLength": 40 }, - "apiKey": { + "assistantId": { "type": "string", - "description": "This is not returned in the API." - } - }, - "required": [ - "provider", - "teamId", - "region", - "apiKey" - ] - }, - "CreateOpenAICredentialDTO": { - "type": "object", - "properties": { - "provider": { + "nullable": true, + "description": "This is the assistant that will be used for incoming calls to this phone number.\n\nIf this is not set, then the phone number will not handle incoming calls." + }, + "serverUrl": { "type": "string", - "enum": [ - "openai" - ] + "description": "This is the server URL that will be used to handle this phone number.\n\nAll requests will be sent with the call object among other things relevant to that message. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org. Order of precedence: function.serverUrl > assistant.serverUrl > phoneNumber.serverUrl > org.serverUrl." }, - "apiKey": { + "serverUrlSecret": { "type": "string", - "description": "This is not returned in the API." + "description": "This is the secret you can set that Vapi will send with every request to your server. Will be sent as a header called x-vapi-secret.\n\nSame precendence logic as serverUrl." } }, - "required": [ - "provider", - "apiKey" - ] + "required": ["vonagePhoneNumber", "credentialId"] }, - "CreateOpenRouterCredentialDTO": { + "UpdatePhoneNumberDTO": { "type": "object", "properties": { - "provider": { + "name": { "type": "string", - "enum": [ - "openrouter" - ] + "description": "This is the name of the phone number. This is just for your own reference.", + "maxLength": 40 }, - "apiKey": { + "assistantId": { "type": "string", - "description": "This is not returned in the API." - } - }, - "required": [ - "provider", - "apiKey" - ] - }, - "CreatePerplexityAICredentialDTO": { - "type": "object", - "properties": { - "provider": { + "nullable": true, + "description": "This is the assistant that will be used for incoming calls to this phone number.\n\nIf this is not set, then the phone number will not handle incoming calls." + }, + "serverUrl": { "type": "string", - "enum": [ - "perplexity-ai" - ] + "description": "This is the server URL that will be used to handle this phone number.\n\nAll requests will be sent with the call object among other things relevant to that message. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org. Order of precedence: function.serverUrl > assistant.serverUrl > phoneNumber.serverUrl > org.serverUrl." }, - "apiKey": { + "serverUrlSecret": { "type": "string", - "description": "This is not returned in the API." + "description": "This is the secret you can set that Vapi will send with every request to your server. Will be sent as a header called x-vapi-secret.\n\nSame precendence logic as serverUrl." } - }, - "required": [ - "provider", - "apiKey" - ] + } }, - "CreatePlayHTCredentialDTO": { + "Metrics": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "playht" - ] - }, - "apiKey": { - "type": "string", - "description": "This is not returned in the API." - }, - "userId": { - "type": "string" - } + "orgId": { "type": "string" }, + "rangeStart": { "type": "string" }, + "rangeEnd": { "type": "string" }, + "bill": { "type": "number" }, + "billWithinBillingLimit": { "type": "boolean" }, + "billDailyBreakdown": { "type": "object" }, + "callActive": { "type": "string" }, + "callActiveWithinConcurrencyLimit": { "type": "boolean" }, + "callMinutes": { "type": "string" }, + "callMinutesDailyBreakdown": { "type": "object" }, + "callMinutesAverage": { "type": "string" }, + "callMinutesAverageDailyBreakdown": { "type": "object" }, + "callCount": { "type": "string" }, + "callCountDailyBreakdown": { "type": "object" } }, "required": [ - "provider", - "apiKey", - "userId" + "orgId", + "rangeStart", + "rangeEnd", + "bill", + "billWithinBillingLimit", + "billDailyBreakdown", + "callActive", + "callActiveWithinConcurrencyLimit", + "callMinutes", + "callMinutesDailyBreakdown", + "callMinutesAverage", + "callMinutesAverageDailyBreakdown", + "callCount", + "callCountDailyBreakdown" ] }, - "CreateRimeAICredentialDTO": { + "VoiceLibrary": { "type": "object", "properties": { "provider": { - "type": "string", + "type": "object", + "description": "This is the voice provider that will be used.", "enum": [ + "11labs", + "azure", + "cartesia", + "deepgram", + "lmnt", + "neets", + "openai", + "playht", "rime-ai" ] }, - "apiKey": { + "providerId": { "type": "string", - "description": "This is not returned in the API." - } - }, - "required": [ - "provider", - "apiKey" - ] - }, - "CreateRunpodCredentialDTO": { - "type": "object", - "properties": { - "provider": { + "description": "The ID of the voice provided by the provider." + }, + "slug": { "type": "string", - "enum": [ - "runpod" - ] + "description": "The unique slug of the voice." }, - "apiKey": { + "name": { "type": "string", "description": "The name of the voice." }, + "language": { "type": "string", - "description": "This is not returned in the API." - } - }, - "required": [ - "provider", - "apiKey" - ] - }, - "CreateTogetherAICredentialDTO": { - "type": "object", - "properties": { - "provider": { + "description": "The language of the voice." + }, + "languageCode": { "type": "string", - "enum": [ - "together-ai" - ] + "description": "The language code of the voice." }, - "apiKey": { + "model": { "type": "string", - "description": "This is not returned in the API." - } - }, - "required": [ - "provider", - "apiKey" - ] - }, - "CreateTwilioCredentialDTO": { - "type": "object", - "properties": { - "provider": { + "description": "The model of the voice." + }, + "supportedModels": { "type": "string", - "enum": [ - "twilio" - ] + "description": "The supported models of the voice." }, - "authToken": { + "gender": { "type": "string", - "description": "This is not returned in the API." + "description": "The gender of the voice.", + "enum": ["male", "female"] }, - "accountSid": { - "type": "string" - } - }, - "required": [ - "provider", - "authToken", - "accountSid" - ] - }, - "CreateVonageCredentialDTO": { - "type": "object", - "properties": { - "provider": { + "accent": { "type": "string", - "enum": [ - "vonage" - ] + "description": "The accent of the voice." }, - "apiSecret": { + "previewUrl": { "type": "string", - "description": "This is not returned in the API." + "description": "The preview URL of the voice." }, - "apiKey": { - "type": "string" - } - }, - "required": [ - "provider", - "apiSecret", - "apiKey" - ] - }, - "UpdateAnyscaleCredentialDTO": { - "type": "object", - "properties": { - "provider": { + "description": { "type": "string", - "enum": [ - "anyscale" - ] + "description": "The description of the voice." }, - "apiKey": { + "credentialId": { "type": "string", - "description": "This is not returned in the API." - } - }, - "required": [ - "provider", - "apiKey" - ] - }, - "UpdateAnthropicCredentialDTO": { - "type": "object", - "properties": { - "provider": { + "description": "The credential ID of the voice." + }, + "isDeleted": { + "type": "boolean", + "description": "The deletion status of the voice." + }, + "id": { "type": "string", - "enum": [ - "anthropic" - ] + "description": "The unique identifier for the voice library." }, - "apiKey": { + "orgId": { "type": "string", - "description": "This is not returned in the API." + "description": "The unique identifier for the organization that this voice library belongs to." + }, + "isPublic": { + "type": "boolean", + "description": "The Public voice is shared accross all the organizations." + }, + "createdAt": { + "format": "date-time", + "type": "string", + "description": "The ISO 8601 date-time string of when the voice library was created." + }, + "updatedAt": { + "format": "date-time", + "type": "string", + "description": "The ISO 8601 date-time string of when the voice library was last updated." } }, "required": [ - "provider", - "apiKey" + "isDeleted", + "id", + "orgId", + "isPublic", + "createdAt", + "updatedAt" ] }, - "UpdateAzureOpenAICredentialDTO": { + "SyncVoiceLibraryDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "azure-openai" - ] - }, - "region": { - "type": "string", - "enum": [ - "australia", - "canada", - "eastus2", - "eastus", - "france", - "india", - "japan", - "northcentralus", - "norway", - "southcentralus", - "sweden", - "switzerland", - "uk", - "westus", - "westus3" - ] - }, - "models": { + "providers": { "type": "array", - "enum": [ - "gpt-4o-2024-05-13", - "gpt-4-turbo-2024-04-09", - "gpt-4-0125-preview", - "gpt-4-1106-preview", - "gpt-4-0613", - "gpt-35-turbo-0125", - "gpt-35-turbo-1106" - ], - "example": [ - "gpt-4-0125-preview", - "gpt-4-0613" + "description": "List of providers you want to sync.", + "enum": [ + "11labs", + "azure", + "cartesia", + "deepgram", + "lmnt", + "neets", + "openai", + "playht", + "rime-ai" ], "items": { "type": "string", "enum": [ - "gpt-4o-2024-05-13", - "gpt-4-turbo-2024-04-09", - "gpt-4-0125-preview", - "gpt-4-1106-preview", - "gpt-4-0613", - "gpt-35-turbo-0125", - "gpt-35-turbo-1106" + "11labs", + "azure", + "cartesia", + "deepgram", + "lmnt", + "neets", + "openai", + "playht", + "rime-ai" ] } - }, - "openAIKey": { - "type": "string", - "description": "This is not returned in the API." - }, - "openAIEndpoint": { - "type": "string" } - }, - "required": [ - "provider", - "region", - "models", - "openAIKey", - "openAIEndpoint" - ] + } }, - "UpdateCartesiaCredentialDTO": { + "CallLogPrivileged": { "type": "object", "properties": { - "provider": { + "callId": { "type": "string", - "enum": [ - "cartesia" - ] + "description": "This is the unique identifier for the call." }, - "apiKey": { + "orgId": { "type": "string", - "description": "This is not returned in the API." - } - }, - "required": [ - "provider", - "apiKey" - ] - }, - "UpdateCustomLLMCredentialDTO": { - "type": "object", - "properties": { - "provider": { + "description": "This is the unique identifier for the org that this call log belongs to." + }, + "log": { "type": "string", - "enum": [ - "custom-llm" - ] + "description": "This is the log message associated with the call." }, - "apiKey": { + "level": { "type": "string", - "description": "This is not returned in the API." + "description": "This is the level of the log message.", + "enum": ["INFO", "LOG", "WARN", "ERROR", "CHECKPOINT"] + }, + "time": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the log was created." } }, - "required": [ - "provider", - "apiKey" - ] + "required": ["callId", "orgId", "log", "level", "time"] }, - "UpdateDeepInfraCredentialDTO": { + "CallLogsPaginatedResponse": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "deepinfra" - ] + "results": { + "type": "array", + "items": { "$ref": "#/components/schemas/CallLogPrivileged" } }, - "apiKey": { - "type": "string", - "description": "This is not returned in the API." - } + "metadata": { "$ref": "#/components/schemas/PaginationMeta" } }, - "required": [ - "provider", - "apiKey" - ] + "required": ["results", "metadata"] }, - "UpdateDeepgramCredentialDTO": { + "MakeTool": { "type": "object", "properties": { - "provider": { + "async": { + "type": "boolean", + "description": "This determines if the tool is async.\n\nIf async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.\n\nIf sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.\n\nDefaults to synchronous (`false`).", + "example": false + }, + "messages": { + "type": "array", + "description": "These are the messages that will be spoken to the user as the tool is running.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/ToolMessageStart", + "title": "ToolMessageStart" + }, + { + "$ref": "#/components/schemas/ToolMessageComplete", + "title": "ToolMessageComplete" + }, + { + "$ref": "#/components/schemas/ToolMessageFailed", + "title": "ToolMessageFailed" + }, + { + "$ref": "#/components/schemas/ToolMessageDelayed", + "title": "ToolMessageDelayed" + } + ] + } + }, + "type": { "type": "string", - "enum": [ - "deepgram" - ] + "enum": ["make"], + "description": "The type of tool. \"make\" for Make tool." }, - "apiKey": { + "id": { "type": "string", - "description": "This is not returned in the API." - } + "description": "The unique identifier for the tool library." + }, + "orgId": { + "type": "string", + "description": "The unique identifier for the organization that this tool library belongs to." + }, + "createdAt": { + "format": "date-time", + "type": "string", + "description": "The ISO 8601 date-time string of when the tool library was created." + }, + "updatedAt": { + "format": "date-time", + "type": "string", + "description": "The ISO 8601 date-time string of when the tool library was last updated." + }, + "function": { + "description": "This is the function definition of the tool.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, this is a custom function definition.", + "allOf": [{ "$ref": "#/components/schemas/OpenAIFunction" }] + }, + "server": { + "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", + "allOf": [{ "$ref": "#/components/schemas/Server" }] + }, + "metadata": { "$ref": "#/components/schemas/MakeToolMetadata" } }, "required": [ - "provider", - "apiKey" + "type", + "id", + "orgId", + "createdAt", + "updatedAt", + "metadata" ] }, - "UpdateElevenLabsCredentialDTO": { + "GhlTool": { "type": "object", "properties": { - "provider": { + "async": { + "type": "boolean", + "description": "This determines if the tool is async.\n\nIf async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.\n\nIf sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.\n\nDefaults to synchronous (`false`).", + "example": false + }, + "messages": { + "type": "array", + "description": "These are the messages that will be spoken to the user as the tool is running.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/ToolMessageStart", + "title": "ToolMessageStart" + }, + { + "$ref": "#/components/schemas/ToolMessageComplete", + "title": "ToolMessageComplete" + }, + { + "$ref": "#/components/schemas/ToolMessageFailed", + "title": "ToolMessageFailed" + }, + { + "$ref": "#/components/schemas/ToolMessageDelayed", + "title": "ToolMessageDelayed" + } + ] + } + }, + "type": { "type": "string", - "enum": [ - "11labs" - ] + "enum": ["ghl"], + "description": "The type of tool. \"ghl\" for GHL tool." + }, + "id": { + "type": "string", + "description": "The unique identifier for the tool library." + }, + "orgId": { + "type": "string", + "description": "The unique identifier for the organization that this tool library belongs to." + }, + "createdAt": { + "format": "date-time", + "type": "string", + "description": "The ISO 8601 date-time string of when the tool library was created." }, - "apiKey": { + "updatedAt": { + "format": "date-time", "type": "string", - "description": "This is not returned in the API." - } + "description": "The ISO 8601 date-time string of when the tool library was last updated." + }, + "function": { + "description": "This is the function definition of the tool.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, this is a custom function definition.", + "allOf": [{ "$ref": "#/components/schemas/OpenAIFunction" }] + }, + "server": { + "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", + "allOf": [{ "$ref": "#/components/schemas/Server" }] + }, + "metadata": { "$ref": "#/components/schemas/GhlToolMetadata" } }, "required": [ - "provider", - "apiKey" + "type", + "id", + "orgId", + "createdAt", + "updatedAt", + "metadata" ] }, - "UpdateGoHighLevelCredentialDTO": { + "FunctionTool": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "gohighlevel" - ] + "async": { + "type": "boolean", + "description": "This determines if the tool is async.\n\nIf async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.\n\nIf sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.\n\nDefaults to synchronous (`false`).", + "example": false }, - "apiKey": { + "messages": { + "type": "array", + "description": "These are the messages that will be spoken to the user as the tool is running.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/ToolMessageStart", + "title": "ToolMessageStart" + }, + { + "$ref": "#/components/schemas/ToolMessageComplete", + "title": "ToolMessageComplete" + }, + { + "$ref": "#/components/schemas/ToolMessageFailed", + "title": "ToolMessageFailed" + }, + { + "$ref": "#/components/schemas/ToolMessageDelayed", + "title": "ToolMessageDelayed" + } + ] + } + }, + "type": { "type": "string", - "description": "This is not returned in the API." - } - }, - "required": [ - "provider", - "apiKey" - ] - }, - "UpdateGroqCredentialDTO": { - "type": "object", - "properties": { - "provider": { + "enum": ["function"], + "description": "The type of tool. \"function\" for Function tool." + }, + "id": { "type": "string", - "enum": [ - "groq" - ] + "description": "The unique identifier for the tool library." }, - "apiKey": { + "orgId": { "type": "string", - "description": "This is not returned in the API." - } - }, - "required": [ - "provider", - "apiKey" - ] - }, - "UpdateLmntCredentialDTO": { - "type": "object", - "properties": { - "provider": { + "description": "The unique identifier for the organization that this tool library belongs to." + }, + "createdAt": { + "format": "date-time", "type": "string", - "enum": [ - "lmnt" - ] + "description": "The ISO 8601 date-time string of when the tool library was created." }, - "apiKey": { + "updatedAt": { + "format": "date-time", "type": "string", - "description": "This is not returned in the API." + "description": "The ISO 8601 date-time string of when the tool library was last updated." + }, + "function": { + "description": "This is the function definition of the tool.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, this is a custom function definition.", + "allOf": [{ "$ref": "#/components/schemas/OpenAIFunction" }] + }, + "server": { + "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", + "allOf": [{ "$ref": "#/components/schemas/Server" }] } }, - "required": [ - "provider", - "apiKey" - ] + "required": ["type", "id", "orgId", "createdAt", "updatedAt"] }, - "UpdateMakeCredentialDTO": { + "UpdateMakeToolDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "make" - ] + "async": { + "type": "boolean", + "description": "This determines if the tool is async.\n\nIf async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.\n\nIf sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.\n\nDefaults to synchronous (`false`).", + "example": false }, - "teamId": { - "type": "string", - "description": "Team ID" + "messages": { + "type": "array", + "description": "These are the messages that will be spoken to the user as the tool is running.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/ToolMessageStart", + "title": "ToolMessageStart" + }, + { + "$ref": "#/components/schemas/ToolMessageComplete", + "title": "ToolMessageComplete" + }, + { + "$ref": "#/components/schemas/ToolMessageFailed", + "title": "ToolMessageFailed" + }, + { + "$ref": "#/components/schemas/ToolMessageDelayed", + "title": "ToolMessageDelayed" + } + ] + } }, - "region": { + "type": { "type": "string", - "description": "Region of your application. For example: eu1, eu2, us1, us2" + "enum": ["make"], + "description": "The type of tool. \"make\" for Make tool." }, - "apiKey": { - "type": "string", - "description": "This is not returned in the API." + "metadata": { "$ref": "#/components/schemas/MakeToolMetadata" }, + "function": { + "description": "This is the function definition of the tool.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, this is a custom function definition.", + "allOf": [{ "$ref": "#/components/schemas/OpenAIFunction" }] + }, + "server": { + "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", + "allOf": [{ "$ref": "#/components/schemas/Server" }] } }, - "required": [ - "provider", - "teamId", - "region", - "apiKey" - ] + "required": ["type", "metadata"] }, - "UpdateOpenAICredentialDTO": { + "UpdateGhlToolDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "openai" - ] + "async": { + "type": "boolean", + "description": "This determines if the tool is async.\n\nIf async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.\n\nIf sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.\n\nDefaults to synchronous (`false`).", + "example": false }, - "apiKey": { + "messages": { + "type": "array", + "description": "These are the messages that will be spoken to the user as the tool is running.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/ToolMessageStart", + "title": "ToolMessageStart" + }, + { + "$ref": "#/components/schemas/ToolMessageComplete", + "title": "ToolMessageComplete" + }, + { + "$ref": "#/components/schemas/ToolMessageFailed", + "title": "ToolMessageFailed" + }, + { + "$ref": "#/components/schemas/ToolMessageDelayed", + "title": "ToolMessageDelayed" + } + ] + } + }, + "type": { "type": "string", - "description": "This is not returned in the API." + "enum": ["ghl"], + "description": "The type of tool. \"ghl\" for GHL tool." + }, + "metadata": { "$ref": "#/components/schemas/GhlToolMetadata" }, + "function": { + "description": "This is the function definition of the tool.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, this is a custom function definition.", + "allOf": [{ "$ref": "#/components/schemas/OpenAIFunction" }] + }, + "server": { + "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", + "allOf": [{ "$ref": "#/components/schemas/Server" }] } }, - "required": [ - "provider", - "apiKey" - ] + "required": ["type", "metadata"] }, - "UpdateOpenRouterCredentialDTO": { + "UpdateFunctionToolDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "openrouter" - ] + "async": { + "type": "boolean", + "description": "This determines if the tool is async.\n\nIf async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.\n\nIf sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.\n\nDefaults to synchronous (`false`).", + "example": false }, - "apiKey": { + "messages": { + "type": "array", + "description": "These are the messages that will be spoken to the user as the tool is running.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/ToolMessageStart", + "title": "ToolMessageStart" + }, + { + "$ref": "#/components/schemas/ToolMessageComplete", + "title": "ToolMessageComplete" + }, + { + "$ref": "#/components/schemas/ToolMessageFailed", + "title": "ToolMessageFailed" + }, + { + "$ref": "#/components/schemas/ToolMessageDelayed", + "title": "ToolMessageDelayed" + } + ] + } + }, + "type": { "type": "string", - "description": "This is not returned in the API." + "enum": ["function"], + "description": "The type of tool. \"function\" for Function tool." + }, + "function": { + "description": "This is the function definition of the tool.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, this is a custom function definition.", + "allOf": [{ "$ref": "#/components/schemas/OpenAIFunction" }] + }, + "server": { + "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", + "allOf": [{ "$ref": "#/components/schemas/Server" }] } }, - "required": [ - "provider", - "apiKey" - ] + "required": ["type"] }, - "UpdatePerplexityAICredentialDTO": { + "VoiceLibraryVoiceResponse": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "perplexity-ai" - ] - }, - "apiKey": { - "type": "string", - "description": "This is not returned in the API." - } + "voiceId": { "type": "string" }, + "name": { "type": "string" }, + "publicOwnerId": { "type": "string" }, + "description": { "type": "string" }, + "gender": { "type": "string" }, + "age": { "type": "object" }, + "accent": { "type": "string" } }, - "required": [ - "provider", - "apiKey" - ] + "required": ["voiceId", "name"] }, - "UpdatePlayHTCredentialDTO": { + "AddVoiceToProviderDTO": { "type": "object", "properties": { - "provider": { + "ownerId": { "type": "string", - "enum": [ - "playht" - ] + "description": "This is the owner_id of your shared voice which you want to add to your provider Account from Provider Voice Library" }, - "apiKey": { + "voiceId": { "type": "string", - "description": "This is not returned in the API." + "description": "This is the voice_id of the shared voice which you want to add to your provider Account from Provider Voice Library" }, - "userId": { - "type": "string" + "name": { + "type": "string", + "description": "This is the new name of the voice which you want to have once you have added voice to your provider Account from Provider Voice Library" } }, - "required": [ - "provider", - "apiKey", - "userId" - ] + "required": ["ownerId", "voiceId", "name"] }, - "UpdateRimeAICredentialDTO": { + "CreateFileDTO": { + "type": "object", + "properties": { "file": { "type": "string", "format": "binary" } }, + "required": ["file"] + }, + "File": { "type": "object", "properties": { - "provider": { + "object": { "type": "string", "enum": ["file"] }, + "status": { "enum": ["indexed", "not_indexed"], "type": "string" }, + "name": { "type": "string", - "enum": [ - "rime-ai" - ] + "description": "This is the name of the file. This is just for your own reference.", + "maxLength": 40 }, - "apiKey": { + "originalName": { "type": "string" }, + "bytes": { "type": "number" }, + "purpose": { "type": "string" }, + "mimetype": { "type": "string" }, + "key": { "type": "string" }, + "path": { "type": "string" }, + "bucket": { "type": "string" }, + "url": { "type": "string" }, + "metadata": { "type": "object" }, + "id": { "type": "string", - "description": "This is not returned in the API." - } - }, - "required": [ - "provider", - "apiKey" - ] - }, - "UpdateRunpodCredentialDTO": { - "type": "object", - "properties": { - "provider": { + "description": "This is the unique identifier for the file." + }, + "orgId": { "type": "string", - "enum": [ - "runpod" - ] + "description": "This is the unique identifier for the org that this file belongs to." }, - "apiKey": { + "createdAt": { + "format": "date-time", "type": "string", - "description": "This is not returned in the API." + "description": "This is the ISO 8601 date-time string of when the file was created." + }, + "updatedAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the file was last updated." } }, - "required": [ - "provider", - "apiKey" - ] + "required": ["id", "orgId", "createdAt", "updatedAt"] }, - "UpdateTogetherAICredentialDTO": { + "AddMessageMessage": { "type": "object", "properties": { - "provider": { + "type": { "type": "string", - "enum": [ - "together-ai" - ] + "description": "This is the type of the message. Send \"add-message\" message to add a message to the conversation.", + "enum": ["add-message"] }, - "apiKey": { - "type": "string", - "description": "This is not returned in the API." + "message": { + "description": "This is the message to add to the conversation.", + "allOf": [{ "$ref": "#/components/schemas/OpenAIMessage" }] } }, - "required": [ - "provider", - "apiKey" - ] + "required": ["type", "message"] }, - "UpdateTwilioCredentialDTO": { + "ControlMessage": { "type": "object", "properties": { - "provider": { + "type": { "type": "string", - "enum": [ - "twilio" - ] + "description": "This is the type of the message. Send \"control\" message to control the assistant.", + "enum": ["control"] }, - "authToken": { + "control": { "type": "string", - "description": "This is not returned in the API." - }, - "accountSid": { - "type": "string" + "description": "This is the control action", + "enum": ["mute-assistant", "unmute-assistant"] } }, - "required": [ - "provider", - "authToken", - "accountSid" - ] + "required": ["type", "control"] }, - "UpdateVonageCredentialDTO": { + "SayMessage": { "type": "object", "properties": { - "provider": { + "type": { "type": "string", - "enum": [ - "vonage" - ] + "description": "This is the type of the message. Send \"say\" message to make the assistant say something.", + "enum": ["say"] }, - "apiSecret": { + "content": { "type": "string", - "description": "This is not returned in the API." + "description": "This is the content to say." }, - "apiKey": { - "type": "string" + "endCallAfterSpoken": { + "type": "boolean", + "description": "This is the flag to end call after content is spoken." } - }, - "required": [ - "provider", - "apiSecret", - "apiKey" - ] + } }, - "BuyPhoneNumberDTO": { + "AssistantRequestMessage": { "type": "object", "properties": { - "areaCode": { - "type": "string", - "description": "This is the area code of the phone number to purchase.", - "minLength": 3, - "maxLength": 3 - }, - "name": { - "type": "string", - "description": "This is the name of the phone number. This is just for your own reference.", - "maxLength": 40 - }, - "assistantId": { + "type": { "type": "string", - "nullable": true, - "description": "This is the assistant that will be used for incoming calls to this phone number.\n\nIf this is not set, then the phone number will not handle incoming calls." + "description": "This is the type of the message. \"assistant-request\" is sent to fetch assistant configuration for an incoming call.", + "enum": ["assistant-request"] }, - "serverUrl": { + "timestamp": { "type": "string", - "description": "This is the server URL that will be used to handle this phone number.\n\nAll requests will be sent with the call object among other things relevant to that message. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org. Order of precedence: function.serverUrl \u003E assistant.serverUrl \u003E phoneNumber.serverUrl \u003E org.serverUrl." + "description": "This is the timestamp of the message." }, - "serverUrlSecret": { - "type": "string", - "description": "This is the secret you can set that Vapi will send with every request to your server. Will be sent as a header called x-vapi-secret.\n\nSame precendence logic as serverUrl." + "artifact": { + "type": "object", + "description": "These are the live artifacts of the call." } }, - "required": [ - "areaCode" - ] + "required": ["type"] }, - "PhoneNumber": { + "ConversationUpdateMessage": { "type": "object", "properties": { - "id": { - "type": "string", - "description": "This is the unique identifier for the phone number." - }, - "orgId": { - "type": "string", - "description": "This is the unique identifier for the org that this phone number belongs to." - }, - "createdAt": { - "format": "date-time", - "type": "string", - "description": "This is the ISO 8601 date-time string of when the phone number was created." - }, - "updatedAt": { - "format": "date-time", - "type": "string", - "description": "This is the ISO 8601 date-time string of when the phone number was last updated." - }, - "stripeSubscriptionId": { - "type": "string", - "description": "This is the subscription for the phone number." - }, - "stripeSubscriptionStatus": { - "type": "string", - "description": "This is the subscription's status." - }, - "stripeSubscriptionCurrentPeriodStart": { - "format": "date-time", - "type": "string", - "description": "This is the subscription's current period start." - }, - "number": { - "type": "string", - "description": "These are the digits of the phone number." - }, - "twilioAccountSid": { - "type": "string", - "description": "This is the Twilio Account SID for the phone number.\n\nThis is for numbers not bought on Vapi." - }, - "twilioAuthToken": { - "type": "string", - "description": "This is the Twilio Auth Token for the phone number.\n\nThis is for numbers not bought on Vapi." - }, - "credentialId": { - "type": "string", - "description": "This is the credential that will be used to handle this phone number.\n\nThis is for numbers not bought on Vapi." - }, - "name": { + "type": { "type": "string", - "description": "This is the name of the phone number. This is just for your own reference.", - "maxLength": 40 + "description": "This is the type of the message. \"conversation-update\" is sent when an update is committed to the conversation history.", + "enum": ["conversation-update"] }, - "assistantId": { - "type": "string", - "nullable": true, - "description": "This is the assistant that will be used for incoming calls to this phone number.\n\nIf this is not set, then the phone number will not handle incoming calls." + "messagesOpenAIFormatted": { + "description": "This is the most up-to-date conversation history at the time the message is sent.", + "type": "array", + "items": { "$ref": "#/components/schemas/OpenAIMessage" } }, - "serverUrl": { + "timestamp": { "type": "string", - "description": "This is the server URL that will be used to handle this phone number.\n\nAll requests will be sent with the call object among other things relevant to that message. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org. Order of precedence: function.serverUrl \u003E assistant.serverUrl \u003E phoneNumber.serverUrl \u003E org.serverUrl." + "description": "This is the timestamp of the message." }, - "serverUrlSecret": { - "type": "string", - "description": "This is the secret you can set that Vapi will send with every request to your server. Will be sent as a header called x-vapi-secret.\n\nSame precendence logic as serverUrl." + "artifact": { + "type": "object", + "description": "These are the live artifacts of the call." } }, - "required": [ - "id", - "orgId", - "createdAt", - "updatedAt", - "number" - ] + "required": ["type", "messagesOpenAIFormatted"] }, - "ImportVonagePhoneNumberDTO": { + "UserMessage": { "type": "object", "properties": { - "vonagePhoneNumber": { + "role": { "type": "string", - "description": "These are the digits of the phone number you own on your Vonage." + "description": "The role of the user in the conversation." }, - "credentialId": { + "message": { "type": "string", - "description": "This is the credential that will be used to handle this phone number.\n\nYou can add the Vonage credentials in the Provider Keys page on the dashboard to get the credentialId." + "description": "The message content from the user." }, - "name": { - "type": "string", - "description": "This is the name of the phone number. This is just for your own reference.", - "maxLength": 40 + "time": { + "type": "number", + "description": "The timestamp when the message was sent." }, - "assistantId": { - "type": "string", - "nullable": true, - "description": "This is the assistant that will be used for incoming calls to this phone number.\n\nIf this is not set, then the phone number will not handle incoming calls." + "endTime": { + "type": "number", + "description": "The timestamp when the message ended." }, - "serverUrl": { - "type": "string", - "description": "This is the server URL that will be used to handle this phone number.\n\nAll requests will be sent with the call object among other things relevant to that message. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org. Order of precedence: function.serverUrl \u003E assistant.serverUrl \u003E phoneNumber.serverUrl \u003E org.serverUrl." + "secondsFromStart": { + "type": "number", + "description": "The number of seconds from the start of the conversation." }, - "serverUrlSecret": { - "type": "string", - "description": "This is the secret you can set that Vapi will send with every request to your server. Will be sent as a header called x-vapi-secret.\n\nSame precendence logic as serverUrl." + "duration": { + "type": "number", + "description": "The duration of the message in seconds." } }, - "required": [ - "vonagePhoneNumber", - "credentialId" - ] + "required": ["role", "message", "time", "endTime", "secondsFromStart"] }, - "UpdatePhoneNumberDTO": { + "SystemMessage": { "type": "object", "properties": { - "name": { + "role": { "type": "string", - "description": "This is the name of the phone number. This is just for your own reference.", - "maxLength": 40 + "description": "The role of the system in the conversation." }, - "assistantId": { + "message": { "type": "string", - "nullable": true, - "description": "This is the assistant that will be used for incoming calls to this phone number.\n\nIf this is not set, then the phone number will not handle incoming calls." + "description": "The message content from the system." }, - "serverUrl": { - "type": "string", - "description": "This is the server URL that will be used to handle this phone number.\n\nAll requests will be sent with the call object among other things relevant to that message. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org. Order of precedence: function.serverUrl \u003E assistant.serverUrl \u003E phoneNumber.serverUrl \u003E org.serverUrl." + "time": { + "type": "number", + "description": "The timestamp when the message was sent." }, - "serverUrlSecret": { - "type": "string", - "description": "This is the secret you can set that Vapi will send with every request to your server. Will be sent as a header called x-vapi-secret.\n\nSame precendence logic as serverUrl." + "secondsFromStart": { + "type": "number", + "description": "The number of seconds from the start of the conversation." } - } + }, + "required": ["role", "message", "time", "secondsFromStart"] }, - "Metrics": { + "BotMessage": { "type": "object", "properties": { - "orgId": { - "type": "string" - }, - "rangeStart": { - "type": "string" - }, - "rangeEnd": { - "type": "string" - }, - "bill": { - "type": "number" + "role": { + "type": "string", + "description": "The role of the bot in the conversation." }, - "billWithinBillingLimit": { - "type": "boolean" + "message": { + "type": "string", + "description": "The message content from the bot." }, - "billDailyBreakdown": { - "type": "object" + "time": { + "type": "number", + "description": "The timestamp when the message was sent." }, - "callActive": { - "type": "string" + "endTime": { + "type": "number", + "description": "The timestamp when the message ended." }, - "callActiveWithinConcurrencyLimit": { - "type": "boolean" + "secondsFromStart": { + "type": "number", + "description": "The number of seconds from the start of the conversation." }, - "callMinutes": { - "type": "string" + "source": { + "type": "string", + "description": "The source of the message." + } + }, + "required": ["role", "message", "time", "endTime", "secondsFromStart"] + }, + "FunctionCallMessage": { + "type": "object", + "properties": { + "role": { + "type": "string", + "description": "The role of the function call in the conversation." }, - "callMinutesDailyBreakdown": { - "type": "object" + "message": { + "type": "string", + "description": "The message content for the function call." }, - "callMinutesAverage": { - "type": "string" + "name": { + "type": "string", + "description": "The name of the function being called." }, - "callMinutesAverageDailyBreakdown": { - "type": "object" + "args": { + "type": "string", + "description": "The arguments for the function call in JSON format." }, - "callCount": { - "type": "string" + "time": { + "type": "number", + "description": "The timestamp when the message was sent." }, - "callCountDailyBreakdown": { - "type": "object" + "secondsFromStart": { + "type": "number", + "description": "The number of seconds from the start of the conversation." } }, "required": [ - "orgId", - "rangeStart", - "rangeEnd", - "bill", - "billWithinBillingLimit", - "billDailyBreakdown", - "callActive", - "callActiveWithinConcurrencyLimit", - "callMinutes", - "callMinutesDailyBreakdown", - "callMinutesAverage", - "callMinutesAverageDailyBreakdown", - "callCount", - "callCountDailyBreakdown" + "role", + "message", + "name", + "args", + "time", + "secondsFromStart" ] }, - "CallLogPrivileged": { + "ToolCallMessage": { "type": "object", "properties": { - "callId": { - "type": "string", - "description": "This is the unique identifier for the call." - }, - "orgId": { + "role": { "type": "string", - "description": "This is the unique identifier for the org that this call log belongs to." + "description": "The role of the tool call in the conversation." }, - "log": { - "type": "string", - "description": "This is the log message associated with the call." + "toolCalls": { + "description": "The list of tool calls made during the conversation.", + "type": "array", + "items": { "type": "object" } }, - "level": { + "message": { "type": "string", - "description": "This is the level of the log message.", - "enum": [ - "INFO", - "LOG", - "WARN", - "ERROR", - "CHECKPOINT" - ] + "description": "The message content for the tool call." }, "time": { - "format": "date-time", - "type": "string", - "description": "This is the ISO 8601 date-time string of when the log was created." + "type": "number", + "description": "The timestamp when the message was sent." + }, + "secondsFromStart": { + "type": "number", + "description": "The number of seconds from the start of the conversation." } }, - "required": [ - "callId", - "orgId", - "log", - "level", - "time" - ] + "required": ["role", "toolCalls", "message", "time", "secondsFromStart"] }, - "PaginationMeta": { + "ToolCallResultMessage": { "type": "object", "properties": { - "itemsPerPage": { - "type": "number" + "role": { + "type": "string", + "description": "The role of the tool call result in the conversation." + }, + "toolCallId": { + "type": "string", + "description": "The ID of the tool call." + }, + "name": { + "type": "string", + "description": "The name of the tool that returned the result." + }, + "result": { + "type": "string", + "description": "The result of the tool call in JSON format." }, - "totalItems": { - "type": "number" + "time": { + "type": "number", + "description": "The timestamp when the message was sent." }, - "currentPage": { - "type": "number" + "secondsFromStart": { + "type": "number", + "description": "The number of seconds from the start of the conversation." } }, "required": [ - "itemsPerPage", - "totalItems", - "currentPage" + "role", + "toolCallId", + "name", + "result", + "time", + "secondsFromStart" ] }, - "CallLogsPaginatedResponse": { + "FunctionResultMessage": { "type": "object", "properties": { - "results": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CallLogPrivileged" - } + "role": { + "type": "string", + "description": "The role of the function result in the conversation." }, - "metadata": { - "$ref": "#/components/schemas/PaginationMeta" + "name": { + "type": "string", + "description": "The name of the function that returned the result." + }, + "result": { + "type": "string", + "description": "The result of the function call in JSON format." + }, + "time": { + "type": "number", + "description": "The timestamp when the message was sent." + }, + "secondsFromStart": { + "type": "number", + "description": "The number of seconds from the start of the conversation." } }, - "required": [ - "results", - "metadata" - ] + "required": ["role", "name", "result", "time", "secondsFromStart"] }, - "MakeTool": { + "EndOfCallReportMessage": { "type": "object", "properties": { - "async": { - "type": "boolean", - "description": "This determines if the tool is async.\n\nIf async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.\n\nIf sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.\n\nDefaults to synchronous (`false`).", - "example": false + "type": { + "type": "string", + "description": "This is the type of the message. \"end-of-call-report\" is sent when the call ends and post-processing is complete.", + "enum": ["end-of-call-report"] + }, + "endedReason": { + "type": "string", + "description": "This is the reason the call ended.", + "enum": [ + "assistant-error", + "assistant-not-found", + "db-error", + "no-server-available", + "pipeline-error-extra-function-failed", + "pipeline-error-first-message-failed", + "pipeline-error-function-filler-failed", + "pipeline-error-function-failed", + "pipeline-error-openai-llm-failed", + "pipeline-error-azure-openai-llm-failed", + "pipeline-error-together-ai-llm-failed", + "pipeline-error-anyscale-llm-failed", + "pipeline-error-openrouter-llm-failed", + "pipeline-error-perplexity-ai-llm-failed", + "pipeline-error-deepinfra-llm-failed", + "pipeline-error-runpod-llm-failed", + "pipeline-error-groq-llm-failed", + "pipeline-error-anthropic-llm-failed", + "pipeline-error-openai-voice-failed", + "pipeline-error-cartesia-voice-failed", + "pipeline-error-deepgram-transcriber-failed", + "pipeline-error-deepgram-voice-failed", + "pipeline-error-eleven-labs-voice-failed", + "pipeline-error-playht-voice-failed", + "pipeline-error-lmnt-voice-failed", + "pipeline-error-azure-voice-failed", + "pipeline-error-rime-ai-voice-failed", + "pipeline-error-neets-voice-failed", + "pipeline-no-available-llm-model", + "server-shutdown", + "twilio-failed-to-connect-call", + "unknown-error", + "vonage-disconnected", + "vonage-failed-to-connect-call", + "phone-call-provider-bypass-enabled-but-no-call-received", + "vapi-error-phone-call-worker-setup-socket-error", + "vapi-error-phone-call-worker-worker-setup-socket-timeout", + "vapi-error-phone-call-worker-could-not-find-call", + "vapi-error-phone-call-worker-call-never-connected", + "vapi-error-web-call-worker-setup-failed", + "assistant-not-invalid", + "assistant-not-provided", + "call-start-error-neither-assistant-nor-server-set", + "assistant-request-failed", + "assistant-request-returned-error", + "assistant-request-returned-invalid-assistant", + "assistant-request-returned-no-assistant", + "assistant-request-returned-forwarding-phone-number", + "assistant-ended-call", + "assistant-said-end-call-phrase", + "assistant-forwarded-call", + "assistant-join-timed-out", + "customer-busy", + "customer-ended-call", + "customer-did-not-answer", + "customer-did-not-give-microphone-permission", + "incoming-client-message-say-ended-call", + "exceeded-max-duration", + "manually-canceled", + "phone-call-provider-closed-websocket", + "pipeline-error-custom-llm-llm-failed", + "pipeline-error-eleven-labs-voice-not-found", + "pipeline-error-eleven-labs-quota-exceeded", + "pipeline-error-eleven-labs-blocked-free-plan", + "pipeline-error-eleven-labs-blocked-concurrent-requests", + "pipeline-error-eleven-labs-unauthorized-access", + "pipeline-error-eleven-labs-system-busy-and-requested-upgrade", + "pipeline-error-eleven-labs-voice-not-fine-tuned", + "pipeline-error-eleven-labs-invalid-api-key", + "pipeline-error-playht-request-timed-out", + "pipeline-error-playht-invalid-voice", + "pipeline-error-playht-unexpected-error", + "pipeline-error-playht-out-of-credits", + "pipeline-error-playht-rate-limit-exceeded", + "pipeline-error-playht-502-gateway-error", + "pipeline-error-playht-504-gateway-error", + "silence-timed-out", + "voicemail", + "vonage-rejected" + ] }, "messages": { "type": "array", - "description": "These are the messages that will be spoken to the user as the tool is running.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.", + "description": "These are the message history of the call. The format is not OpenAI format but a custom VAPI format.", "items": { "oneOf": [ { - "$ref": "#/components/schemas/ToolMessageStart", - "title": "ToolMessageStart" + "$ref": "#/components/schemas/UserMessage", + "title": "UserMessage" }, { - "$ref": "#/components/schemas/ToolMessageComplete", - "title": "ToolMessageComplete" + "$ref": "#/components/schemas/SystemMessage", + "title": "SystemMessage" }, { - "$ref": "#/components/schemas/ToolMessageFailed", - "title": "ToolMessageFailed" + "$ref": "#/components/schemas/BotMessage", + "title": "BotMessage" }, { - "$ref": "#/components/schemas/ToolMessageDelayed", - "title": "ToolMessageDelayed" + "$ref": "#/components/schemas/FunctionCallMessage", + "title": "FunctionCallMessage" + }, + { + "$ref": "#/components/schemas/ToolCallMessage", + "title": "ToolCallMessage" + }, + { + "$ref": "#/components/schemas/ToolCallResultMessage", + "title": "ToolCallResultMessage" + }, + { + "$ref": "#/components/schemas/FunctionResultMessage", + "title": "FunctionResultMessage" } ] } }, + "recordingUrl": { + "type": "string", + "description": "This is the URL of the call recording." + }, + "stereoRecordingUrl": { + "type": "string", + "description": "This is the URL of the stereo call recording." + }, + "transcript": { + "type": "string", + "description": "This is the transcript of the call." + }, + "summary": { + "type": "string", + "description": "This is the summary of the call." + }, + "analysis": { + "description": "This is the analysis of the call.", + "allOf": [{ "$ref": "#/components/schemas/Analysis" }] + }, + "artifact": { + "description": "These are the artifacts from the call.", + "allOf": [{ "$ref": "#/components/schemas/Artifact" }] + }, + "timestamp": { + "type": "string", + "description": "This is the timestamp of the message." + } + }, + "required": ["type", "endedReason", "transcript", "summary", "analysis"] + }, + "FunctionCallResultMessage": { + "type": "object", + "properties": { "type": { "type": "string", - "enum": [ - "make" - ], - "description": "The type of tool. \"make\" for Make tool." + "description": "This is the type of the message. \"function-call-result\" is sent to forward the result of a function call to the client.", + "deprecated": true, + "enum": ["function-call-result"] }, - "id": { + "functionCallResult": { + "type": "object", + "description": "This is the result of the function call." + }, + "timestamp": { + "type": "string", + "description": "This is the timestamp of the message." + }, + "artifact": { + "type": "object", + "description": "These are the live artifacts of the call." + } + }, + "required": ["type", "functionCallResult"] + }, + "HangMessage": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "This is the type of the message. \"hang\" is sent when the assistant is hanging due to a delay. The delay can be caused by many factors, such as:\n- the model is too slow to respond\n- the voice is too slow to respond\n- the tool call is still waiting for a response from your server\n- etc.", + "enum": ["hang"] + }, + "timestamp": { + "type": "string", + "description": "This is the timestamp of the message." + }, + "artifact": { + "type": "object", + "description": "These are the live artifacts of the call." + } + }, + "required": ["type"] + }, + "MetadataMessage": { + "type": "object", + "properties": { + "type": { "type": "string", - "description": "The unique identifier for the tool library." + "description": "This is the type of the message. \"metadata\" is sent to forward metadata to the client.", + "enum": ["metadata"] }, - "orgId": { + "metadata": { "type": "string", - "description": "The unique identifier for the organization that this tool library belongs to." + "description": "This is the metadata content" }, - "createdAt": { - "format": "date-time", + "timestamp": { "type": "string", - "description": "The ISO 8601 date-time string of when the tool library was created." + "description": "This is the timestamp of the message." }, - "updatedAt": { - "format": "date-time", + "artifact": { + "type": "object", + "description": "These are the live artifacts of the call." + } + }, + "required": ["type", "metadata"] + }, + "MessagesRequestMessage": { + "type": "object", + "properties": { + "type": { "type": "string", - "description": "The ISO 8601 date-time string of when the tool library was last updated." + "description": "This is the type of the message. \"messages-request\" is sent to request messages before starting the call.", + "enum": ["messages-request"] }, - "function": { - "description": "This is the function definition of the tool.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, this is a custom function definition.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] + "code": { + "type": "string", + "description": "This is the dtmf code that was inputted." }, - "server": { - "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", - "allOf": [ - { - "$ref": "#/components/schemas/Server" - } - ] + "timestamp": { + "type": "string", + "description": "This is the timestamp of the message." }, - "metadata": { - "$ref": "#/components/schemas/MakeToolMetadata" + "artifact": { + "type": "object", + "description": "These are the live artifacts of the call." } }, - "required": [ - "type", - "id", - "orgId", - "createdAt", - "updatedAt", - "metadata" - ] + "required": ["type", "code"] }, - "GhlTool": { + "ModelOutputMessage": { "type": "object", "properties": { - "async": { - "type": "boolean", - "description": "This determines if the tool is async.\n\nIf async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.\n\nIf sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.\n\nDefaults to synchronous (`false`).", - "example": false - }, - "messages": { - "type": "array", - "description": "These are the messages that will be spoken to the user as the tool is running.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.", - "items": { - "oneOf": [ - { - "$ref": "#/components/schemas/ToolMessageStart", - "title": "ToolMessageStart" - }, - { - "$ref": "#/components/schemas/ToolMessageComplete", - "title": "ToolMessageComplete" - }, - { - "$ref": "#/components/schemas/ToolMessageFailed", - "title": "ToolMessageFailed" - }, - { - "$ref": "#/components/schemas/ToolMessageDelayed", - "title": "ToolMessageDelayed" - } - ] - } - }, "type": { "type": "string", - "enum": [ - "ghl" - ], - "description": "The type of tool. \"ghl\" for GHL tool." + "description": "This is the type of the message. \"model-output\" is sent as the model outputs tokens.", + "enum": ["model-output"] }, - "id": { + "output": { "type": "string", - "description": "The unique identifier for the tool library." + "description": "This is the output of the model." }, - "orgId": { + "timestamp": { "type": "string", - "description": "The unique identifier for the organization that this tool library belongs to." + "description": "This is the timestamp of the message." }, - "createdAt": { - "format": "date-time", + "artifact": { + "type": "object", + "description": "These are the live artifacts of the call." + } + }, + "required": ["type", "output"] + }, + "PhoneCallControlMessage": { + "type": "object", + "properties": { + "type": { "type": "string", - "description": "The ISO 8601 date-time string of when the tool library was created." + "description": "This is the type of the message. \"phone-call-control\" is a special type of message. When it is requested in `assistant.serverMessages`, the hangup and forwarding responsibilities are delegated to your server.", + "enum": ["phone-call-control"] }, - "updatedAt": { - "format": "date-time", + "request": { "type": "string", - "description": "The ISO 8601 date-time string of when the tool library was last updated." + "description": "This is the request to control the phone call.", + "enum": ["forward", "hang-up"] }, - "function": { - "description": "This is the function definition of the tool.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, this is a custom function definition.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] + "forwardingPhoneNumber": { + "type": "string", + "description": "This is the phone number to forward to if the request is \"forward\"." }, - "server": { - "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", - "allOf": [ - { - "$ref": "#/components/schemas/Server" - } - ] + "timestamp": { + "type": "string", + "description": "This is the timestamp of the message." }, - "metadata": { - "$ref": "#/components/schemas/GhlToolMetadata" + "artifact": { + "type": "object", + "description": "These are the live artifacts of the call." } }, - "required": [ - "type", - "id", - "orgId", - "createdAt", - "updatedAt", - "metadata" - ] + "required": ["type", "request"] }, - "FunctionTool": { + "SpeechUpdateMessage": { "type": "object", "properties": { - "async": { - "type": "boolean", - "description": "This determines if the tool is async.\n\nIf async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.\n\nIf sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.\n\nDefaults to synchronous (`false`).", - "example": false - }, - "messages": { - "type": "array", - "description": "These are the messages that will be spoken to the user as the tool is running.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.", - "items": { - "oneOf": [ - { - "$ref": "#/components/schemas/ToolMessageStart", - "title": "ToolMessageStart" - }, - { - "$ref": "#/components/schemas/ToolMessageComplete", - "title": "ToolMessageComplete" - }, - { - "$ref": "#/components/schemas/ToolMessageFailed", - "title": "ToolMessageFailed" - }, - { - "$ref": "#/components/schemas/ToolMessageDelayed", - "title": "ToolMessageDelayed" - } - ] - } - }, "type": { "type": "string", - "enum": [ - "function" - ], - "description": "The type of tool. \"function\" for Function tool." + "description": "This is the type of the message. \"speech-update\" is sent whenever assistant or user start or stop speaking.", + "enum": ["speech-update"] }, - "id": { + "status": { "type": "string", - "description": "The unique identifier for the tool library." + "description": "This is the status of the speech update.", + "enum": ["started", "stopped"] }, - "orgId": { + "role": { "type": "string", - "description": "The unique identifier for the organization that this tool library belongs to." + "description": "This is the role which the speech update is for.", + "enum": ["assistant", "user"] }, - "createdAt": { - "format": "date-time", + "timestamp": { "type": "string", - "description": "The ISO 8601 date-time string of when the tool library was created." + "description": "This is the timestamp of the message." }, - "updatedAt": { - "format": "date-time", + "artifact": { + "type": "object", + "description": "These are the live artifacts of the call." + } + }, + "required": ["type", "status", "role"] + }, + "StatusUpdateMessage": { + "type": "object", + "properties": { + "type": { "type": "string", - "description": "The ISO 8601 date-time string of when the tool library was last updated." + "description": "This is the type of the message. \"status-update\" is sent whenever the status of the call changes.", + "enum": ["status-update"] }, - "function": { - "description": "This is the function definition of the tool.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, this is a custom function definition.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] + "status": { + "type": "string", + "description": "This is the status of the call.", + "enum": ["queued", "ringing", "in-progress", "forwarding", "ended"] }, - "server": { - "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", - "allOf": [ - { - "$ref": "#/components/schemas/Server" - } + "endedReason": { + "type": "string", + "description": "This is the reason the call ended. This is only sent if the status is \"ended\".", + "enum": [ + "assistant-error", + "assistant-not-found", + "db-error", + "no-server-available", + "pipeline-error-extra-function-failed", + "pipeline-error-first-message-failed", + "pipeline-error-function-filler-failed", + "pipeline-error-function-failed", + "pipeline-error-openai-llm-failed", + "pipeline-error-azure-openai-llm-failed", + "pipeline-error-together-ai-llm-failed", + "pipeline-error-anyscale-llm-failed", + "pipeline-error-openrouter-llm-failed", + "pipeline-error-perplexity-ai-llm-failed", + "pipeline-error-deepinfra-llm-failed", + "pipeline-error-runpod-llm-failed", + "pipeline-error-groq-llm-failed", + "pipeline-error-anthropic-llm-failed", + "pipeline-error-openai-voice-failed", + "pipeline-error-cartesia-voice-failed", + "pipeline-error-deepgram-transcriber-failed", + "pipeline-error-deepgram-voice-failed", + "pipeline-error-eleven-labs-voice-failed", + "pipeline-error-playht-voice-failed", + "pipeline-error-lmnt-voice-failed", + "pipeline-error-azure-voice-failed", + "pipeline-error-rime-ai-voice-failed", + "pipeline-error-neets-voice-failed", + "pipeline-no-available-llm-model", + "server-shutdown", + "twilio-failed-to-connect-call", + "unknown-error", + "vonage-disconnected", + "vonage-failed-to-connect-call", + "phone-call-provider-bypass-enabled-but-no-call-received", + "vapi-error-phone-call-worker-setup-socket-error", + "vapi-error-phone-call-worker-worker-setup-socket-timeout", + "vapi-error-phone-call-worker-could-not-find-call", + "vapi-error-phone-call-worker-call-never-connected", + "vapi-error-web-call-worker-setup-failed", + "assistant-not-invalid", + "assistant-not-provided", + "call-start-error-neither-assistant-nor-server-set", + "assistant-request-failed", + "assistant-request-returned-error", + "assistant-request-returned-invalid-assistant", + "assistant-request-returned-no-assistant", + "assistant-request-returned-forwarding-phone-number", + "assistant-ended-call", + "assistant-said-end-call-phrase", + "assistant-forwarded-call", + "assistant-join-timed-out", + "customer-busy", + "customer-ended-call", + "customer-did-not-answer", + "customer-did-not-give-microphone-permission", + "incoming-client-message-say-ended-call", + "exceeded-max-duration", + "manually-canceled", + "phone-call-provider-closed-websocket", + "pipeline-error-custom-llm-llm-failed", + "pipeline-error-eleven-labs-voice-not-found", + "pipeline-error-eleven-labs-quota-exceeded", + "pipeline-error-eleven-labs-blocked-free-plan", + "pipeline-error-eleven-labs-blocked-concurrent-requests", + "pipeline-error-eleven-labs-unauthorized-access", + "pipeline-error-eleven-labs-system-busy-and-requested-upgrade", + "pipeline-error-eleven-labs-voice-not-fine-tuned", + "pipeline-error-eleven-labs-invalid-api-key", + "pipeline-error-playht-request-timed-out", + "pipeline-error-playht-invalid-voice", + "pipeline-error-playht-unexpected-error", + "pipeline-error-playht-out-of-credits", + "pipeline-error-playht-rate-limit-exceeded", + "pipeline-error-playht-502-gateway-error", + "pipeline-error-playht-504-gateway-error", + "silence-timed-out", + "voicemail", + "vonage-rejected" ] - } - }, - "required": [ - "type", - "id", - "orgId", - "createdAt", - "updatedAt" - ] - }, - "UpdateMakeToolDTO": { - "type": "object", - "properties": { - "async": { - "type": "boolean", - "description": "This determines if the tool is async.\n\nIf async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.\n\nIf sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.\n\nDefaults to synchronous (`false`).", - "example": false }, "messages": { "type": "array", - "description": "These are the messages that will be spoken to the user as the tool is running.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.", + "description": "These are the conversation messages of the call. This is only sent if the status is \"forwarding\".", "items": { "oneOf": [ { - "$ref": "#/components/schemas/ToolMessageStart", - "title": "ToolMessageStart" + "$ref": "#/components/schemas/UserMessage", + "title": "UserMessage" }, { - "$ref": "#/components/schemas/ToolMessageComplete", - "title": "ToolMessageComplete" + "$ref": "#/components/schemas/SystemMessage", + "title": "SystemMessage" }, { - "$ref": "#/components/schemas/ToolMessageFailed", - "title": "ToolMessageFailed" + "$ref": "#/components/schemas/BotMessage", + "title": "BotMessage" }, { - "$ref": "#/components/schemas/ToolMessageDelayed", - "title": "ToolMessageDelayed" + "$ref": "#/components/schemas/FunctionCallMessage", + "title": "FunctionCallMessage" + }, + { + "$ref": "#/components/schemas/ToolCallMessage", + "title": "ToolCallMessage" + }, + { + "$ref": "#/components/schemas/ToolCallResultMessage", + "title": "ToolCallResultMessage" + }, + { + "$ref": "#/components/schemas/FunctionResultMessage", + "title": "FunctionResultMessage" } ] } }, - "type": { + "messagesOpenAIFormatted": { + "description": "These are the conversation messages of the call. This is only sent if the status is \"forwarding\".", + "type": "array", + "items": { "$ref": "#/components/schemas/OpenAIMessage" } + }, + "transcript": { "type": "string", - "enum": [ - "make" - ], - "description": "The type of tool. \"make\" for Make tool." + "description": "This is the transcript of the call. This is only sent if the status is \"forwarding\"." }, - "metadata": { - "$ref": "#/components/schemas/MakeToolMetadata" + "forwardingPhoneNumber": { + "type": "string", + "description": "This is number call is being forwarded to. This is only sent if the status is \"forwarding\"." }, - "function": { - "description": "This is the function definition of the tool.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, this is a custom function definition.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] + "inboundPhoneCallDebuggingArtifacts": { + "type": "object", + "description": "This is the inbound phone call debugging artifacts. This is only sent if the status is \"ended\" and there was an error accepting the inbound phone call.\n\nThis will include any errors related to the \"assistant-request\" if one was made." }, - "server": { - "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", - "allOf": [ - { - "$ref": "#/components/schemas/Server" - } - ] + "timestamp": { + "type": "string", + "description": "This is the timestamp of the message." + }, + "artifact": { + "type": "object", + "description": "These are the live artifacts of the call." } }, - "required": [ - "type", - "metadata" - ] + "required": ["type", "status"] }, - "UpdateGhlToolDTO": { + "ToolCallsResultMessage": { "type": "object", "properties": { - "async": { - "type": "boolean", - "description": "This determines if the tool is async.\n\nIf async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.\n\nIf sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.\n\nDefaults to synchronous (`false`).", - "example": false + "type": { + "type": "string", + "description": "This is the type of the message. \"tool-calls-result\" is sent to forward the result of a tool call to the client.", + "enum": ["tool-calls-result"] }, - "messages": { - "type": "array", - "description": "These are the messages that will be spoken to the user as the tool is running.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.", - "items": { - "oneOf": [ - { - "$ref": "#/components/schemas/ToolMessageStart", - "title": "ToolMessageStart" - }, - { - "$ref": "#/components/schemas/ToolMessageComplete", - "title": "ToolMessageComplete" - }, - { - "$ref": "#/components/schemas/ToolMessageFailed", - "title": "ToolMessageFailed" - }, - { - "$ref": "#/components/schemas/ToolMessageDelayed", - "title": "ToolMessageDelayed" - } - ] - } + "toolCallResult": { + "type": "object", + "description": "This is the result of the tool call." }, - "type": { + "timestamp": { "type": "string", - "enum": [ - "ghl" - ], - "description": "The type of tool. \"ghl\" for GHL tool." + "description": "This is the timestamp of the message." }, - "metadata": { - "$ref": "#/components/schemas/GhlToolMetadata" + "artifact": { + "type": "object", + "description": "These are the live artifacts of the call." + } + }, + "required": ["type", "toolCallResult"] + }, + "ToolCallFunction": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "This is the name of the function the model called." + }, + "arguments": { + "type": "object", + "description": "These are the arguments that the function was called with." + } + }, + "required": ["name", "arguments"] + }, + "ToolCall": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "This is the type of tool the model called.", + "enum": ["function"] }, "function": { - "description": "This is the function definition of the tool.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, this is a custom function definition.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] + "description": "This is the function the model called.", + "allOf": [{ "$ref": "#/components/schemas/ToolCallFunction" }] }, - "server": { - "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", - "allOf": [ - { - "$ref": "#/components/schemas/Server" - } - ] + "id": { + "type": "string", + "description": "This is the unique identifier for the tool call." } }, - "required": [ - "type", - "metadata" - ] + "required": ["type", "function", "id"] }, - "UpdateFunctionToolDTO": { + "ToolCallsMessage": { "type": "object", "properties": { - "async": { - "type": "boolean", - "description": "This determines if the tool is async.\n\nIf async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.\n\nIf sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.\n\nDefaults to synchronous (`false`).", - "example": false + "type": { + "type": "string", + "description": "This is the type of the message. \"tool-calls\" is sent to call a tool.", + "enum": ["tool-calls"] }, - "messages": { + "toolWithToolCallList": { "type": "array", - "description": "These are the messages that will be spoken to the user as the tool is running.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.", + "description": "This is the list of tools calls that the model is requesting along with the original tool configuration.", "items": { "oneOf": [ { - "$ref": "#/components/schemas/ToolMessageStart", - "title": "ToolMessageStart" - }, - { - "$ref": "#/components/schemas/ToolMessageComplete", - "title": "ToolMessageComplete" + "$ref": "#/components/schemas/FunctionToolWithToolCall", + "title": "FunctionToolWithToolCall" }, { - "$ref": "#/components/schemas/ToolMessageFailed", - "title": "ToolMessageFailed" + "$ref": "#/components/schemas/GhlToolWithToolCall", + "title": "GhlToolWithToolCall" }, { - "$ref": "#/components/schemas/ToolMessageDelayed", - "title": "ToolMessageDelayed" + "$ref": "#/components/schemas/MakeToolWithToolCall", + "title": "MakeToolWithToolCall" } ] } }, - "type": { - "type": "string", - "enum": [ - "function" - ], - "description": "The type of tool. \"function\" for Function tool." + "toolCallList": { + "description": "This is the list of tool calls that the model is requesting.", + "type": "array", + "items": { "$ref": "#/components/schemas/ToolCall" } }, - "function": { - "description": "This is the function definition of the tool.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, this is a custom function definition.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] + "timestamp": { + "type": "string", + "description": "This is the timestamp of the message." }, - "server": { - "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", - "allOf": [ - { - "$ref": "#/components/schemas/Server" - } - ] + "artifact": { + "type": "object", + "description": "These are the live artifacts of the call." } }, - "required": [ - "type" - ] + "required": ["toolWithToolCallList", "toolCallList"] }, - "CreateFileDTO": { + "TransferDestinationRequestMessage": { "type": "object", "properties": { - "file": { + "type": { + "type": "string", + "description": "This is the type of the message. \"transfer-destination-request\" is sent when the model is requesting transfer but destination is unknown.", + "enum": ["transfer-destination-request"] + }, + "timestamp": { "type": "string", - "format": "binary" + "description": "This is the timestamp of the message." + }, + "artifact": { + "type": "object", + "description": "These are the live artifacts of the call." } }, - "required": [ - "file" - ] + "required": ["type"] }, - "File": { + "TranscriptMessage": { "type": "object", "properties": { - "name": { + "type": { "type": "string", - "description": "This is the name of the file. This is just for your own reference." + "description": "This is the type of the message. \"transcript\" is sent as transcriber outputs partial or final transcript.", + "enum": ["transcript"] }, - "originalName": { - "type": "string" - }, - "object": { + "role": { "type": "string", - "default": "file", - "enum": [ - "file" - ] + "description": "This is the role for which the transcript is for.", + "enum": ["assistant", "user"] }, - "bytes": { - "type": "number" - }, - "purpose": { - "type": "string" - }, - "mimetype": { - "type": "string" - }, - "url": { - "type": "string" - }, - "metadata": { - "type": "object" - }, - "status": { - "enum": [ - "indexed", - "not_indexed" - ], - "type": "string" + "transcriptType": { + "type": "string", + "description": "This is the type of the transcript.", + "enum": ["partial", "final"] }, - "key": { - "type": "string" + "transcript": { + "type": "string", + "description": "This is the transcript content." }, - "path": { - "type": "string" + "timestamp": { + "type": "string", + "description": "This is the timestamp of the message." }, - "bucket": { + "artifact": { + "type": "object", + "description": "These are the live artifacts of the call." + } + }, + "required": ["type", "role", "transcriptType", "transcript"] + }, + "UserInterruptedMessage": { + "type": "object", + "properties": { + "type": { "type": "string", - "default": "files" + "description": "This is the type of the message. \"user-interrupted\" is sent when the user interrupts the assistant.", + "enum": ["user-interrupted"] }, - "id": { + "timestamp": { "type": "string", - "description": "This is the unique identifier for the file." + "description": "This is the timestamp of the message." }, - "orgId": { + "artifact": { + "type": "object", + "description": "These are the live artifacts of the call." + } + }, + "required": ["type"] + }, + "VoiceInputMessage": { + "type": "object", + "properties": { + "type": { "type": "string", - "description": "This is the unique identifier for the org that this file belongs to." + "description": "This is the type of the message. \"voice-input\" is sent when a generation is requested from voice provider.", + "enum": ["voice-input"] }, - "createdAt": { - "format": "date-time", + "input": { "type": "string", - "description": "This is the ISO 8601 date-time string of when the file was created." + "description": "This is the voice input content" }, - "updatedAt": { - "format": "date-time", + "timestamp": { "type": "string", - "description": "This is the ISO 8601 date-time string of when the file was last updated." + "description": "This is the timestamp of the message." + }, + "artifact": { + "type": "object", + "description": "These are the live artifacts of the call." } }, - "required": [ - "id", - "orgId", - "createdAt", - "updatedAt" - ] + "required": ["type", "input"] + }, + "ClientMessage": { + "type": "object", + "properties": { + "message": { + "oneOf": [ + { "$ref": "#/components/schemas/AddMessageMessage" }, + { "$ref": "#/components/schemas/ControlMessage" }, + { "$ref": "#/components/schemas/SayMessage" }, + { "$ref": "#/components/schemas/AssistantRequestMessage" }, + { "$ref": "#/components/schemas/ConversationUpdateMessage" }, + { "$ref": "#/components/schemas/EndOfCallReportMessage" }, + { "$ref": "#/components/schemas/FunctionCallMessage" }, + { "$ref": "#/components/schemas/FunctionCallResultMessage" }, + { "$ref": "#/components/schemas/HangMessage" }, + { "$ref": "#/components/schemas/MetadataMessage" }, + { "$ref": "#/components/schemas/MessagesRequestMessage" }, + { "$ref": "#/components/schemas/ModelOutputMessage" }, + { "$ref": "#/components/schemas/PhoneCallControlMessage" }, + { "$ref": "#/components/schemas/SpeechUpdateMessage" }, + { "$ref": "#/components/schemas/StatusUpdateMessage" }, + { "$ref": "#/components/schemas/ToolCallsResultMessage" }, + { "$ref": "#/components/schemas/ToolCallsMessage" }, + { + "$ref": "#/components/schemas/TransferDestinationRequestMessage" + }, + { "$ref": "#/components/schemas/TranscriptMessage" }, + { "$ref": "#/components/schemas/UserInterruptedMessage" }, + { "$ref": "#/components/schemas/VoiceInputMessage" } + ] + } + }, + "required": ["message"] + }, + "ServerMessage": { + "type": "object", + "properties": { + "message": { + "oneOf": [ + { "$ref": "#/components/schemas/AddMessageMessage" }, + { "$ref": "#/components/schemas/ControlMessage" }, + { "$ref": "#/components/schemas/SayMessage" }, + { "$ref": "#/components/schemas/AssistantRequestMessage" }, + { "$ref": "#/components/schemas/ConversationUpdateMessage" }, + { "$ref": "#/components/schemas/EndOfCallReportMessage" }, + { "$ref": "#/components/schemas/FunctionCallMessage" }, + { "$ref": "#/components/schemas/FunctionCallResultMessage" }, + { "$ref": "#/components/schemas/HangMessage" }, + { "$ref": "#/components/schemas/MetadataMessage" }, + { "$ref": "#/components/schemas/MessagesRequestMessage" }, + { "$ref": "#/components/schemas/ModelOutputMessage" }, + { "$ref": "#/components/schemas/PhoneCallControlMessage" }, + { "$ref": "#/components/schemas/SpeechUpdateMessage" }, + { "$ref": "#/components/schemas/StatusUpdateMessage" }, + { "$ref": "#/components/schemas/ToolCallsResultMessage" }, + { "$ref": "#/components/schemas/ToolCallsMessage" }, + { + "$ref": "#/components/schemas/TransferDestinationRequestMessage" + }, + { "$ref": "#/components/schemas/TranscriptMessage" }, + { "$ref": "#/components/schemas/UserInterruptedMessage" }, + { "$ref": "#/components/schemas/VoiceInputMessage" } + ] + } + }, + "required": ["message"] } } } -} \ No newline at end of file +} diff --git a/mint.json b/mint.json index c23d3da..586bb0b 100644 --- a/mint.json +++ b/mint.json @@ -196,13 +196,14 @@ }, "GHL", "custom-llm-guide", - "tools-calling" + "tools-calling", + "prompting-guide" ] }, { "group": "Glossary", - "pages": ["prompting-guide", "glossary", "faq"] + "pages": ["glossary", "faq"] }, { "group": "Community", @@ -252,19 +253,31 @@ ] }, { - "group": "Credentials", + "group": "Squads", "pages": [ - "api-reference/credentials/list-credentials", - "api-reference/credentials/get-credential", - "api-reference/credentials/create-credential", - "api-reference/credentials/update-credential", - "api-reference/credentials/delete-credential" + "api-reference/squads/list-squads", + "api-reference/squads/get-squad", + "api-reference/squads/create-squad", + "api-reference/squads/update-squad", + "api-reference/squads/delete-squad" ] }, { - "group": "Metrics", + "group": "Server and Client", + "pages": [ + "api-reference/messages/server-message", + "api-reference/messages/client-message", + "api-reference/messages/server-message-response" + ] + }, + { + "group": "Billing Metrics", "pages": ["api-reference/metrics/list-metrics"] }, + { + "group": "Call Logs", + "pages": ["api-reference/logs/list-logs"] + }, { "group": "", "pages": ["api-reference/swagger", "api-reference/openapi"]