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/apptentive-raw-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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: Public API Service
version: 2.0.0
title: public-api-service experimental Raw API
termsOfService: https://www.apptentive.com/terms/
servers:
- url: https://data.apptentive.com/
- url: http://data.apptentive.com/
tags:
- name: raw
description: raw data endpoints
paths:
/raw/v2/apps/{app_id}/messages:
get:
tags:
- raw
summary: Retrieve all messages
description: Retrieve all messages
operationId: getMessages
security:
- ApiKeyAuth: []
parameters:
- name: app_id
in: path
description: the application id in mongo id format (ex. 5e22085d5379215be800002b)
required: true
schema:
type: string
- name: page_size
in: query
description: the page size number
required: false
schema:
type: string
default: 100
- name: starts_after
in: query
description: The message id from the ‘ends_with’ field, for pagination (ex. 5e22085d5379215be800002b)
required: true
schema:
type: string
- name: api_key
in: query
description: (optional) you can provide the X-API-KEY as 'api_key' query parameter
required: false
schema:
type: string
- name: accept
in: query
description: (optional) you can provide the accept header as 'accept' query parameter
required: false
schema:
type: string
responses:
'200':
description: message response
content:
application/json:
schema:
$ref: '#/components/schemas/MessagesResponse'
application/xml:
schema:
$ref: '#/components/schemas/MessagesResponse'
'400':
description: bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBadRequestResponse'
application/xml:
schema:
$ref: '#/components/schemas/ErrorBadRequestResponse'
'401':
description: not authorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorUnauthorizedResponse'
application/xml:
schema:
$ref: '#/components/schemas/ErrorUnauthorizedResponse'
'500':
description: internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorInternalErrorResponse'
application/xml:
schema:
$ref: '#/components/schemas/ErrorInternalErrorResponse'
/raw/v2/apps/{app_id}/devices:
get:
tags:
- raw
summary: Retrieve all devices
description: Retrieve all devices
operationId: getDevices
security:
- ApiKeyAuth: []
parameters:
- name: app_id
in: path
description: the application id in mongo id format (ex. 5e22085d5379215be800002b)
required: true
schema:
type: string
- name: page_size
in: query
description: the page size number
required: false
schema:
type: string
default: 100
- name: starts_after
in: query
description: The device id from the ‘ends_with’ field, for pagination (ex. 5e22085d5379215be800002b)
required: true
schema:
type: string
- name: api_key
in: query
description: (optional) you can provide the X-API-KEY as 'api_key' query parameter
required: false
schema:
type: string
- name: accept
in: query
description: (optional) you can provide the accept header as 'accept' query parameter
required: false
schema:
type: string
responses:
'200':
description: devices response
content:
application/json:
schema:
$ref: '#/components/schemas/DevicesResponse'
application/xml:
schema:
$ref: '#/components/schemas/DevicesResponse'
'400':
description: bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBadRequestResponse'
application/xml:
schema:
$ref: '#/components/schemas/ErrorBadRequestResponse'
'401':
description: not authorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorUnauthorizedResponse'
application/xml:
schema:
$ref: '#/components/schemas/ErrorUnauthorizedResponse'
'500':
description: internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorInternalErrorResponse'
application/xml:
schema:
$ref: '#/components/schemas/ErrorInternalErrorResponse'
/raw/v2/apps/{app_id}/devices/{device_id}:
get:
tags:
- raw
summary: Retrieve single device
description: Retrieve single device
operationId: getSingleDevice
security:
- ApiKeyAuth: []
parameters:
- name: app_id
in: path
description: the application id in mongo id format (ex. 5e22085d5379215be800002b)
required: true
schema:
type: string
- name: device_id
in: path
description: the device id in mongo format (ex. 5e22085d5379215be800002b)
required: true
schema:
type: string
- name: api_key
in: query
description: (optional) you can provide the X-API-KEY as 'api_key' query parameter
required: false
schema:
type: string
- name: accept
in: query
description: (optional) you can provide the accept header as 'accept' query parameter
required: false
schema:
type: string
responses:
'200':
description: single device response
content:
application/json:
schema:
$ref: '#/components/schemas/Device'
application/xml:
schema:
$ref: '#/components/schemas/Device'
'400':
description: bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBadRequestResponse'
application/xml:
schema:
$ref: '#/components/schemas/ErrorBadRequestResponse'
'401':
description: not authorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorUnauthorizedResponse'
application/xml:
schema:
$ref: '#/components/schemas/ErrorUnauthorizedResponse'
'500':
description: internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorInternalErrorResponse'
application/xml:
schema:
$ref: '#/components/schemas/ErrorInternalErrorResponse'
/raw/v2/apps/{app_id}/people:
get:
tags:
- raw
summary: Retrieve all people
description: Retrieve all people
operationId: getPeople
security:
- ApiKeyAuth: []
parameters:
- name: app_id
in: path
description: the application id in mongo id format (ex. 5e22085d5379215be800002b)
required: true
schema:
type: string
- name: page_size
in: query
description: the page size number
required: false
schema:
type: string
default: 100
- name: starts_after
in: query
description: The people id from the ‘ends_with’ field, for pagination (ex. 5e22085d5379215be800002b)
required: true
schema:
type: string
- name: api_key
in: query
description: (optional) you can provide the X-API-KEY as 'api_key' query parameter
required: false
schema:
type: string
- name: accept
in: query
description: (optional) you can provide the accept header as 'accept' query parameter
required: false
schema:
type: string
responses:
'200':
description: people response
content:
application/json:
schema:
$ref: '#/components/schemas/PeopleResponse'
application/xml:
schema:
$ref: '#/components/schemas/PeopleResponse'
'400':
description: bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBadRequestResponse'
application/xml:
schema:
$ref: '#/components/schemas/ErrorBadRequestResponse'
'401':
description: not authorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorUnauthorizedResponse'
application/xml:
schema:
$ref: '#/components/schemas/ErrorUnauthorizedResponse'
'500':
description: internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorInternalErrorResponse'
application/xml:
schema:
$ref: '#/components/schemas/ErrorInternalErrorResponse'
/raw/v2/apps/{app_id}/people/{person_id}:
get:
tags:
- raw
summary: Retrieve single person
description: Retrieve single person
operationId: getSinglePerson
security:
- ApiKeyAuth: []
parameters:
- name: app_id
in: path
description: the application id in mongo id format (ex. 5e22085d5379215be800002b)
required: true
schema:
type: string
- name: person_id
in: path
description: the person id in mongo format (ex. 5e22085d5379215be800002b)
required: true
schema:
type: string
- name: api_key
in: query
description: (optional) you can provide the X-API-KEY as 'api_key' query parameter
required: false
schema:
type: string
- name: accept
in: query
description: (optional) you can provide the accept header as 'accept' query parameter
required: false
schema:
type: string
responses:
'200':
description: person response
content:
application/json:
schema:
$ref: '#/components/schemas/Person'
application/xml:
schema:
$ref: '#/components/schemas/Person'
'400':
description: bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBadRequestResponse'
application/xml:
schema:
$ref: '#/components/schemas/ErrorBadRequestResponse'
'401':
description: not authorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorUnauthorizedResponse'
application/xml:
schema:
$ref: '#/components/schemas/ErrorUnauthorizedResponse'
'500':
description: internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorInternalErrorResponse'
application/xml:
schema:
$ref: '#/components/schemas/ErrorInternalErrorResponse'
/raw/v2/apps/{app_id}/conversations:
get:
tags:
- raw
summary: Retrieve all conversations
description: Retrieve all conversations
operationId: getConversations
security:
- ApiKeyAuth: []
parameters:
- name: app_id
in: path
description: the application id in mongo id format (ex. 5e22085d5379215be800002b)
required: true
schema:
type: string
- name: page_size
in: query
description: the page size number
required: false
schema:
type: string
default: 100
- name: starts_after
in: query
description: The conversation id from the ‘ends_with’ field, for pagination (ex. 5e22085d5379215be800002b)
required: true
schema:
type: string
- name: api_key
in: query
description: (optional) you can provide the X-API-KEY as 'api_key' query parameter
required: false
schema:
type: string
- name: accept
in: query
description: (optional) you can provide the accept header as 'accept' query parameter
required: false
schema:
type: string
responses:
'200':
description: conversation response
content:
application/json:
schema:
$ref: '#/components/schemas/ConversationResponse'
application/xml:
schema:
$ref: '#/components/schemas/ConversationResponse'
'400':
description: bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBadRequestResponse'
application/xml:
schema:
$ref: '#/components/schemas/ErrorBadRequestResponse'
'401':
description: not authorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorUnauthorizedResponse'
application/xml:
schema:
$ref: '#/components/schemas/ErrorUnauthorizedResponse'
'500':
description: internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorInternalErrorResponse'
application/xml:
schema:
$ref: '#/components/schemas/ErrorInternalErrorResponse'
/raw/v2/apps/{app_id}/conversations/{conversation_id}:
get:
tags:
- raw
summary: Retrieve single person
description: Retrieve single person
operationId: getSingleConversation
security:
- ApiKeyAuth: []
parameters:
- name: app_id
in: path
description: the application id in mongo id format (ex. 5e22085d5379215be800002b)
required: true
schema:
type: string
- name: conversation_id
in: path
description: the conversation id in mongo format (ex. 5e22085d5379215be800002b)
required: true
schema:
type: string
- name: api_key
in: query
description: (optional) you can provide the X-API-KEY as 'api_key' query parameter
required: false
schema:
type: string
- name: accept
in: query
description: (optional) you can provide the accept header as 'accept' query parameter
required: false
schema:
type: string
responses:
'200':
description: single conversation response
content:
application/json:
schema:
$ref: '#/components/schemas/Conversation'
application/xml:
schema:
$ref: '#/components/schemas/Conversation'
'400':
description: bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBadRequestResponse'
application/xml:
schema:
$ref: '#/components/schemas/ErrorBadRequestResponse'
'401':
description: not authorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorUnauthorizedResponse'
application/xml:
schema:
$ref: '#/components/schemas/ErrorUnauthorizedResponse'
'500':
description: internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorInternalErrorResponse'
application/xml:
schema:
$ref: '#/components/schemas/ErrorInternalErrorResponse'
/raw/v2/apps/{app_id}/conversation-all-data/{conversation_id}:
get:
description: Retrieve conversation data
parameters:
- description: The application ID in Mongo ID format (ex. 5e22085d5379215be800002b)
in: path
name: app_id
required: true
schema:
type: string
- description: The conversation ID in Mongo format (ex. 5e22085d5379215be800002b)
in: path
name: conversation_id
required: true
schema:
type: string
- description: (optional) You can provide the X-API-KEY as 'api_key' query parameter
in: query
name: api_key
schema:
type: string
- description: (optional) You can provide the accept header as 'accept' query parameter
in: query
name: accept
schema:
type: string
responses:
'200':
description: Conversation all response
content:
application/json:
schema:
$ref: '#/components/schemas/ConversationAllResponse'
application/xml:
schema:
$ref: '#/components/schemas/ConversationAllResponse'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBadRequestResponse'
application/xml:
schema:
$ref: '#/components/schemas/ErrorBadRequestResponse'
'401':
description: Not authorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorUnauthorizedResponse'
application/xml:
schema:
$ref: '#/components/schemas/ErrorUnauthorizedResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorInternalErrorResponse'
application/xml:
schema:
$ref: '#/components/schemas/ErrorInternalErrorResponse'
security:
- ApiKeyAuth: []
summary: Retrieve all data for conversation
tags:
- raw
/raw/v2/apps/{app_id}/surveys/{survey_id}/responses:
get:
tags:
- raw
summary: Retrieve all survey responses
description: Retrieve all survey responses
operationId: getRawSurveyResponses
security:
- ApiKeyAuth: []
parameters:
- name: app_id
in: path
description: the application id in mongo id format (ex. 5e22085d5379215be800002b)
required: true
schema:
type: string
- name: survey_id
in: path
description: the survey id in mongo id format (ex. 5e22085d5379215be800002b)
required: true
schema:
type: string
- name: start_date
in: query
description: start date in format of YYYY-MM-DD
required: false
schema:
type: string
- name: end_date
in: query
description: end date in format of YYYY-MM-DD
required: false
schema:
type: string
- name: page_size
in: query
description: the page size number
required: false
schema:
type: string
default: 100
- name: order
in: query
description: the order by date (desc | asc)
required: false
schema:
type: string
default: asc
- name: starts_after
in: query
description: The survey response id from the ‘ends_with’ field, for pagination (ex. 5e22085d5379215be800002b)
required: true
schema:
type: string
- name: api_key
in: query
description: (optional) you can provide the X-API-KEY as 'api_key' query parameter
required: false
schema:
type: string
- name: accept
in: query
description: (optional) you can provide the accept header as 'accept' query parameter
required: false
schema:
type: string
responses:
'200':
description: survey responses object
content:
application/json:
schema:
$ref: '#/components/schemas/SurveyResponsesObject'
application/xml:
schema:
$ref: '#/components/schemas/SurveyResponsesObject'
'400':
description: bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBadRequestResponse'
application/xml:
schema:
$ref: '#/components/schemas/ErrorBadRequestResponse'
'401':
description: not authorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorUnauthorizedResponse'
application/xml:
schema:
$ref: '#/components/schemas/ErrorUnauthorizedResponse'
'500':
description: internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorInternalErrorResponse'
application/xml:
schema:
$ref: '#/components/schemas/ErrorInternalErrorResponse'
/raw/v2/apps/{app_id}/custom-attributes-keys:
get:
description: Retrieve person and device custom data
parameters:
- description: The application ID in Mongo ID format (ex. 5e22085d5379215be800002b)
in: path
name: app_id
required: true
schema:
type: string
- description: (optional) You can provide the X-API-KEY as 'api_key' query parameter
in: query
name: api_key
schema:
type: string
- description: (optional) You can provide the accept header as 'accept' query parameter
in: query
name: accept
schema:
type: string
responses:
'200':
description: Custom Attributes Keys Response
content:
application/json:
schema:
$ref: '#/components/schemas/CustomAttributesKeysResponse'
application/xml:
schema:
$ref: '#/components/schemas/CustomAttributesKeysResponse'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBadRequestResponse'
application/xml:
schema:
$ref: '#/components/schemas/ErrorBadRequestResponse'
'401':
description: Not authorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorUnauthorizedResponse'
application/xml:
schema:
$ref: '#/components/schemas/ErrorUnauthorizedResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorInternalErrorResponse'
application/xml:
schema:
$ref: '#/components/schemas/ErrorInternalErrorResponse'
security:
- ApiKeyAuth: []
summary: Retrieve all custom attributes for application
tags:
- raw
components:
schemas:
SRAnswersRowArray:
type: array
items:
$ref: '#/components/schemas/SurveyAnswerResponse'
description: the list of survey response answers
SRPerson:
type: object
properties:
id:
type: string
description: the hex id of the person
example: 95fbe2e775bf3c760b1000bc
custom_data:
$ref: '#/components/schemas/CustomData'
email:
type: string
description: person email
example: foo@bar.com
facebook_id:
type: string
description: the facebook id
example: 1184928249824
mparticle_id:
type: string
description: the mParticle id
example: -29482958295729572
name:
type: string
description: person name
example: Jack Daniels
Conversation:
type: object
properties:
id:
type: string
description: The id of the given Person
example: 5e22085d5379215be800002b
state:
type: string
description: conversation state
example: new
person_id:
type: string
description: The person id that is associated with following conversation id
example: 5e22085d5379215be800002b
device_id:
type: string
description: The device id that is associated with following conversation id
example: 5e22085d5379215be800002b
app_release:
$ref: '#/components/schemas/CustomData'
PersonRowArray:
type: array
items:
$ref: '#/components/schemas/Person'
description: the list of devices
Answer:
type: object
properties:
value:
type: string
description: selected answer value (could be an array of strings)
example: '''yes'' OR [''Red'', ''Blue'']'
CustomAttributesKeysResponse:
properties:
device_keys:
additionalProperties:
$ref: '#/components/schemas/TypeValue'
type: object
person_keys:
additionalProperties:
$ref: '#/components/schemas/TypeValue'
type: object
type: object
MessageSnapshotData:
type: object
properties:
timestamp:
type: number
description: snapshot data unix timestamp
example: 1667319932
app_release:
$ref: '#/components/schemas/SRAppRelease'
sender:
$ref: '#/components/schemas/MessageSender'
ConversationAllResponse:
properties:
conversation:
$ref: '#/components/schemas/ConversationAll'
conversation_id:
type: string
device:
$ref: '#/components/schemas/ConversationAllDevice'
device_id:
type: string
person:
$ref: '#/components/schemas/ConversationAllPerson'
person_id:
type: string
type: object
ErrorUnauthorizedResponse:
type: object
properties:
error:
type: string
description: the root cause in text representation
example: not authorized
ConversationAllPerson:
properties:
address:
type: string
birthday:
type: string
created_at:
type: string
custom_data: {}
email:
type: string
id:
type: string
mparticle_id:
type: string
name:
type: string
phone_number:
type: string
type:
type: string
updated_at:
type: string
type: object
CustomData:
type: object
description: customer specific data
properties:
key:
type: string
description: custom key definition
example: CustomKey
value:
type: string
description: custom value definition
example: CustomValue
SurveyAnswerResponse:
type: object
properties:
question:
$ref: '#/components/schemas/Question'
answer:
$ref: '#/components/schemas/Answer'
Question:
type: object
properties:
id:
type: string
description: The id of the given survey response question
example: 5e22085d5379215be800002b
value:
type: string
description: The survey question value
example: Choose one option
type:
type: string
description: the type of the question
example: multichoice | multiselect | range | nps | singleline
ConversationResponse:
type: object
properties:
conversations:
$ref: '#/components/schemas/ConversationRowArray'
ends_with:
type: string
description: The id of the last object returned on the current page. This should be provided as the value of starts_after to fetch the next page of results.
example: 6e22085d5379215be800002b
page_size:
type: number
description: the amount of requested results per request
example: 250
has_more:
type: boolean
description: true when additional objects are available for retrieval; false otherwise.
example: true
ConversationRowArray:
type: array
items:
$ref: '#/components/schemas/Conversation'
description: the list of conversations
SurveyResponsesRowArray:
type: array
items:
$ref: '#/components/schemas/SurveyResponse'
description: the list of survey responses
SRDevice:
type: object
properties:
id:
type: string
description: the hex id of the device
example: 55fbe2e775bf3c760b1000bc
carrier:
type: string
description: The primary network carrier for the Device
example: Verizon
custom_data:
$ref: '#/components/schemas/CustomData'
manufacturer:
type: string
description: device manufacturer
example: Samsung
model:
type: string
description: device model
example: S22
os_api_level:
type: string
description: api level of the operating system
example: 3.5.9
os_name:
type: string
description: Operating System label
example: Android
os_version:
type: string
description: Operating System version
example: 5.2.0
PeopleResponse:
type: object
properties:
people:
$ref: '#/components/schemas/PersonRowArray'
ends_with:
type: string
description: The id of the last object returned on the current page. This should be provided as the value of starts_after to fetch the next page of results.
page_size:
type: number
description: the amount of requested results per request
example: 250
has_more:
type: boolean
description: true when additional objects are available for retrieval; false otherwise.
MessageSender:
type: object
properties:
id:
type: string
description: the person id of the sender
example: 5e22085d5379215be800002b
name:
type: string
description: sender name
example: John Doe
profile_photo:
type: string
description: direct source of the photo profile
example: https://secure.gravatar.com/avatar/..d7cab1a059d1c7b?d=mm&r=pg
email:
type: string
description: sender email
example: johndoe@mail.com
custom_data:
$ref: '#/components/schemas/CustomData'
SurveyResponsesObject:
type: object
properties:
responses:
$ref: '#/components/schemas/SurveyResponsesRowArray'
# --- truncated at 32 KB (45 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/apptentive/refs/heads/main/openapi/apptentive-raw-api-openapi.yml