Veezoo

Veezoo API

beta

The Veezoo public REST API: ask questions, run VQL queries and retrieve data programmatically.

Base URLhttps://app.veezoo.com/api

The 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:

TypeMax. requests / secondDescription
Global rate limit25Rate limit across all API endpoints
Per-endpoint rate limit10Rate 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

EndpointNameDescription
get/beta/pingPing the APIA simple health check endpoint to verify that the API is running and that the API request is correctly authenticated.
get/beta/knowledge-graphsList knowledge graphsLists all knowledge graphs accessible to the authenticated user.
post/beta/questionsAsk a questionAsks a natural language question and returns the result.
post/beta/queries/vqlRun a VQL queryRuns a VQL query against the specified Knowledge Graph and returns the result data.
post/beta/shared-answers/{id}Run a shared answerRuns an existing shared answer and returns the result data.

Ping the API

get/beta/ping

A 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

200OK

The API is running and the API request is authenticated.

401Unauthorized

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
FieldTypeRequiredDescription
typestringrequiredThe type of the API resource: Error
statusCodeintegerrequiredThe HTTP status code of the error
messagestringrequiredThe error message
Example response
{
  "type": "Error",
  "statusCode": 401,
  "message": "API key is required"
}
402Payment Required

API access is not enabled for your subscription.

Response fields
FieldTypeRequiredDescription
typestringrequiredThe type of the API resource: Error
statusCodeintegerrequiredThe HTTP status code of the error
messagestringrequiredThe error message
Example response
{
  "type": "Error",
  "statusCode": 402,
  "message": "API access needs to be allowed for your subscription"
}
429Too Many Requests

The API request exceeds the rate limit.

Response fields
FieldTypeRequiredDescription
typestringrequiredThe type of the API resource: Error
statusCodeintegerrequiredThe HTTP status code of the error
messagestringrequiredThe error message
Example response
{
  "type": "Error",
  "statusCode": 429,
  "message": "API request exceeds the global rate limit"
}

List knowledge graphs

get/beta/knowledge-graphs

Lists 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

200OK

The list of accessible knowledge graphs.

Response fields
FieldTypeRequiredDescription
idstringrequiredThe unique ID of the knowledge graph
namestringrequiredThe display name of the knowledge graph
descriptionstringoptionalThe description of the knowledge graph, if available
languagesarray of stringrequiredThe supported languages as BCP-47 tags, with the default language first
401Unauthorized

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
FieldTypeRequiredDescription
typestringrequiredThe type of the API resource: Error
statusCodeintegerrequiredThe HTTP status code of the error
messagestringrequiredThe error message
Example response
{
  "type": "Error",
  "statusCode": 401,
  "message": "API key is required"
}
402Payment Required

API access is not enabled for your subscription.

Response fields
FieldTypeRequiredDescription
typestringrequiredThe type of the API resource: Error
statusCodeintegerrequiredThe HTTP status code of the error
messagestringrequiredThe error message
Example response
{
  "type": "Error",
  "statusCode": 402,
  "message": "API access needs to be allowed for your subscription"
}
429Too Many Requests

The API request exceeds the rate limit.

Response fields
FieldTypeRequiredDescription
typestringrequiredThe type of the API resource: Error
statusCodeintegerrequiredThe HTTP status code of the error
messagestringrequiredThe error message
Example response
{
  "type": "Error",
  "statusCode": 429,
  "message": "API request exceeds the global rate limit"
}

Ask a question

post/beta/questions

Asks 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

NameInTypeRequiredDescription
kgIdquerystringrequiredThe ID of the Knowledge Graph Example: my-sales-kg

Request body

The natural language question to ask(required)

FieldTypeRequiredDescription
questionstringrequiredThe natural language question text
conversationIdstring | nulloptionalOptional 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.
languagestring | nulloptionalOptional 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

200OK

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
FieldTypeRequiredDescription
typestringrequiredThe type of the API resource: QuestionResult
conversationIdstringrequiredThe conversation ID. Always returned, even for new conversations. Use this ID in subsequent requests to ask follow-up questions within the same conversation.
messagesarray of TextMessage | AnswerMessagerequiredOrdered sequence of text and answer messages, preserving the natural interleaving of explanations and data results as produced by Veezoo.
isErrorbooleanrequiredWhether the response represents an error

TextMessage

A text message containing markdown-formatted content.

FieldTypeRequiredDescription
type"text"requiredMessage type: text
contentstringrequiredThe markdown-formatted text content

AnswerMessage

An executed answer with its data and query details.

