---
title: "Get Observation"
method: GET
path: "/v1/observation/{observation_id}"
tags: ["Observations"]
---

# Get Observation

`GET /v1/observation/{observation_id}`

## Request

- Base URL: `https://developer.beta.salussafety.io`
- URL: `https://developer.beta.salussafety.io/v1/observation/{observation_id}`
- Auth: one of:
  - HTTP bearer
  - OAuth 2
    - Client credentials
    - Token URL: `https://guardian.beta.salussafety.io/token`
  - OAuth 2
    - Authorization code: `https://guardian.beta.salussafety.io/authorize`
    - Token URL: `https://guardian.beta.salussafety.io/token`

Get a single observation by its UUID.

The observation must belong to the caller's company.

## Path parameters

- `observation_id` string, required

## Response `200`

Successful Response

- ApiGenericResponseObservationModel
  - `error` boolean: A boolean error indicator.
  - `message` string, nullable: Optional message.
  - `data` ObservationModel: A single observation artifact.
    - `id` string, required: Observation UUID.
    - `companyId` integer, required
    - `userId` integer, required: The user who captured the observation.
    - `siteId` integer, nullable
    - `capturedAt` string, date-time, required
    - `type` string, required: Media kind: 'text', 'image', or 'voice' ('audio' is a legacy value on older rows).
    - `value` string, required: Payload: note text, or the stored S3 object key for image/voice.
    - `signedUrl` string, nullable: For image/voice observations: a time-limited presigned URL to fetch the media. Null for text. Use this (not `value`) to access the media; it expires.
    - `imageUrl` string, nullable: For image observations: a URL served by the image-resize utility. Not presigned and does not expire, and already sized for report display. Hand it to a vision model or embed it directly in report markdown. Null for text and voice — the resize utility cannot serve audio, so use `signedUrl` for voice media.
    - `metadata` object: Enrichment bag — transcription, AI analysis, etc.
    - `deleted` boolean
    - `groupIds` string[]: UUIDs of the observation_groups this observation belongs to.
    - `createdAt` string, date-time, nullable
    - `updatedAt` string, date-time, nullable

## Other responses

- `400`: Business Logic Error
- `403`: Permission Error
- `409`: Integrity Error or Data Conflict
- `422`: Validation Error

## Changes

- **2026-11-03** `9ee72e046aa1`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/salussafety/apis/salus-developer-api/changes/v1/observation/:observation_id/get.md)

---

[API](https://skmtc.dev/salussafety/apis/salus-developer-api.md) - [All operations](https://skmtc.dev/salussafety/apis/salus-developer-api/llms.txt) - [OpenAPI document](https://skmtc.dev/salussafety/apis/salus-developer-api/revisions/9ee72e046aa1?raw)
