Skip to content

Get an AI request

Settings module

GET/ai-requests/{id}aiRequests.get

One Aurora model call: who asked, for which feature, with which configured model, and the prompt and output with personal data redacted. Restricted fields and medical records are never in it. Returns one AI request with its `ETag`. A AI request the caller may not see returns 404.

  • Requires the capability audit.log.read.
  • OAuth scopes: audit.
  • Error statuses: 400, 401, 404, 429. Errors are RFC 9457 problem details.

Path and query parameters

aiRequests.get: Path and query parameters
FieldTypeRequiredDescription
idstring (uuid)YesIdentifier of the ai request.
fieldsFieldsNoSparse fieldset: a comma-separated list of top-level fields to return. `id` is always returned.Constraints: pattern ^[a-z_][a-z0-9_]*(,[a-z_][a-z0-9_]*)*$

Response 200: AiRequest

aiRequests.get: AiRequest
FieldTypeRequiredDescription
idstring (uuid)YesIdentifier of the ai request.
org_idstring (uuid)YesIdentifier of the owning organization, derived from the parent row and never accepted from the caller.
created_atstring (date-time)YesWhen the row was created.
created_bystring (uuid) | nullYesIdentifier of the person who created the row.
updated_atstring (date-time)YesWhen the row was last updated.
updated_bystring (uuid) | nullYesIdentifier of the person who last updated the row.
person_idstring (uuid)YesIdentifier of the person who asked.
featureAiFeatureYesAn Aurora AI feature (Section 4.7).Constraints: one of "assistant", "plain_language", "extraction", "drafting", "summaries", "mapping"
modelstringYesModel identifier from configuration.Constraints: length 1 to 100
subject_tablestring | nullYesTable of the record the request was about.Constraints: length 1 to 100
subject_idstring (uuid) | nullYesIdentifier of the record the request was about.
outcomeAiRequestOutcomeYesHow a model call ended. No Answer is the silence rule (Section 3.7).Constraints: one of "Pending", "Answered", "No Answer", "Failed"
prompt_redactedstring | nullYesPrompt as sent, redacted.Constraints: length 1 to 20000
output_redactedstring | nullYesModel output, redacted.Constraints: length 1 to 20000
failure_codestring | nullYesWhy a Failed request failed.Constraints: length 1 to 64
completed_atstring (date-time) | nullYesWhen the request finished.
{
  "id": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f",
  "org_id": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f",
  "created_at": "2026-10-08T14:30:00Z",
  "created_by": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f",
  "updated_at": "2026-10-08T14:30:00Z",
  "updated_by": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f",
  "person_id": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f",
  "feature": "assistant",
  "model": "claude-sonnet-5-5",
  "subject_table": "app.documents",
  "subject_id": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f",
  "outcome": "Answered",
  "prompt_redacted": "Who is the vendor contact?",
  "output_redacted": "Ivy Chen, [phone].",
  "failure_code": "model_error",
  "completed_at": "2026-10-08T14:30:00Z"
}

Code samples

curl -X GET "$XOS_BASE_URL/ai-requests/0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f" \
  -H "Authorization: Bearer $XOS_API_KEY"
const { data, etag } = await xos.aiRequests.get("0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f");
response = xos.ai_requests.get("0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f")
xos ai-requests get 0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f