Create embed session

Mints a short-lived embed session token bound to one loan. Requires a plan that includes the embedded review UI; other plans get a 403.

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).

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).

Request

This endpoint expects an object.
loan_idstringRequired
scopeslist of strings or nullOptional
expires_in_secondsinteger or nullOptional
external_user_idstring or nullOptional

Optional opaque, stable identifier for the end user you are embedding for. Supply it and that user’s saved work persists across their sessions; omit it and the session keeps nothing. Max 256 characters after trimming, and a blank value is rejected rather than ignored.

display_namestring or nullOptional

Reserved. Stored with the end user’s id, not shown anywhere yet. Requires external_user_id (a label on its own is a 400). Control characters are stripped and the value trimmed; max 120 characters, and a blank value is rejected rather than ignored.

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
embed_tokenstring
session_idstring
expires_atdatetime
loan_idstring
borrower_idstring
scopeslist of strings
persistencestring

How far the end user’s work survives this session. user means the mint carried an external_user_id, so saved spreads, preferences and memo templates come back on that user’s next session. session means it did not, so everything the end user arranges is discarded when the frame unloads. Always present.

external_user_idstring or nullOptional

Echo of the request’s external_user_id, trimmed. Omitted when the mint carried no end-user id.

display_namestring or nullOptional

Echo of the request’s display_name as stored, with control characters stripped and the value trimmed. Omitted when the mint carried no label.

Errors

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