Skip to main content
GET
Get Question Status
Retrieves the current status and results of a question that was submitted to the assistant. This endpoint is primarily used to check the progress of async questions or to retrieve results after webhook notifications.

Authentication

This endpoint requires a valid API key in the Authorization header.

Path Parameters

string
required
The ID of the assistant that processed the question. Use "default" for the general Wordsmith assistant, or the specific assistant ID used in the original request.
string
required
The id returned when the question was originally created. This addresses that specific question — for the first question in a session it equals the session ID, and for follow-up questions it is a distinct question ID. See Understanding IDs.

Response

string
The unique identifier for this specific question.
string
The session ID that contains this question. This remains constant for all questions within the same conversation session. null only when status is "filtered", where no session was created.
string
A direct URL to view this session in the Wordsmith web application. This allows users to access the full conversation history and interact with the assistant through the web interface. null only when status is "filtered", where there is no session to view.
string
The current status of the question: "in_progress": The assistant is still processing your question. "completed": Processing is complete and the answer is available. "error": An error occurred during processing. "filtered": The assistant declined the question, so nothing was processed and no session exists — see Filtered questions."completed", "error" and "filtered" are all terminal: once returned, a question’s status never changes again. Only "in_progress" is worth polling on.
string
The assistant’s response to your question. Present when status is "completed", and also when it is "filtered" — where it carries the decline wording, so a client that only reads answer still has something to show. See Filtered questions.
array
Array of files generated by the assistant during processing. Only present when status is "completed" and files were generated.
string
One sentence explaining why the assistant declined this particular question, stored when it was filtered and returned unchanged on every later poll. Present only when status is "filtered", and null for every other status. answer carries the same sentence, unless the assistant’s owner has set fixed wording to return instead. Both can be null on a filtered question — questions filtered before these fields existed have no stored explanation — so show them when they are there rather than depending on them.

Understanding IDs

ID vs Session ID

The response includes two important identifiers:
  • id: The unique identifier for this specific question. For the first question in a session, this equals the session_id. For follow-up questions, this is a unique feed item ID.
  • session_id: The session ID that contains this question. This remains constant for all questions within the same conversation, and is null for a filtered question.
Examples:
  • First question in a new session: id and session_id are the same
  • Follow-up question: id is a unique question ID, session_id is the original session ID
  • Filtered question: id names the question itself, session_id is null because no session was created
Use the id field to check the status of individual questions, and the session_id to identify which conversation session the question belongs to.

Polling Strategy

When using async mode, you can poll this endpoint to check for completion. Stop on any terminal status — "completed", "error" or "filtered" — and treat everything else as still in flight. A loop that waits only for "completed" or "error" polls a filtered question until it times out. Here’s a recommended polling strategy:

Error Responses

See the Errors page for the full error format reference.

File Download

When the response includes attachments, you can download them using the provided URLs:

Best Practices

Polling Guidelines

  • Start with short intervals: Begin with 2-3 second intervals for quick questions
  • Use exponential backoff: Gradually increase intervals to reduce API calls
  • Set reasonable timeouts: Most questions complete within 2-5 minutes
  • Stop on every terminal status: "completed", "error" and "filtered" are all final — never poll past one
  • Handle errors gracefully: Always check for error status and handle appropriately

File Management

  • Download promptly: Attachment URLs expire after 24 hours
  • Store locally if needed: Download and store important generated files
  • Check file sizes: Large files may take time to generate and download

Performance Optimization

  • Use webhooks when possible: More efficient than polling for production applications
  • Cache results: Store completed responses to avoid unnecessary API calls
  • Batch requests: If checking multiple questions, consider batching your requests

Use Cases

  • Status checking: Monitor progress of long-running document analysis
  • Result retrieval: Get answers after receiving webhook notifications
  • Error handling: Check for and handle processing errors
  • File downloads: Retrieve generated reports and analysis documents
  • Integration workflows: Build automated systems that process legal documents