FieldTypeRequiredDescription
type"answer"requiredMessage type: answer
titlestring | nulloptionalWhat Veezoo understood for this specific answer
dataobject | nulloptionalStructured tabular data for this answer
columnsarray of objectrequiredThe data columns
rowsarray of array of stringrequiredThe data rows: each row is an array of string values, in the order of the columns
vqlstring | nulloptionalThe generated VQL (Veezoo Query Language) query, if available
sqlstring | nulloptionalThe generated SQL query, if available
filtersarray of stringrequiredApplied filters as human-readable strings
errorMessagestring | nulloptionalExplanation 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
}
400Bad Request

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
FieldTypeRequiredDescription
typestringrequiredThe type of the API resource: Error
statusCodeintegerrequiredThe HTTP status code of the error
messagestringrequiredThe error message
Example response
{
  "type": "Error",
  "statusCode": 400,
  "message": "Query parameter 'kgId' is required"
}
401Unauthorized

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
FieldTypeRequiredDescription
typestringrequiredThe type of the API resource: Error
statusCodeintegerrequiredThe HTTP status code of the error
messagestringrequiredThe error message
Example response
{
  "type": "Error",
  "statusCode": 401,
  "message": "API key is required"
}
402Payment Required

API access is not enabled for your subscription.

Response fields
FieldTypeRequiredDescription
typestringrequiredThe type of the API resource: Error
statusCodeintegerrequiredThe HTTP status code of the error
messagestringrequiredThe error message
Example response
{
  "type": "Error",
  "statusCode": 402,
  "message": "API access needs to be allowed for your subscription"
}
404Not Found

The specified Knowledge Graph does not exist.

Response fields
FieldTypeRequiredDescription
typestringrequiredThe type of the API resource: Error
statusCodeintegerrequiredThe HTTP status code of the error
messagestringrequiredThe error message
Example response
{
  "type": "Error",
  "statusCode": 404,
  "message": "Knowledge Graph with ID 'my-sales-kg' does not exist"
}
429Too Many Requests

The API request exceeds the rate limit.

Response fields
FieldTypeRequiredDescription
typestringrequiredThe type of the API resource: Error
statusCodeintegerrequiredThe HTTP status code of the error
messagestringrequiredThe error message
Example response
{
  "type": "Error",
  "statusCode": 429,
  "message": "API request exceeds the global rate limit"
}
500Internal Server Error

Processing the question failed due to an internal error.

Response fields
FieldTypeRequiredDescription
typestringrequiredThe type of the API resource: Error
statusCodeintegerrequiredThe HTTP status code of the error
messagestringrequiredThe error message
Example response
{
  "type": "Error",
  "statusCode": 500,
  "message": "Failed to process question: Connection timeout"
}

Run a VQL query

post/beta/queries/vql

Runs 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

NameInTypeRequiredDescription
kgIdquerystringrequiredThe ID of the Knowledge Graph Example: my-sales-kg

Request body

The VQL query to run(required)

FieldTypeRequiredDescription
vqlstringrequiredThe 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

200OK

The VQL query succeeded.

The response consists of the data and query rewriting information.

Response fields
FieldTypeRequiredDescription
typestringrequiredThe type of the API resource: VqlQueryResult
rewritingobjectrequiredThe rewriting applied to the VQL query
stepsarray of objectrequiredThe sequence of rewriting steps applied during semantic and logic rewriting
stage"semantic" | "logic"requiredThe name of the rewriting stage
rulestringrequiredThe name of the rewriting rule applied in this step
rewrittenVqlstring | nulloptionalThe rewritten VQL, if applying the rewriting rule succeeded
errorMessagestring | nulloptionalAn error message, if applying the rewriting rule failed
rewrittenVqlstring | nulloptionalThe rewritten VQL, after semantic and logic rewriting (if any), if rewriting succeeded
errorMessagestring | nulloptionalAn error message, if rewriting failed
sqlstring | nulloptionalThe generated SQL query: may not be available if the data was derived through post-processing or aggregation
dataobjectrequiredThe result data
columnsarray of objectrequiredThe data columns
namestringrequiredThe name of the column
rowsarray of array of stringrequiredThe 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
        }
      ]
    ]
  }
}
400Bad Request

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
FieldTypeRequiredDescription
typestringrequiredThe type of the API resource: Error
statusCodeintegerrequiredThe HTTP status code of the error
messagestringrequiredThe error message
Example response
{
  "type": "Error",
  "statusCode": 400,
  "message": "Query parameter 'kgId' is required"
}
401Unauthorized

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
FieldTypeRequiredDescription
typestringrequiredThe type of the API resource: Error
statusCodeintegerrequiredThe HTTP status code of the error
messagestringrequiredThe error message
Example response
{
  "type": "Error",
  "statusCode": 401,
  "message": "API key is required"
}
402Payment Required

API access is not enabled for your subscription.

Response fields
FieldTypeRequiredDescription
typestringrequiredThe type of the API resource: Error
statusCodeintegerrequiredThe HTTP status code of the error
messagestringrequiredThe error message
Example response
{
  "type": "Error",
  "statusCode": 402,
  "message": "API access needs to be allowed for your subscription"
}
404Not Found

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
FieldTypeRequiredDescription
typestringrequiredThe type of the API resource: Error
statusCodeintegerrequiredThe HTTP status code of the error
messagestringrequiredThe error message
Example response
{
  "type": "Error",
  "statusCode": 404,
  "message": "Knowledge Graph with ID 'my-supply-chain-kg' does not exist"
}
429Too Many Requests

