Get attribute snapshot

Retrieves one attribute snapshot by id, with its payload. A snapshot under another loan returns a 404.

Authentication

AuthorizationBearer
Bearer token. Use `ss_live_…` for live data or `ss_test_…` for the sandbox (test mode). See [Authentication](https://docs.spreadspace.app/api/authentication).

Path parameters

loanIdstringRequired
The loan's id.
snapshotIdstringRequired
The snapshot's id.

Headers

SpreadSpace-VersionstringOptionalformat: "^\d{4}-\d{2}-\d{2}$"
Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).

Response headers

X-Request-IDstringOptional
Correlation ID for this request. Quote it in support tickets.
SpreadSpace-VersionstringOptional

The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side SpreadSpace-Version header. Default: 2026-07-19.

RateLimit-Limitinteger
Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).
RateLimit-Remaininginteger

Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.

RateLimit-Resetinteger

Seconds until a guaranteed-fresh window.

RateLimit-PolicystringOptional

The active policy in limit;w=window-seconds form.

Response

OK
snapshot_idstring
versioninteger

Per-loan version number, counting up across every status.

statusstring

final (what an analyst approved at finalize), machine (the same loan built from the documents alone, with no analyst input) or draft (the latest autosave).

created_atdatetime
payloadany

The figures, in the attributes.v1 payload schema: the fiscal periods, the named attributes and ratios keyed over them, and the analyst inputs that shaped them. Stored opaque and returned as stored; the name-by-name catalog is on the Spreads page in the API docs. An API key receives values only, with source-provenance geometry stripped at every depth.

manifestany

What the payload was built from: the documents it drew on, a count-level summary of the analyst inputs, the entity scope, and when it was built. Stored opaque, documented alongside the payload on the Spreads page, and stripped of source-provenance geometry for an API key like the payload is.

spread_board_idstring or nullOptional
The saved spread these values were taken from, when one is known.
finalized_atdatetime or nullOptional

When the analyst finalized. Set on final snapshots only.

finalized_bystring or nullOptional

Display name of the analyst who finalized the spread (final and machine snapshots); null on drafts and for callers who may not see names.

finalized_by_external_user_idstring or nullOptional

The external_user_id your embed session named for the analyst who finalized. It is your own identifier for that user, not a person’s name, so it is returned to every caller and a backend can join it to its own user table. Null on drafts, and null when the finalize happened in the SpreadSpace workspace or under an embed session that named no user.

Errors

400
Bad Request Error
401
Unauthorized Error
403
Forbidden Error
404
Not Found Error
429
Too Many Requests Error
500
Internal Server Error