Skip to main content
POST
Ask Question
Ask a question to your AI-powered Q&A assistant and receive a detailed response with references.
To ask follow-up questions, include the session_id from a previous response in your request. This allows the Guru to maintain context of the conversation.

Path Parameters

guru_slug
string
required
The slug of the Guru to ask a question to

Headers

x-api-key
string
required
Your API key for authentication. You can obtain your API key from the Gurubase dashboard.

Body Parameters

question
string
required
The question to ask your Guru
stream
boolean
default:false
Whether to stream the response or not. If true, only the content of the response will be returned in chunks.
session_id
string
Maintain conversation context for follow-up questions. When a question is asked, the response includes a session_id that can be used in subsequent requests. On the Gurubase platform, these conversation sessions are called “Binges”.
external_user_id
string
External user identifier for tracking user-specific conversation sessions. When provided, this ID is stored in the session. If a session already exists with a different external_user_id, the request will be rejected.
fetch_existing
boolean
default:false
Fetch an existing answer. Do not ask a new question (generally used after streaming to fetch the answer fields like references etc.).
images
array
Optional list of image attachments to include with the question. Each item is an object with:
  • data (string): Base64-encoded image as a data URL, formatted as data:<mime>;base64,<payload> (see the encode_binary helper in the “Asking With Attachments” example).
  • name (string): File name (e.g. screenshot.png).
  • type (string): MIME type (e.g. image/png).
Item count and per-file size are subject to the Guru’s limits. Images exceeding the limits are silently skipped and the response includes a note with how many were dropped.
log_files
array
Optional list of log file attachments to include with the question. Each item is an object with:
  • data (string): Raw UTF-8 log text (see the read_log helper in the “Asking With Attachments” example). Not base64-encoded.
  • name (string): File name (e.g. app.log).
Item count and per-file size are subject to the Guru’s limits. Log files exceeding the limits are silently skipped and the response includes a note with how many were dropped.
pdf_files
array
Optional list of PDF attachments to include with the question. Each item is an object with:
  • data (string): Base64-encoded PDF as a data URL, formatted as data:<mime>;base64,<payload> (see the encode_binary helper in the “Asking With Attachments” example).
  • name (string): File name (e.g. doc.pdf).
  • type (string): MIME type (typically application/pdf).
Item count and per-file size are subject to the Guru’s limits. Unlike images and log files, PDFs are validated upfront: if the request exceeds the limits, the endpoint returns HTTP 400 and no answer is generated.

Response

slug
string
Unique identifier for the question-answer pair
content
string
The answer in Markdown format
question
string
The original question
date_updated
string
The date when the answer was generated
trust_score
number
Confidence score of the answer (0-100)
references
array
Array of reference sources used to generate the answer
session_id
string
Unique identifier for the conversation session
question_url
string
URL link to open the question on the app
can_receive_feedback
boolean
Whether the question can receive votes and feedback. Returns false for simple interactions and clarifications, true for normal answers. See the Record Vote endpoint for more information on providing feedbacks and votes.
When stream=true, the response will be a text stream containing only the answer content in chunks, not the full JSON object. The JSON response format shown below applies only when stream=false (default).

Code Examples

Stream a response for real-time output, then fetch the completed answer to get metadata like trust_score, references, and session_id.