The API request exceeds the rate limit.

Response fields
FieldTypeRequiredDescription
typestringrequiredThe type of the API resource: Error
statusCodeintegerrequiredThe HTTP status code of the error
messagestringrequiredThe error message
Example response
{
  "type": "Error",
  "statusCode": 429,
  "message": "API request exceeds the global rate limit"
}
500Internal Server Error

Running the VQL query failed.

The response includes information about the rewriting that was successfully applied before the error occurred.

Response fields
FieldTypeRequiredDescription
typestringrequiredThe type of the API resource: Error
statusCodeintegerrequiredThe HTTP status code of the error
messagestringrequiredThe error message
rewritingobjectrequiredThe succesfully applied rewriting, before the error occurred
stepsarray of objectrequiredThe sequence of rewriting steps applied during semantic and logic rewriting
stage"semantic" | "logic"requiredThe name of the rewriting stage
rulestringrequiredThe name of the rewriting rule applied in this step
rewrittenVqlstring | nulloptionalThe rewritten VQL, if applying the rewriting rule succeeded
errorMessagestring | nulloptionalAn error message, if applying the rewriting rule failed
rewrittenVqlstring | nulloptionalThe rewritten VQL, after semantic and logic rewriting (if any), if rewriting succeeded
errorMessagestring | nulloptionalAn 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

post/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

NameInTypeRequiredDescription
idpathstringrequiredThe ID of the shared answer to run Example: 0ece8e2d-b821-476d-bd78-986e8cb62879
kgIdquerystringrequiredThe 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

200OK

The shared answer ran successfully.

The response consists of the data and query rewriting information.

Response fields
FieldTypeRequiredDescription
typestringrequiredThe type of the API resource: SharedAnswerResult
vqlany | nulloptionalThe non-rewritten VQL of the shared answer, if it could be generated
rewritingobjectrequiredThe rewriting applied to the VQL query of the shared answer
stepsarray of objectrequiredThe sequence of rewriting steps applied during semantic and logic rewriting
stage"semantic" | "logic"requiredThe name of the rewriting stage
rulestringrequiredThe name of the rewriting rule applied in this step
rewrittenVqlstring | nulloptionalThe rewritten VQL, if applying the rewriting rule succeeded
errorMessagestring | nulloptionalAn error message, if applying the rewriting rule failed
rewrittenVqlstring | nulloptionalThe rewritten VQL, after semantic and logic rewriting (if any), if rewriting succeeded
errorMessagestring | nulloptionalAn error message, if rewriting failed
sqlstring | nulloptionalThe generated SQL query: may not be available if the data was derived through post-processing or aggregation
dataobjectrequiredThe result data
columnsarray of objectrequiredThe data columns
namestringrequiredThe name of the column
rowsarray of array of stringrequiredThe 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
        }
      ]
    ]
  }
}
400Bad Request

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
FieldTypeRequiredDescription
typestringrequiredThe type of the API resource: Error
statusCodeintegerrequiredThe HTTP status code of the error
messagestringrequiredThe error message
Example response
{
  "type": "Error",
  "statusCode": 400,
  "message": "Query parameter 'kgId' is required"
}
401Unauthorized

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
FieldTypeRequiredDescription
typestringrequiredThe type of the API resource: Error
statusCodeintegerrequiredThe HTTP status code of the error
messagestringrequiredThe error message
Example response
{
  "type": "Error",
  "statusCode": 401,
  "message": "API key is required"
}
402Payment Required

API access is not enabled for your subscription.

Response fields
FieldTypeRequiredDescription
typestringrequiredThe type of the API resource: Error
statusCodeintegerrequiredThe HTTP status code of the error
messagestringrequiredThe error message
Example response
{
  "type": "Error",
  "statusCode": 402,
  "message": "API access needs to be allowed for your subscription"
}
404Not Found

The shared answer doesn't exist.

Response fields
FieldTypeRequiredDescription
typestringrequiredThe type of the API resource: Error
statusCodeintegerrequiredThe HTTP status code of the error
messagestringrequiredThe error message
Example response
{
  "type": "Error",
  "statusCode": 404,
  "message": "Shared answer with ID '0ece8e2d-b821-476d-bd78-986e8cb62879' not found"
}
429Too Many Requests

The API request exceeds the rate limit.

Response fields
FieldTypeRequiredDescription
typestringrequiredThe type of the API resource: Error
statusCodeintegerrequiredThe HTTP status code of the error
messagestringrequiredThe error message
Example response
{
  "type": "Error",
  "statusCode": 429,
  "message": "API request exceeds the global rate limit"
}
500Internal Server Error

Running the shared answer failed.

Response fields
FieldTypeRequiredDescription
typestringrequiredThe type of the API resource: Error
statusCodeintegerrequiredThe HTTP status code of the error
messagestringrequiredThe error message
Example response
{
  "type": "Error",
  "statusCode": 500,
  "message": "Failed to run shared answer"
}