Skip to navigation

Create export

Starts an export of selected documents’ line items and returns the export to poll. document_ids is required: one to one thousand ids of documents on the loan. Poll until status is succeeded, at which point the export carries a fresh download_url on every read. A retry carrying the same Idempotency-Key within 24 hours replays the original 202 response with Idempotency-Replay: true; after that window the same key returns the existing export with 200 for as long as the export exists.

Requires the extractions:export scope. Rate limit: 120 requests per minute per key (the export lane).

Authentication

AuthorizationBearer

Bearer token. Use ss_live_… for live data or ss_test_… for the sandbox (test mode). See Authentication.

Headers

Idempotency-KeystringOptional<=255 characters

Idempotency token. Retries that reuse the key within 24h replay the original response. Up to 255 characters; a UUID is typical. See Idempotency.

SpreadSpace-VersionstringOptionalformat: "^\d{4}-\d{2}-\d{2}$"

Pin the API version, e.g. 2026-10-07. Omit to get the latest. See Versioning.

Request

This endpoint expects an object.
borrower_idstringRequired
The borrower whose documents are being exported.
loan_idstringRequired
The loan the documents sit on.
document_idslist of stringsRequired

The documents to include. Required: name between 1 and 1000 of them.

formatenumOptional

xlsx (bank statements only) | csv | json. Defaults to xlsx; a request that names any non-bank-statement document with xlsx is rejected with 400.

Allowed values:

Response headers

X-Request-IDstringOptional
Correlation ID for this request. Quote it in support tickets.
Idempotency-Replayboolean

Set to true when the response is replayed from the idempotency cache for a request that re-presented an Idempotency-Key it had already used. Absent on the original (winner) response. A replay repeats the original status and body. When the original could not be stored (an unhandled server fault, or a body over the 1 MiB replay cap) the replay is an error envelope that says so; the operation is never re-run under the same key.

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-10-07.

RateLimit-Limitinteger

Request budget of the endpoint’s rate-limit policy per 60-second sliding window. See 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
export_idstring
statusenum
progressobject

How much of the work is finished: completed out of total. Both are zero until the totals are known.

document_countsobject

How the selection turned out: requested is what the caller named, exported is what landed in the bundle, and skipped counts the ids that did not resolve inside the borrower and loan.

skipped_document_idslist of strings
bundleobject or null

The finished file: its name, its size in bytes, and how many line items it carries.

created_atdatetime
expires_atdatetime
borrower_idstring or nullOptional
loan_idstring or nullOptional
formatenumOptional
Allowed values:
download_urlstring or nullOptional
download_expires_atdatetime or nullOptional
error_codestring or nullOptional
error_messagestring or nullOptional
started_atdatetime or nullOptional
completed_atdatetime or nullOptional

Errors

400
Bad Request Error
401
Unauthorized Error
402
Payment Required Error
403
Forbidden Error
404
Not Found Error
409
Conflict Error
429
Too Many Requests Error
500
Internal Server Error