Veezoo API
betaThe Veezoo public REST API: ask questions, run VQL queries and retrieve data programmatically.
https://app.veezoo.com/apiThe Veezoo API allows you to interact programmatically with Veezoo, enabling you to integrate Veezoo into your own applications and workflows.
Python SDK & CLI
Install the official Python SDK for a convenient way to use the API from Python or the command line:
pip install veezoo
See the Veezoo Python SDK on PyPI for documentation, examples, and CLI usage.
Authentication
All API requests require authentication using an API key. Include your API key in the X-Api-Key request header:
X-Api-Key: <Api-Key>
You can create and manage API keys in Veezoo Admin on the API Keys page.
Knowledge Graph
API endpoints which access a Knowledge Graph require the kgId query parameter to specify the ID of the Knowledge
Graph to use. You can list available Knowledge Graphs using the
List Knowledge Graphs endpoint, or find the ID on the
Configuration page in Veezoo Studio.
Rate Limiting
API requests are rate-limited. If you exceed the rate limit, you will receive a 429 Too Many Requests error
response. The following table shows the effective rate limits:
| Type | Max. requests / second | Description |
|---|---|---|
| Global rate limit | 25 | Rate limit across all API endpoints |
| Per-endpoint rate limit | 10 | Rate limit per individual API endpoint |
API Request IDs
Veezoo assigns each API request a unique request ID and returns it in the X-Request-Id header of the response.
When encountering a problem, you can include this request ID when contacting Veezoo support for assistance.
Endpoints
| Endpoint | Name | Description |
|---|---|---|
get/beta/ping | Ping the API | A simple health check endpoint to verify that the API is running and that the API request is correctly authenticated. |
get/beta/knowledge-graphs | List knowledge graphs | Lists all knowledge graphs accessible to the authenticated user. |
post/beta/questions | Ask a question | Asks a natural language question and returns the result. |
post/beta/queries/vql | Run a VQL query | Runs a VQL query against the specified Knowledge Graph and returns the result data. |
post/beta/shared-answers/{id} | Run a shared answer | Runs an existing shared answer and returns the result data. |
Ping the API
/beta/pingA simple health check endpoint to verify that the API is running and that the API request is correctly authenticated.
Example request
curl "https://app.veezoo.com/api/beta/ping" \
-H "X-Api-Key: $VEEZOO_API_KEY"Responses
The API is running and the API request is authenticated.
The API request failed to authenticate.
Possible reasons are:
- The request doesn't specify an API key
- The specified API key does not exist or has been revoked
- The user tied to the API key does no longer exist or is no longer authorized
▶Response fields
| Field | Type | Required | Description |
|---|---|---|---|
| type | string | required | The type of the API resource: Error |
| statusCode | integer | required | The HTTP status code of the error |
| message | string | required | The error message |
▶Example response
{
"type": "Error",
"statusCode": 401,
"message": "API key is required"
}API access is not enabled for your subscription.
▶Response fields
| Field | Type | Required | Description |
|---|---|---|---|
| type | string | required | The type of the API resource: Error |
| statusCode | integer | required | The HTTP status code of the error |
| message | string | required | The error message |
▶Example response
{
"type": "Error",
"statusCode": 402,
"message": "API access needs to be allowed for your subscription"
}The API request exceeds the rate limit.
▶Response fields
| Field | Type | Required | Description |
|---|---|---|---|
| type | string | required | The type of the API resource: Error |
| statusCode | integer | required | The HTTP status code of the error |
| message | string | required | The error message |
▶Example response
{
"type": "Error",
"statusCode": 429,
"message": "API request exceeds the global rate limit"
}List knowledge graphs
/beta/knowledge-graphsLists all knowledge graphs accessible to the authenticated user.
Also available as the list_knowledge_graphs tool via the MCP integration.
Example request
curl "https://app.veezoo.com/api/beta/knowledge-graphs" \
-H "X-Api-Key: $VEEZOO_API_KEY"Responses
The list of accessible knowledge graphs.
▶Response fields
| Field | Type | Required | Description |
|---|---|---|---|
| id | string | required | The unique ID of the knowledge graph |
| name | string | required | The display name of the knowledge graph |
| description | string | optional | The description of the knowledge graph, if available |
| languages | array of string | required | The supported languages as BCP-47 tags, with the default language first |
The API request failed to authenticate.
Possible reasons are:
- The request doesn't specify an API key
- The specified API key does not exist or has been revoked
- The user tied to the API key does no longer exist or is no longer authorized
▶Response fields
| Field | Type | Required | Description |
|---|---|---|---|
| type | string | required | The type of the API resource: Error |
| statusCode | integer | required | The HTTP status code of the error |
| message | string | required | The error message |
▶Example response
{
"type": "Error",
"statusCode": 401,
"message": "API key is required"
}API access is not enabled for your subscription.
▶Response fields
| Field | Type | Required | Description |
|---|---|---|---|
| type | string | required | The type of the API resource: Error |
| statusCode | integer | required | The HTTP status code of the error |
| message | string | required | The error message |
▶Example response
{
"type": "Error",
"statusCode": 402,
"message": "API access needs to be allowed for your subscription"
}The API request exceeds the rate limit.
▶Response fields
| Field | Type | Required | Description |
|---|---|---|---|
| type | string | required | The type of the API resource: Error |
| statusCode | integer | required | The HTTP status code of the error |
| message | string | required | The error message |
▶Example response
{
"type": "Error",
"statusCode": 429,
"message": "API request exceeds the global rate limit"
}Ask a question
/beta/questionsAsks a natural language question and returns the result.
This endpoint is the primary way to interact with Veezoo programmatically using natural language. It supports follow-up questions through conversation IDs, allowing multi-turn conversations.
New conversations: Omit conversationId from the request body. The response will include a
new conversationId that you can use for follow-up questions.
Follow-up questions: Include the conversationId from a previous response. The question will
automatically reference the last answer in that conversation, enabling contextual follow-ups like
"Break down by region" or "Only for last year."
Also available as the ask_question tool via the MCP integration.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| kgId | query | string | required | The ID of the Knowledge Graph Example: my-sales-kg |
Request body
The natural language question to ask(required)
| Field | Type | Required | Description |
|---|---|---|---|
| question | string | required | The natural language question text |
| conversationId | string | null | optional | Optional conversation ID for follow-up questions. If not provided, a new conversation is created and its ID is returned in the response. If provided, the question is treated as a follow-up to the last answer in that conversation. |
| language | string | null | optional | Optional language code. Supported values: "en", "de", "fr", "it", "pt", "es". If not provided, the Knowledge Graph's default language is used. |
Example request
curl "https://app.veezoo.com/api/beta/questions?kgId=my-sales-kg" \
-X POST \
-H "X-Api-Key: $VEEZOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"question": "How many customers do we have?"
}'Responses
The question was processed successfully.
The response includes an ordered stream of text and answer messages plus a conversation ID for follow-up questions.
Individual answer messages may be partial. In that case, some fields such as data or sql
may be omitted, and errorMessage explains what failed while still preserving any information
that could be generated.
Note that isError may be true even with a 200 status code, indicating that the question was
understood but could not be answered (e.g. the requested data is not available).
▶Response fields
| Field | Type | Required | Description |
|---|---|---|---|
| type | string | required | The type of the API resource: QuestionResult |
| conversationId | string | required | The conversation ID. Always returned, even for new conversations. Use this ID in subsequent requests to ask follow-up questions within the same conversation. |
| messages | array of TextMessage | AnswerMessage | required | Ordered sequence of text and answer messages, preserving the natural interleaving of explanations and data results as produced by Veezoo. |
| isError | boolean | required | Whether the response represents an error |
TextMessage
A text message containing markdown-formatted content.
| Field | Type | Required | Description |
|---|---|---|---|
| type | "text" | required | Message type: text |
| content | string | required | The markdown-formatted text content |
AnswerMessage
An executed answer with its data and query details.
| Field | Type | Required | Description |
|---|---|---|---|
| type | "answer" | required | Message type: answer |
| title | string | null | optional | What Veezoo understood for this specific answer |
| data | object | null | optional | Structured tabular data for this answer |
| ↳columns | array of object | required | The data columns |
| ↳rows | array of array of string | required | The data rows: each row is an array of string values, in the order of the columns |
| vql | string | null | optional | The generated VQL (Veezoo Query Language) query, if available |
| sql | string | null | optional | The generated SQL query, if available |
| filters | array of string | required | Applied filters as human-readable strings |
| errorMessage | string | null | optional | Explanation of why this answer is partial, if some generation step failed |
▶Example response
{
"type": "QuestionResult",
"conversationId": "550e8400-e29b-41d4-a716-446655440000",
"messages": [
{
"type": "text",
"content": "Let me look at the customer data."
},
{
"type": "answer",
"title": "count of customers",
"data": {
"columns": [
{
"name": "count of customers"
}
],
"rows": [
[
{
"value": "1234"
}
]
]
},
"vql": "show count of Customer",
"sql": "SELECT COUNT(*) FROM customers",
"filters": []
},
{
"type": "text",
"content": "Now let's break it down by region."
},
{
"type": "answer",
"title": "customers by region",
"vql": "show count of Customer by Region",
"filters": [],
"errorMessage": "Failed to execute answer: Query timed out"
}
],
"isError": false
}The API request is invalid.
Possible reasons are:
- The request is missing a required query parameter
- The request body does not match the required schema
▶Response fields
| Field | Type | Required | Description |
|---|---|---|---|
| type | string | required | The type of the API resource: Error |
| statusCode | integer | required | The HTTP status code of the error |
| message | string | required | The error message |
▶Example response
{
"type": "Error",
"statusCode": 400,
"message": "Query parameter 'kgId' is required"
}The API request failed to authenticate.
Possible reasons are:
- The request doesn't specify an API key
- The specified API key does not exist or has been revoked
- The user tied to the API key does no longer exist or is no longer authorized
▶Response fields
| Field | Type | Required | Description |
|---|---|---|---|
| type | string | required | The type of the API resource: Error |
| statusCode | integer | required | The HTTP status code of the error |
| message | string | required | The error message |
▶Example response
{
"type": "Error",
"statusCode": 401,
"message": "API key is required"
}API access is not enabled for your subscription.
▶Response fields
| Field | Type | Required | Description |
|---|---|---|---|
| type | string | required | The type of the API resource: Error |
| statusCode | integer | required | The HTTP status code of the error |
| message | string | required | The error message |
▶Example response
{
"type": "Error",
"statusCode": 402,
"message": "API access needs to be allowed for your subscription"
}The specified Knowledge Graph does not exist.
▶Response fields
| Field | Type | Required | Description |
|---|---|---|---|
| type | string | required | The type of the API resource: Error |
| statusCode | integer | required | The HTTP status code of the error |
| message | string | required | The error message |
▶Example response
{
"type": "Error",
"statusCode": 404,
"message": "Knowledge Graph with ID 'my-sales-kg' does not exist"
}The API request exceeds the rate limit.
▶Response fields
| Field | Type | Required | Description |
|---|---|---|---|
| type | string | required | The type of the API resource: Error |
| statusCode | integer | required | The HTTP status code of the error |
| message | string | required | The error message |
▶Example response
{
"type": "Error",
"statusCode": 429,
"message": "API request exceeds the global rate limit"
}Processing the question failed due to an internal error.
▶Response fields
| Field | Type | Required | Description |
|---|---|---|---|
| type | string | required | The type of the API resource: Error |
| statusCode | integer | required | The HTTP status code of the error |
| message | string | required | The error message |
▶Example response
{
"type": "Error",
"statusCode": 500,
"message": "Failed to process question: Connection timeout"
}Run a VQL query
/beta/queries/vqlRuns a VQL query against the specified Knowledge Graph and returns the result data.
Also available as the run_vql_query tool via the MCP integration.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| kgId | query | string | required | The ID of the Knowledge Graph Example: my-sales-kg |
Request body
The VQL query to run(required)
| Field | Type | Required | Description |
|---|---|---|---|
| vql | string | required | The VQL query to run |
Example request
curl "https://app.veezoo.com/api/beta/queries/vql?kgId=my-sales-kg" \
-X POST \
-H "X-Api-Key: $VEEZOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"vql": "var customers from kb.Customer\nvar retCount = count(customers)\nselect(retCount)\n"
}'Responses
The VQL query succeeded.
The response consists of the data and query rewriting information.
▶Response fields
| Field | Type | Required | Description |
|---|---|---|---|
| type | string | required | The type of the API resource: VqlQueryResult |
| rewriting | object | required | The rewriting applied to the VQL query |
| ↳steps | array of object | required | The sequence of rewriting steps applied during semantic and logic rewriting |
| ↳stage | "semantic" | "logic" | required | The name of the rewriting stage |
| ↳rule | string | required | The name of the rewriting rule applied in this step |
| ↳rewrittenVql | string | null | optional | The rewritten VQL, if applying the rewriting rule succeeded |
| ↳errorMessage | string | null | optional | An error message, if applying the rewriting rule failed |
| ↳rewrittenVql | string | null | optional | The rewritten VQL, after semantic and logic rewriting (if any), if rewriting succeeded |
| ↳errorMessage | string | null | optional | An error message, if rewriting failed |
| sql | string | null | optional | The generated SQL query: may not be available if the data was derived through post-processing or aggregation |
| data | object | required | The result data |
| ↳columns | array of object | required | The data columns |
| ↳name | string | required | The name of the column |
| ↳rows | array of array of string | required | The data rows: each row is an array of string values, in the order of the columns |
▶Example response
{
"type": "VqlQueryResult",
"rewriting": {
"steps": [
{
"stage": "logic",
"rule": "customer_IsActive",
"rewrittenVql": "var customers from kb.Customer\ncustomers.customers_isActive = true\nvar state = customers.customers_State_From\nvar retCount = count(customers) by (state)\nselect(state, retCount)\n"
},
{
"stage": "logic",
"rule": "ImplicitSortRule",
"rewrittenVql": "var customers from kb.Customer\ncustomers.customers_isActive = true\nvar state = customers.customers_State_From\nvar retCount = count(customers) by (state)\nvar complementSortRetCount from integer = complement_sort(retCount)\nselect(state, retCount)\n"
}
],
"rewrittenVql": "var customers from kb.Customer\ncustomers.customers_isActive = true\nvar state = customers.customers_State_From\nvar retCount = count(customers) by (state)\nvar complementSortRetCount from integer = complement_sort(retCount)\nselect(state, retCount)\n"
},
"sql": "SELECT DISTINCT\n subquery_c1JN.\"state16l7\" as \"state16l7\",\n subquery_c1JN.\"retCount242i\" as \"retCount242i\"\nFROM\n (SELECT\n COUNT(DISTINCT Customers_DP0Hkca5.\"id\") as \"retCount242i\",\n Customers_DP0Hkca5.\"state\" as \"state16l7\"\n FROM\n \"sales\".\"public\".\"customers\" Customers_DP0Hkca5\n WHERE\n Customers_DP0Hkca5.\"state\" IS NOT NULL AND\n Customers_DP0Hkca5.\"is_active\"\n GROUP BY\n \"state16l7\") subquery_c1JN\nORDER BY subquery_c1JN.\"retCount242i\" DESC NULLS LAST\nLIMIT 2500\n",
"data": {
"columns": [
{
"name": "State"
},
{
"name": "Number of Customer"
}
],
"rows": [
[
{
"value": "New York"
},
{
"value": 28216
}
],
[
{
"value": "California"
},
{
"value": 19165
}
],
[
{
"value": "Pennsylvania"
},
{
"value": 15413
}
]
]
}
}The API request is invalid.
Possible reasons are:
- The request is missing a required query parameter
- The request body does not match the required schema
▶Response fields
| Field | Type | Required | Description |
|---|---|---|---|
| type | string | required | The type of the API resource: Error |
| statusCode | integer | required | The HTTP status code of the error |
| message | string | required | The error message |
▶Example response
{
"type": "Error",
"statusCode": 400,
"message": "Query parameter 'kgId' is required"
}The API request failed to authenticate.
Possible reasons are:
- The request doesn't specify an API key
- The specified API key does not exist or has been revoked
- The user tied to the API key does no longer exist or is no longer authorized
▶Response fields
| Field | Type | Required | Description |
|---|---|---|---|
| type | string | required | The type of the API resource: Error |
| statusCode | integer | required | The HTTP status code of the error |
| message | string | required | The error message |
▶Example response
{
"type": "Error",
"statusCode": 401,
"message": "API key is required"
}API access is not enabled for your subscription.
▶Response fields
| Field | Type | Required | Description |
|---|---|---|---|
| type | string | required | The type of the API resource: Error |
| statusCode | integer | required | The HTTP status code of the error |
| message | string | required | The error message |
▶Example response
{
"type": "Error",
"statusCode": 402,
"message": "API access needs to be allowed for your subscription"
}A resource specified by the API request was not found.
Possible reasons are:
- The request specifies the ID of a non-existing Knowledge Graph
- The request points to a non-existing resource
▶Response fields
| Field | Type | Required | Description |
|---|---|---|---|
| type | string | required | The type of the API resource: Error |
| statusCode | integer | required | The HTTP status code of the error |
| message | string | required | The error message |
▶Example response
{
"type": "Error",
"statusCode": 404,
"message": "Knowledge Graph with ID 'my-supply-chain-kg' does not exist"
}The API request exceeds the rate limit.
▶Response fields
| Field | Type | Required | Description |
|---|---|---|---|
| type | string | required | The type of the API resource: Error |
| statusCode | integer | required | The HTTP status code of the error |
| message | string | required | The error message |
▶Example response
{
"type": "Error",
"statusCode": 429,
"message": "API request exceeds the global rate limit"
}Running the VQL query failed.
The response includes information about the rewriting that was successfully applied before the error occurred.
▶Response fields
| Field | Type | Required | Description |
|---|---|---|---|
| type | string | required | The type of the API resource: Error |
| statusCode | integer | required | The HTTP status code of the error |
| message | string | required | The error message |
| rewriting | object | required | The succesfully applied rewriting, before the error occurred |
| ↳steps | array of object | required | The sequence of rewriting steps applied during semantic and logic rewriting |
| ↳stage | "semantic" | "logic" | required | The name of the rewriting stage |
| ↳rule | string | required | The name of the rewriting rule applied in this step |
| ↳rewrittenVql | string | null | optional | The rewritten VQL, if applying the rewriting rule succeeded |
| ↳errorMessage | string | null | optional | An error message, if applying the rewriting rule failed |
| ↳rewrittenVql | string | null | optional | The rewritten VQL, after semantic and logic rewriting (if any), if rewriting succeeded |
| ↳errorMessage | string | null | optional | An error message, if rewriting failed |
▶Example response
{
"type": "Error",
"statusCode": 500,
"message": "VQL query failed: Connection timeout",
"steps": [
{
"stage": "logic",
"rule": "customer_IsActive",
"rewrittenVql": "var customers from kb.Customer\ncustomers.customers_isActive = true\nvar state = customers.customers_State_From\nvar retCount = count(customers) by (state)\nselect(state, retCount)\n"
},
{
"stage": "logic",
"rule": "ImplicitSortRule",
"rewrittenVql": "var customers from kb.Customer\ncustomers.customers_isActive = true\nvar state = customers.customers_State_From\nvar retCount = count(customers) by (state)\nvar complementSortRetCount from integer = complement_sort(retCount)\nselect(state, retCount)\n"
}
],
"rewrittenVql": "var customers from kb.Customer\ncustomers.customers_isActive = true\nvar state = customers.customers_State_From\nvar retCount = count(customers) by (state)\nvar complementSortRetCount from integer = complement_sort(retCount)\nselect(state, retCount)\n"
}Run a shared answer
/beta/shared-answers/{id}Runs an existing shared answer and returns the result data.
Also available as the run_shared_answer tool via the MCP integration.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| id | path | string | required | The ID of the shared answer to run Example: 0ece8e2d-b821-476d-bd78-986e8cb62879 |
| kgId | query | string | required | The ID of the Knowledge Graph Example: my-sales-kg |
Example request
curl "https://app.veezoo.com/api/beta/shared-answers/0ece8e2d-b821-476d-bd78-986e8cb62879?kgId=my-sales-kg" \
-X POST \
-H "X-Api-Key: $VEEZOO_API_KEY"Responses
The shared answer ran successfully.
The response consists of the data and query rewriting information.
▶Response fields
| Field | Type | Required | Description |
|---|---|---|---|
| type | string | required | The type of the API resource: SharedAnswerResult |
| vql | any | null | optional | The non-rewritten VQL of the shared answer, if it could be generated |
| rewriting | object | required | The rewriting applied to the VQL query of the shared answer |
| ↳steps | array of object | required | The sequence of rewriting steps applied during semantic and logic rewriting |
| ↳stage | "semantic" | "logic" | required | The name of the rewriting stage |
| ↳rule | string | required | The name of the rewriting rule applied in this step |
| ↳rewrittenVql | string | null | optional | The rewritten VQL, if applying the rewriting rule succeeded |
| ↳errorMessage | string | null | optional | An error message, if applying the rewriting rule failed |
| ↳rewrittenVql | string | null | optional | The rewritten VQL, after semantic and logic rewriting (if any), if rewriting succeeded |
| ↳errorMessage | string | null | optional | An error message, if rewriting failed |
| sql | string | null | optional | The generated SQL query: may not be available if the data was derived through post-processing or aggregation |
| data | object | required | The result data |
| ↳columns | array of object | required | The data columns |
| ↳name | string | required | The name of the column |
| ↳rows | array of array of string | required | The data rows: each row is an array of string values, in the order of the columns |
▶Example response
{
"type": "SharedAnswerResult",
"vql": "var customers from kb.Customer\nvar state = customers.customers_State_From\nvar retCount = count(customers) by (state)\nselect(state, retCount)\n",
"rewriting": {
"steps": [
{
"stage": "logic",
"rule": "customer_IsActive",
"rewrittenVql": "var customers from kb.Customer\ncustomers.customers_isActive = true\nvar state = customers.customers_State_From\nvar retCount = count(customers) by (state)\nselect(state, retCount)\n"
},
{
"stage": "logic",
"rule": "ImplicitSortRule",
"rewrittenVql": "var customers from kb.Customer\ncustomers.customers_isActive = true\nvar state = customers.customers_State_From\nvar retCount = count(customers) by (state)\nvar complementSortRetCount from integer = complement_sort(retCount)\nselect(state, retCount)\n"
}
],
"rewrittenVql": "var customers from kb.Customer\ncustomers.customers_isActive = true\nvar state = customers.customers_State_From\nvar retCount = count(customers) by (state)\nvar complementSortRetCount from integer = complement_sort(retCount)\nselect(state, retCount)\n"
},
"sql": "SELECT DISTINCT\n subquery_c1JN.\"state16l7\" as \"state16l7\",\n subquery_c1JN.\"retCount242i\" as \"retCount242i\"\nFROM\n (SELECT\n COUNT(DISTINCT Customers_DP0Hkca5.\"id\") as \"retCount242i\",\n Customers_DP0Hkca5.\"state\" as \"state16l7\"\n FROM\n \"sales\".\"public\".\"customers\" Customers_DP0Hkca5\n WHERE\n Customers_DP0Hkca5.\"state\" IS NOT NULL AND\n Customers_DP0Hkca5.\"is_active\"\n GROUP BY\n \"state16l7\") subquery_c1JN\nORDER BY subquery_c1JN.\"retCount242i\" DESC NULLS LAST\nLIMIT 2500\n",
"data": {
"columns": [
{
"name": "State"
},
{
"name": "Number of Customer"
}
],
"rows": [
[
{
"value": "New York"
},
{
"value": 28216
}
],
[
{
"value": "California"
},
{
"value": 19165
}
],
[
{
"value": "Pennsylvania"
},
{
"value": 15413
}
]
]
}
}The API request is invalid.
Possible reasons are:
- The request is missing a required query parameter
- The request body does not match the required schema
▶Response fields
| Field | Type | Required | Description |
|---|---|---|---|
| type | string | required | The type of the API resource: Error |
| statusCode | integer | required | The HTTP status code of the error |
| message | string | required | The error message |
▶Example response
{
"type": "Error",
"statusCode": 400,
"message": "Query parameter 'kgId' is required"
}The API request failed to authenticate.
Possible reasons are:
- The request doesn't specify an API key
- The specified API key does not exist or has been revoked
- The user tied to the API key does no longer exist or is no longer authorized
▶Response fields
| Field | Type | Required | Description |
|---|---|---|---|
| type | string | required | The type of the API resource: Error |
| statusCode | integer | required | The HTTP status code of the error |
| message | string | required | The error message |
▶Example response
{
"type": "Error",
"statusCode": 401,
"message": "API key is required"
}API access is not enabled for your subscription.
▶Response fields
| Field | Type | Required | Description |
|---|---|---|---|
| type | string | required | The type of the API resource: Error |
| statusCode | integer | required | The HTTP status code of the error |
| message | string | required | The error message |
▶Example response
{
"type": "Error",
"statusCode": 402,
"message": "API access needs to be allowed for your subscription"
}The shared answer doesn't exist.
▶Response fields
| Field | Type | Required | Description |
|---|---|---|---|
| type | string | required | The type of the API resource: Error |
| statusCode | integer | required | The HTTP status code of the error |
| message | string | required | The error message |
▶Example response
{
"type": "Error",
"statusCode": 404,
"message": "Shared answer with ID '0ece8e2d-b821-476d-bd78-986e8cb62879' not found"
}The API request exceeds the rate limit.
▶Response fields
| Field | Type | Required | Description |
|---|---|---|---|
| type | string | required | The type of the API resource: Error |
| statusCode | integer | required | The HTTP status code of the error |
| message | string | required | The error message |
▶Example response
{
"type": "Error",
"statusCode": 429,
"message": "API request exceeds the global rate limit"
}Running the shared answer failed.
▶Response fields
| Field | Type | Required | Description |
|---|---|---|---|
| type | string | required | The type of the API resource: Error |
| statusCode | integer | required | The HTTP status code of the error |
| message | string | required | The error message |
▶Example response
{
"type": "Error",
"statusCode": 500,
"message": "Failed to run shared answer"
}