Work with this as data
Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/geniemode:geniemode-vapi-call-controller-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
OpenAPI Specification
openapi: 3.2.0
info:
description: Cataloguing API.
version: API V
title: Cataloguing Vapi Call Controller API
termsOfService: Terms of service
contact:
name: Mani Bhushan
url: www.geniemode.com
email: mani.kumar@geniemode.com
license:
name: License of API
url: API license URL
servers:
- url: https://portal.geniemode.com
tags:
- name: vapi-call-controller
description: Vapi Call Controller
paths:
/api/v1/vapi/call:
post:
tags:
- vapi-call-controller
summary: placeCall
operationId: placeCallUsingPOST
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/VapiCallLog'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/VapiCallRequestDto'
description: requestDto
required: true
/api/v1/vapi/call/reconcile-pending:
post:
tags:
- vapi-call-controller
summary: reconcilePending
operationId: reconcilePendingUsingPOST
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/VapiCallLog'
/api/v1/vapi/call/{id}:
get:
tags:
- vapi-call-controller
summary: getCall
operationId: getCallUsingGET
parameters:
- name: id
in: path
description: id
required: true
schema:
type: integer
format: int64
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/VapiCallLog'
'403':
description: Forbidden!!!!!
'500':
description: 500 message
/api/v1/vapi/call/{id}/reconcile:
post:
tags:
- vapi-call-controller
summary: reconcile
operationId: reconcileUsingPOST
parameters:
- name: id
in: path
description: id
required: true
schema:
type: integer
format: int64
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/VapiCallLog'
/api/v1/vapi/calls:
get:
tags:
- vapi-call-controller
summary: listCalls
operationId: listCallsUsingGET
parameters:
- name: assistantId
in: query
required: false
schema:
type: string
- name: customerNumber
in: query
required: false
schema:
type: string
- name: endedReason
in: query
required: false
schema:
type: string
- name: fromDate
in: query
required: false
schema:
type: integer
format: int64
- name: phoneNumberId
in: query
required: false
schema:
type: string
- name: search
in: query
required: false
schema:
type: string
- name: status
in: query
required: false
schema:
type: string
- name: toDate
in: query
required: false
schema:
type: integer
format: int64
- name: triggeredBy
in: query
required: false
schema:
type: integer
format: int64
- name: userId
in: query
required: false
schema:
type: integer
format: int64
- name: vapiCallId
in: query
required: false
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
additionalProperties:
type: object
'403':
description: Forbidden!!!!!
'500':
description: 500 message
components:
schemas:
VapiAssistantOverridesDto:
type: object
properties:
variableValues:
type: object
title: VapiAssistantOverridesDto
VapiCallRequestDto:
type: object
properties:
assistantId:
type: string
assistantOverrides:
$ref: '#/components/schemas/VapiAssistantOverridesDto'
customer:
$ref: '#/components/schemas/VapiCustomerDto'
phoneNumberId:
type: string
userId:
type: integer
format: int64
title: VapiCallRequestDto
VapiCallLog:
type: object
properties:
assistantId:
type: string
callStatus:
type: string
cost:
type: number
format: double
createdBy:
type: string
customerName:
type: string
customerNumber:
type: string
durationSeconds:
type: integer
format: int64
endedAt:
type: string
format: date-time
endedReason:
type: string
errorMessage:
type: string
id:
type: integer
format: int64
lastSyncedAt:
type: string
format: date-time
phoneNumberId:
type: string
recordingUrl:
type: string
responseBody:
type: string
responseStatusCode:
type: integer
format: int32
startedAt:
type: string
format: date-time
summary:
type: string
transcript:
type: string
triggeredBy:
type: integer
format: int64
userId:
type: integer
format: int64
vapiCallId:
type: string
variableValues:
type: object
title: VapiCallLog
VapiCustomerDto:
type: object
properties:
name:
type: string
number:
type: string
title: VapiCustomerDto