{
  "auth": {
    "bearer": [
      {
        "key": "token",
        "type": "string",
        "value": "{{apiKey}}"
      }
    ],
    "type": "bearer"
  },
  "info": {
    "_postman_id": "880d69ce-bb61-5579-b4e0-39b5602df3d0",
    "description": "Every public SpreadSpace API operation as one request, generated from the public OpenAPI spec (version 2026-07-19). Requests inherit the collection's bearer auth from the apiKey variable. Import the SpreadSpace test mode environment alongside this collection and paste an ss_test_ key into its apiKey; the same requests run against live data with an ss_live_ key.",
    "name": "SpreadSpace API",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "item": [
    {
      "id": "b5a4ea7d-5026-5268-b6c5-0d978c0a1e24",
      "item": [
        {
          "id": "cc12d2ba-ece2-568b-a390-4df710144057",
          "name": "List borrowers",
          "request": {
            "description": "Lists the borrowers you can see, newest first. Pass `intake=true` to list intake borrowers instead of the curated ones.\n\nRequires the `borrowers:read` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              }
            ],
            "method": "GET",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "borrowers"
              ],
              "query": [
                {
                  "description": "Page size, 1 to 100. Defaults to 50.",
                  "disabled": true,
                  "key": "limit",
                  "value": ""
                },
                {
                  "description": "The `next_cursor` from the previous page.",
                  "disabled": true,
                  "key": "cursor",
                  "value": ""
                },
                {
                  "description": "Set to true to list intake borrowers instead of the curated ones.",
                  "disabled": true,
                  "key": "intake",
                  "value": "false"
                }
              ],
              "raw": "{{baseUrl}}/api/borrowers"
            }
          },
          "response": []
        },
        {
          "id": "7aa722ef-ab4c-586a-8536-04520db10bae",
          "name": "Create borrower",
          "request": {
            "body": {
              "mode": "raw",
              "options": {
                "raw": {
                  "language": "json"
                }
              },
              "raw": "{\n  \"name\": \"Acme Corporation\"\n}"
            },
            "description": "Creates a borrower. `status` is free text (at most 20 characters) and defaults to `good_standing`.\n\nRequires the `borrowers:write` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              },
              {
                "description": "Retries that reuse the key within 24h replay the original response.",
                "key": "Idempotency-Key",
                "value": "{{$guid}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "borrowers"
              ],
              "raw": "{{baseUrl}}/api/borrowers"
            }
          },
          "response": []
        },
        {
          "id": "054b6f03-7afe-544b-afa4-6a24b05ab3d0",
          "name": "Get borrower",
          "request": {
            "description": "Retrieves a single borrower.\n\nRequires the `borrowers:read` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              }
            ],
            "method": "GET",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "borrowers",
                ":id"
              ],
              "raw": "{{baseUrl}}/api/borrowers/:id",
              "variable": [
                {
                  "description": "The borrower's id.",
                  "key": "id",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        },
        {
          "id": "7eb5da99-97b6-5c26-a41e-b8ad712e7005",
          "name": "Update borrower",
          "request": {
            "body": {
              "mode": "raw",
              "options": {
                "raw": {
                  "language": "json"
                }
              },
              "raw": "{\n  \"status\": \"good_standing\",\n  \"notes\": \"Updated after the Q3 review\"\n}"
            },
            "description": "Updates a borrower. Only the fields you send change.\n\nRequires the `borrowers:write` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              },
              {
                "description": "Retries that reuse the key within 24h replay the original response.",
                "key": "Idempotency-Key",
                "value": "{{$guid}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "method": "PATCH",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "borrowers",
                ":id"
              ],
              "raw": "{{baseUrl}}/api/borrowers/:id",
              "variable": [
                {
                  "description": "The borrower's id.",
                  "key": "id",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        },
        {
          "id": "eba4960e-15e3-5993-acb4-cd52321c1b5e",
          "name": "Delete borrower",
          "request": {
            "description": "Permanently deletes a borrower along with its loans, uploads and extractions. There is no undo.\n\nRequires the `borrowers:delete` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              },
              {
                "description": "Retries that reuse the key within 24h replay the original response.",
                "key": "Idempotency-Key",
                "value": "{{$guid}}"
              }
            ],
            "method": "DELETE",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "borrowers",
                ":id"
              ],
              "raw": "{{baseUrl}}/api/borrowers/:id",
              "variable": [
                {
                  "description": "The borrower's id.",
                  "key": "id",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        },
        {
          "id": "89371699-a499-5719-be24-3053f31383e2",
          "name": "List borrower jobs",
          "request": {
            "description": "Lists the borrower's uploads. Returns an array (not a paginated envelope) of at most 200 jobs, newest first; for larger histories page `GET /api/jobs` and filter by `borrower_id`.\n\nRequires the `jobs:read` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              }
            ],
            "method": "GET",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "borrowers",
                ":id",
                "jobs"
              ],
              "query": [
                {
                  "description": "Page size, at most 200. Defaults to 50.",
                  "disabled": true,
                  "key": "limit",
                  "value": "50"
                }
              ],
              "raw": "{{baseUrl}}/api/borrowers/:id/jobs",
              "variable": [
                {
                  "description": "The borrower's id.",
                  "key": "id",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        },
        {
          "id": "3d9e74dc-0dff-5e10-8060-0fec30cf5e54",
          "name": "Get job results",
          "request": {
            "description": "Retrieves the extraction results of one of the borrower's uploads.\n\nRequires the `jobs:read` and `extractions:read` scopes. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              }
            ],
            "method": "GET",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "borrowers",
                ":id",
                "jobs",
                ":jobId",
                "results"
              ],
              "raw": "{{baseUrl}}/api/borrowers/:id/jobs/:jobId/results",
              "variable": [
                {
                  "description": "The borrower's id.",
                  "key": "id",
                  "value": ""
                },
                {
                  "description": "The upload's job id.",
                  "key": "jobId",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        }
      ],
      "name": "Borrowers"
    },
    {
      "id": "83d9a686-66b1-584a-94fc-fa5208f6cb35",
      "item": [
        {
          "id": "4784b76d-c3bd-5726-94e2-db719b7fc995",
          "name": "Generate presigned URL",
          "request": {
            "body": {
              "mode": "raw",
              "options": {
                "raw": {
                  "language": "json"
                }
              },
              "raw": "{\n  \"file_name\": \"loan_application_2024.pdf\",\n  \"content_type\": \"application/pdf\",\n  \"loan_id\": \"9f8b7c6d5e4a3b2c1d0e4f5a\"\n}"
            },
            "description": "Signs a one-time upload URL for one file and creates the job that tracks it. `loan_id` is required. A declared file size over 100 MB is rejected, and a file over 50 MB is refused when processing starts.\n\nRequires the `documents:write` scope. Rate limit: 1000 requests per minute per key (the `upload` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "documents",
                "presigned-url"
              ],
              "raw": "{{baseUrl}}/api/documents/presigned-url"
            }
          },
          "response": []
        },
        {
          "id": "d3d42a23-96ff-54a3-8915-10bdb342a19d",
          "name": "Generate presigned URLs batch",
          "request": {
            "body": {
              "mode": "raw",
              "options": {
                "raw": {
                  "language": "json"
                }
              },
              "raw": "{\n  \"files\": [\n    {\n      \"file_name\": \"loan_application_2024.pdf\",\n      \"content_type\": \"application/pdf\",\n      \"loan_id\": \"9f8b7c6d5e4a3b2c1d0e4f5a\"\n    }\n  ]\n}"
            },
            "description": "Signs upload URLs for up to 100 files in one call. `results[i]` always matches `files[i]`. An empty `files` list, more than 100 entries, or an entry missing a required field fails the whole request with 400; a per-file validation problem is reported in that file's `error` instead.\n\nRequires the `documents:write` scope. Rate limit: 1000 requests per minute per key (the `upload` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "documents",
                "presigned-urls-batch"
              ],
              "raw": "{{baseUrl}}/api/documents/presigned-urls-batch"
            }
          },
          "response": []
        },
        {
          "id": "0faca87a-6ace-5447-90d9-e25b7f1dd6d9",
          "name": "Confirm upload",
          "request": {
            "body": {
              "mode": "raw",
              "options": {
                "raw": {
                  "language": "json"
                }
              },
              "raw": "{}"
            },
            "description": "Confirms one uploaded file has landed and starts processing it. Answers 503 when the processing pipeline is not configured and 502 when it fails to start.\n\nRequires the `documents:write` scope. Rate limit: 1000 requests per minute per key (the `upload` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              },
              {
                "description": "Retries that reuse the key within 24h replay the original response.",
                "key": "Idempotency-Key",
                "value": "{{$guid}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "documents",
                ":jobId",
                "confirm-upload"
              ],
              "raw": "{{baseUrl}}/api/documents/:jobId/confirm-upload",
              "variable": [
                {
                  "description": "The upload's job id.",
                  "key": "jobId",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        },
        {
          "id": "651b99ba-da73-5298-9040-e0b6f2eab296",
          "name": "Confirm uploads",
          "request": {
            "body": {
              "mode": "raw",
              "options": {
                "raw": {
                  "language": "json"
                }
              },
              "raw": "{\n  \"job_ids\": [\n    \"9f8b7c6d5e4a3b2c1d0e9f8a\"\n  ]\n}"
            },
            "description": "Confirms several uploaded files at once and starts processing them in one run. Up to 250 job ids per call. Each file reports its own status, so a rejected file does not fail the others. Answers 503 when the processing pipeline is not configured; a pipeline start failure is reported per file as `status: FAILED` with an `error`.\n\nRequires the `documents:write` scope. Rate limit: 1000 requests per minute per key (the `upload` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              },
              {
                "description": "Retries that reuse the key within 24h replay the original response.",
                "key": "Idempotency-Key",
                "value": "{{$guid}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "documents",
                "confirm-uploads"
              ],
              "raw": "{{baseUrl}}/api/documents/confirm-uploads"
            }
          },
          "response": []
        },
        {
          "id": "e8fabf2a-8e11-54cb-a73c-0072fdde0428",
          "name": "Get job status",
          "request": {
            "description": "Retrieves the processing status of one upload.\n\nRequires the `documents:read` scope. Rate limit: 1000 requests per minute per key (the `upload` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              }
            ],
            "method": "GET",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "documents",
                ":jobId",
                "status"
              ],
              "raw": "{{baseUrl}}/api/documents/:jobId/status",
              "variable": [
                {
                  "description": "The upload's job id.",
                  "key": "jobId",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        },
        {
          "id": "c17acd21-5ec1-5c8a-8f11-674cf8b4ede0",
          "name": "Get job status batch",
          "request": {
            "body": {
              "mode": "raw",
              "options": {
                "raw": {
                  "language": "json"
                }
              },
              "raw": "{\n  \"job_ids\": [\n    \"9f8b7c6d5e4a3b2c1d0e9f8a\"\n  ]\n}"
            },
            "description": "Looks up several uploads in one request. Up to 200 job ids per call. Uploads you cannot see are left out of the response rather than failing it.\n\nRequires the `documents:read` scope. Rate limit: 1000 requests per minute per key (the `upload` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              },
              {
                "description": "Retries that reuse the key within 24h replay the original response.",
                "key": "Idempotency-Key",
                "value": "{{$guid}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "documents",
                "status-batch"
              ],
              "raw": "{{baseUrl}}/api/documents/status-batch"
            }
          },
          "response": []
        },
        {
          "id": "671285c3-5ccf-54e2-bc7a-43949a8f5781",
          "name": "Generate download URL",
          "request": {
            "description": "Returns a short-lived link to the file behind an upload. Pass `docId` for the link to one extracted document inside it.\n\nRequires the `documents:read` scope. Rate limit: 1000 requests per minute per key (the `upload` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              }
            ],
            "method": "GET",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "documents",
                ":jobId",
                "download-url"
              ],
              "query": [
                {
                  "description": "Link one extracted document inside the upload instead of the whole file.",
                  "disabled": true,
                  "key": "docId",
                  "value": ""
                }
              ],
              "raw": "{{baseUrl}}/api/documents/:jobId/download-url",
              "variable": [
                {
                  "description": "The upload's job id.",
                  "key": "jobId",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        }
      ],
      "name": "Documents"
    },
    {
      "id": "8fda88fd-0391-5dd0-bdf6-f9056de4d0d2",
      "item": [
        {
          "id": "a65c2497-a22c-50a7-a7ce-6f5e9dbd586b",
          "name": "Create embed session",
          "request": {
            "body": {
              "mode": "raw",
              "options": {
                "raw": {
                  "language": "json"
                }
              },
              "raw": "{\n  \"loan_id\": \"9f8b7c6d5e4a3b2c1d0e4f5a\"\n}"
            },
            "description": "Mints a short-lived embed session token bound to one loan. `scopes` may be omitted only on a key that holds no write scopes beyond `embed:write`, `intake:write` and `sandbox:reset`: the session then inherits the key's displayable reads (`documents:read`, `extractions:read`, `spreads:read`). A key holding any write (the Embed-token minter preset does) must name `scopes` explicitly, or the mint fails with 400 `embed_scope_not_allowed`. A named write (`documents:write`, `extractions:write`, `extractions:edit`, `spreads:write`) is granted only if the key holds it. Requires a plan that includes the embedded review UI; other plans get a 403.\n\nRequires the `embed:write` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "embed",
                "sessions"
              ],
              "raw": "{{baseUrl}}/api/embed/sessions"
            }
          },
          "response": []
        },
        {
          "id": "19a694f0-69fc-517d-8bc7-1203e13411ca",
          "name": "Revoke embed session",
          "request": {
            "description": "Revokes an embed session, invalidating its token immediately.\n\nRequires the `embed:write` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              },
              {
                "description": "Retries that reuse the key within 24h replay the original response.",
                "key": "Idempotency-Key",
                "value": "{{$guid}}"
              }
            ],
            "method": "DELETE",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "embed",
                "sessions",
                ":sessionId"
              ],
              "raw": "{{baseUrl}}/api/embed/sessions/:sessionId",
              "variable": [
                {
                  "description": "The embed session's id.",
                  "key": "sessionId",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        },
        {
          "id": "8532fe26-dc0a-545e-a14f-541e31e4075f",
          "name": "Create iframe URL",
          "request": {
            "body": {
              "mode": "raw",
              "options": {
                "raw": {
                  "language": "json"
                }
              },
              "raw": "{\n  \"loan_id\": \"9876543210abcdef98765432\",\n  \"surface\": \"spreading\"\n}"
            },
            "description": "Mints a single-use signed URL that loads the embedded review UI in an iframe, so the token itself never reaches the parent frame. `surface` is `spreading` or `documents`; `handle_lifetime_seconds` defaults to 60 (at most 300); `token_lifetime_seconds` defaults to 3600 (at most 86400). Requires a plan that includes the embedded review UI; other plans get a 403.\n\nRequires the `embed:write` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "embed",
                "iframe-urls"
              ],
              "raw": "{{baseUrl}}/api/embed/iframe-urls"
            }
          },
          "response": []
        },
        {
          "id": "a9766de3-bf9d-54fd-ab6d-b15139131f71",
          "name": "Create intake",
          "request": {
            "body": {
              "mode": "raw",
              "options": {
                "raw": {
                  "language": "json"
                }
              },
              "raw": "{\n  \"file_name\": \"loan_application_2024_04_27.pdf\",\n  \"content_type\": \"application/pdf\"\n}"
            },
            "description": "Creates a borrower and loan for one submission and returns an upload URL for it. Reusing a `client_reference` returns the same borrower and loan instead of creating another pair.\n\nRequires the `intake:write` scope. Rate limit: 1000 requests per minute per key (the `upload` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              },
              {
                "description": "Retries that reuse the key within 24h replay the original response.",
                "key": "Idempotency-Key",
                "value": "{{$guid}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "intake"
              ],
              "raw": "{{baseUrl}}/api/intake"
            }
          },
          "response": []
        },
        {
          "id": "de379b04-085d-569a-9a14-d3d7af298ace",
          "name": "Confirm intake",
          "request": {
            "body": {
              "mode": "raw",
              "options": {
                "raw": {
                  "language": "json"
                }
              },
              "raw": "{}"
            },
            "description": "Confirms the intake upload has landed and starts processing it. Answers 503 when the processing pipeline is not configured and 502 when it fails to start.\n\nRequires the `intake:write` scope. Rate limit: 1000 requests per minute per key (the `upload` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              },
              {
                "description": "Retries that reuse the key within 24h replay the original response.",
                "key": "Idempotency-Key",
                "value": "{{$guid}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "intake",
                ":jobId",
                "confirm"
              ],
              "raw": "{{baseUrl}}/api/intake/:jobId/confirm",
              "variable": [
                {
                  "description": "The upload's job id.",
                  "key": "jobId",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        }
      ],
      "name": "Embed"
    },
    {
      "id": "40f5cb51-6573-5cef-a9b8-d6eed6ad6dfd",
      "item": [
        {
          "id": "ee73fd34-758f-5a8d-b685-dc57f7c94980",
          "name": "Create export",
          "request": {
            "body": {
              "mode": "raw",
              "options": {
                "raw": {
                  "language": "json"
                }
              },
              "raw": "{\n  \"borrower_id\": \"9f8e7d6c5b4a3210a1b2c3d4\",\n  \"loan_id\": \"9f8b7c6d5e4a3b2c1d0e4f5a\",\n  \"document_ids\": [\n    \"123abc456def7890a1b2c3d4\",\n    \"456def789abc0123a1b2c3d4\"\n  ],\n  \"format\": \"xlsx\"\n}"
            },
            "description": "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.\n\nRequires the `extractions:export` scope. Rate limit: 120 requests per minute per key (the `export` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              },
              {
                "description": "Retries that reuse the key within 24h replay the original response.",
                "key": "Idempotency-Key",
                "value": "{{$guid}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "extractions",
                "exports"
              ],
              "raw": "{{baseUrl}}/api/extractions/exports"
            }
          },
          "response": []
        },
        {
          "id": "c3436507-364e-5bb7-977e-9110b6fc42b3",
          "name": "List exports",
          "request": {
            "description": "Lists the exports you started, newest first. Filter with `status`; page with `cursor`.\n\nRequires the `extractions:read` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              }
            ],
            "method": "GET",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "extractions",
                "exports"
              ],
              "query": [
                {
                  "description": "Filter to one status: `queued`, `running`, `cancelling`, `succeeded`, `failed` or `cancelled`; any other value is rejected with 400.",
                  "disabled": true,
                  "key": "status",
                  "value": ""
                },
                {
                  "description": "The `next_cursor` from the previous page.",
                  "disabled": true,
                  "key": "cursor",
                  "value": ""
                },
                {
                  "description": "Page size, at most 200. Defaults to 50.",
                  "disabled": true,
                  "key": "limit",
                  "value": ""
                }
              ],
              "raw": "{{baseUrl}}/api/extractions/exports"
            }
          },
          "response": []
        },
        {
          "id": "c5c94dfb-3605-587a-b5de-d3b61459d3f2",
          "name": "Get export",
          "request": {
            "description": "Retrieves one export so you can poll it until `status` is terminal. A succeeded export carries a `download_url` minted fresh on each read. An export started by someone else returns a 404.\n\nRequires the `extractions:read` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              }
            ],
            "method": "GET",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "extractions",
                "exports",
                ":exportId"
              ],
              "raw": "{{baseUrl}}/api/extractions/exports/:exportId",
              "variable": [
                {
                  "description": "The export's id.",
                  "key": "exportId",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        },
        {
          "id": "ce5643d4-997f-5cdd-a835-6e5e32de1a71",
          "name": "Cancel export",
          "request": {
            "description": "Cancels an export. A queued export is cancelled at once; a running one moves to `cancelling` and stops at its next document boundary. An export that already finished returns a 409; one already cancelled is returned unchanged. Cancelling a queued export emits `export.cancelled`; a running one emits it when the worker stops.\n\nRequires the `extractions:export` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              },
              {
                "description": "Retries that reuse the key within 24h replay the original response.",
                "key": "Idempotency-Key",
                "value": "{{$guid}}"
              }
            ],
            "method": "POST",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "extractions",
                "exports",
                ":exportId",
                "cancel"
              ],
              "raw": "{{baseUrl}}/api/extractions/exports/:exportId/cancel",
              "variable": [
                {
                  "description": "The export's id.",
                  "key": "exportId",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        },
        {
          "id": "0171d665-2683-52dc-b78a-27331bce0ece",
          "name": "Download export",
          "request": {
            "description": "Redirects with a 302 to a short-lived download link for a finished export's bundle. Answers 404 until the export has succeeded and again once it has expired.\n\nRequires the `extractions:read` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              }
            ],
            "method": "GET",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "extractions",
                "exports",
                ":exportId",
                "download"
              ],
              "raw": "{{baseUrl}}/api/extractions/exports/:exportId/download",
              "variable": [
                {
                  "description": "The export's id.",
                  "key": "exportId",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        }
      ],
      "name": "Extraction exports"
    },
    {
      "id": "ca4fb348-4a29-5aad-a1b1-c954d5f03ef2",
      "item": [
        {
          "id": "8724d3b5-9cae-56a2-939e-8fa2d54270eb",
          "name": "List EBITDA add-back selections",
          "request": {
            "description": "Lists the loan's saved company-reported EBITDA add-back selections for every company scope in one read; group rows by `entity_key` (an empty string is the whole-loan scope). `loanId` is required. `added_by` is resolved on this read.\n\nRequires the `extractions:read` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              }
            ],
            "method": "GET",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "borrowers",
                ":borrowerId",
                "extractions",
                "fin-ebitda-addbacks"
              ],
              "query": [
                {
                  "description": "The loan's id. Required.",
                  "disabled": false,
                  "key": "loanId",
                  "value": ""
                }
              ],
              "raw": "{{baseUrl}}/api/borrowers/:borrowerId/extractions/fin-ebitda-addbacks?loanId=",
              "variable": [
                {
                  "description": "The borrower's id.",
                  "key": "borrowerId",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        },
        {
          "id": "2505e2d2-3378-5062-861d-d2542de97da9",
          "name": "Replace EBITDA add-back selections",
          "request": {
            "body": {
              "mode": "raw",
              "options": {
                "raw": {
                  "language": "json"
                }
              },
              "raw": "{\n  \"selections\": [\n    {\n      \"key\": \"fin_pl:Expenses > Officer compensation\",\n      \"entity_key\": \"\",\n      \"label\": \"Officer compensation\",\n      \"source\": \"stmt_expense\",\n      \"years\": [\n        \"2023\"\n      ]\n    },\n    {\n      \"key\": \"writein:6f1d2c3b-4a59-4e8f-9c0d-1e2f3a4b5c6d\",\n      \"entity_key\": \"\",\n      \"label\": \"One-time legal settlement\",\n      \"source\": \"write_in\",\n      \"years\": [\n        \"2023\"\n      ],\n      \"write_in_amounts\": {\n        \"2023\": 12500\n      }\n    }\n  ]\n}"
            },
            "description": "Replaces the add-back selection set for one company scope on the loan; other scopes are untouched. The scope comes from the `entityKey` query parameter (absent means the whole-loan scope); `entity_key` in the body is ignored and `added_by` is null in the response. Limits: at most 100 selections; `key` and `label` at most 512 characters; `source` is `stmt_expense`, `stmt_income` or `write_in`; `years` is 1 to 24 distinct four-digit labels; write-in amounts are non-zero and at most 9,999,999,999,999 per year. A concurrent write to the same scope answers 409.\n\nRequires the `extractions:write` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              },
              {
                "description": "Retries that reuse the key within 24h replay the original response.",
                "key": "Idempotency-Key",
                "value": "{{$guid}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "method": "PUT",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "borrowers",
                ":borrowerId",
                "extractions",
                "fin-ebitda-addbacks"
              ],
              "query": [
                {
                  "description": "The loan's id. Required.",
                  "disabled": false,
                  "key": "loanId",
                  "value": ""
                },
                {
                  "description": "The company scope (`business:<folded name>` or `person:<folded name>`, at most 256 characters). Omit for the whole-loan scope.",
                  "disabled": true,
                  "key": "entityKey",
                  "value": ""
                }
              ],
              "raw": "{{baseUrl}}/api/borrowers/:borrowerId/extractions/fin-ebitda-addbacks?loanId=",
              "variable": [
                {
                  "description": "The borrower's id.",
                  "key": "borrowerId",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        },
        {
          "id": "a53926a9-5893-5bf5-bcde-857cf75f85c4",
          "name": "List all extracted documents",
          "request": {
            "description": "Lists every extracted document on the borrower's file, newest first, as metadata only: category, period, fiscal year, line item count, and processing status. The extraction payloads themselves stay behind the retrieve endpoints. Nothing is filtered out here, so failed and duplicate extractions show up alongside successful ones, which makes this the list to reconcile against what you uploaded. Pass `loanId` to narrow it to one loan.\n\nRequires the `extractions:read` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              }
            ],
            "method": "GET",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "borrowers",
                ":borrowerId",
                "extractions"
              ],
              "query": [
                {
                  "description": "Narrow the list to one loan.",
                  "disabled": true,
                  "key": "loanId",
                  "value": ""
                }
              ],
              "raw": "{{baseUrl}}/api/borrowers/:borrowerId/extractions",
              "variable": [
                {
                  "description": "The borrower's id.",
                  "key": "borrowerId",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        },
        {
          "id": "480a8024-78fa-5670-896f-b014cab452fb",
          "name": "Retrieve a document's report data",
          "request": {
            "description": "Retrieves a single document's extraction payload, whatever its category. The typed retrieve endpoints return a 404 for any document outside their own type; this one accepts every category and returns a payload whose shape depends on the document type. A document with no stored extraction returns a 404.\n\nRequires the `extractions:read` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              }
            ],
            "method": "GET",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "borrowers",
                ":borrowerId",
                "extractions",
                ":docId",
                "report-data"
              ],
              "raw": "{{baseUrl}}/api/borrowers/:borrowerId/extractions/:docId/report-data",
              "variable": [
                {
                  "description": "The borrower's id.",
                  "key": "borrowerId",
                  "value": ""
                },
                {
                  "description": "The document's id.",
                  "key": "docId",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        },
        {
          "id": "1e6791f8-9975-5ebc-9bee-f8909c6944b5",
          "name": "Retrieve a report by category",
          "request": {
            "description": "Retrieves the borrower's newest extraction of a given category, addressed by category slug rather than document id. Newest means most recently processed, not the latest fiscal period. Valid slugs include `profit-and-loss`, `balance-sheet`, `cash-flow-statement`, `accounts-receivable-summary`, `accounts-receivable-detail`, `accounts-payable-summary`, `accounts-payable-detail`, `bank-statement-business`, `debt-schedule`, and tax form slugs like `1065`, `1120s`, `1120`, and `1040`. Pass `loanId` to narrow the search to one loan. An unknown slug returns a 400, and a borrower with nothing extracted in that category returns a 404.\n\nRequires the `extractions:read` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              }
            ],
            "method": "GET",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "borrowers",
                ":borrowerId",
                "extractions",
                "reports",
                ":reportType"
              ],
              "query": [
                {
                  "description": "Narrow the search to one loan.",
                  "disabled": true,
                  "key": "loanId",
                  "value": ""
                }
              ],
              "raw": "{{baseUrl}}/api/borrowers/:borrowerId/extractions/reports/:reportType",
              "variable": [
                {
                  "description": "The borrower's id.",
                  "key": "borrowerId",
                  "value": ""
                },
                {
                  "description": "The category slug to read.",
                  "key": "reportType",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        },
        {
          "id": "a9962467-ce92-5937-98bf-39bff8046b42",
          "name": "Export an extracted document",
          "request": {
            "description": "Exports one document's extraction as a downloadable file. `format` is required: `csv` for flat line item rows or `json` for the same body the retrieve endpoints return, both following the export value conventions under Getting Started. The response is a file. There is no xlsx here: create an export (`POST /api/extractions/exports`) for that, and for any document over the line-item cap (10,000 rows), which this endpoint answers with 413 `doc_too_large`.\n\nRequires the `extractions:export` scope. Rate limit: 120 requests per minute per key (the `export` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              }
            ],
            "method": "GET",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "borrowers",
                ":borrowerId",
                "extractions",
                ":docId",
                "export"
              ],
              "query": [
                {
                  "description": "The export format: `csv` or `json`.",
                  "disabled": false,
                  "key": "format",
                  "value": ""
                }
              ],
              "raw": "{{baseUrl}}/api/borrowers/:borrowerId/extractions/:docId/export?format=",
              "variable": [
                {
                  "description": "The borrower's id.",
                  "key": "borrowerId",
                  "value": ""
                },
                {
                  "description": "The document's id.",
                  "key": "docId",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        },
        {
          "id": "b41e8f19-8bdc-5f21-afbb-f83c0b80510f",
          "name": "Query extractions",
          "request": {
            "description": "Searches line items across all of the borrower's extracted documents and returns them as one flat list. Filter with `category`, `section`, `year`, `search` (case-insensitive item name match), `documentId`, and `loanId`. Every filter is optional, and the ones you send must all match. Returns at most 500 line items, with a `total` that sums the returned amounts.\n\nRequires the `extractions:read` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              }
            ],
            "method": "GET",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "borrowers",
                ":borrowerId",
                "extractions",
                "query"
              ],
              "query": [
                {
                  "description": "Filter to one standard category.",
                  "disabled": true,
                  "key": "category",
                  "value": ""
                },
                {
                  "description": "Filter to one statement section.",
                  "disabled": true,
                  "key": "section",
                  "value": ""
                },
                {
                  "description": "Filter to one fiscal year.",
                  "disabled": true,
                  "key": "year",
                  "value": ""
                },
                {
                  "description": "Case-insensitive match on the line item name.",
                  "disabled": true,
                  "key": "search",
                  "value": ""
                },
                {
                  "description": "Filter to one document.",
                  "disabled": true,
                  "key": "documentId",
                  "value": ""
                },
                {
                  "description": "Narrow the query to one loan.",
                  "disabled": true,
                  "key": "loanId",
                  "value": ""
                }
              ],
              "raw": "{{baseUrl}}/api/borrowers/:borrowerId/extractions/query",
              "variable": [
                {
                  "description": "The borrower's id.",
                  "key": "borrowerId",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        },
        {
          "id": "92618dd3-9c30-507f-b285-e9840ed4f156",
          "name": "Query extractions in bulk",
          "request": {
            "body": {
              "mode": "raw",
              "options": {
                "raw": {
                  "language": "json"
                }
              },
              "raw": "{\n  \"document_ids\": [\n    \"9f8b7c6a5d4e3f2a1b0c9d8e\"\n  ]\n}"
            },
            "description": "Runs the line item query across up to 200 documents at once, one call against your rate limit instead of a per-document fan-out. Send `document_ids`, 1 to 200 document ids (alphanumeric, at most 24 characters), plus the same optional `category`, `section`, `year`, `search`, and `loan_id` filters as the single query; `year` is a four-digit year from 2000 up to next year. Results come back grouped per document, in the order you sent the ids, capped at 500 line items per document. An id that doesn't resolve comes back with `not_found: true` instead of failing the request, and if the combined result would pass 100,000 line items, the response is truncated and carries an `X-Result-Truncated: true` header.\n\nRequires the `extractions:read` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              },
              {
                "description": "Retries that reuse the key within 24h replay the original response.",
                "key": "Idempotency-Key",
                "value": "{{$guid}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "borrowers",
                ":borrowerId",
                "extractions",
                "query-bulk"
              ],
              "raw": "{{baseUrl}}/api/borrowers/:borrowerId/extractions/query-bulk",
              "variable": [
                {
                  "description": "The borrower's id.",
                  "key": "borrowerId",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        },
        {
          "id": "249e7e09-b3c9-5061-8667-9466130aae59",
          "name": "Delete an extracted document",
          "request": {
            "description": "Permanently deletes an extracted document, its line items, and its stored source and extraction files. There is no undo, which is the point: this is the endpoint for honoring a data deletion request at document granularity. The processing job record and the originally uploaded file can be shared with other documents from the same upload, so those go when the loan is deleted rather than here.\n\nRequires the `documents:delete` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              },
              {
                "description": "Retries that reuse the key within 24h replay the original response.",
                "key": "Idempotency-Key",
                "value": "{{$guid}}"
              }
            ],
            "method": "DELETE",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "borrowers",
                ":borrowerId",
                "extractions",
                ":docId"
              ],
              "raw": "{{baseUrl}}/api/borrowers/:borrowerId/extractions/:docId",
              "variable": [
                {
                  "description": "The borrower's id.",
                  "key": "borrowerId",
                  "value": ""
                },
                {
                  "description": "The document's id.",
                  "key": "docId",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        },
        {
          "id": "74d25ab1-e89e-5294-b646-e408dbe28e55",
          "name": "Retrieve a tax return",
          "request": {
            "description": "Retrieves a single extracted tax return. Requesting a document of any other type returns a 404.\n\nRequires the `extractions:read` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              }
            ],
            "method": "GET",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "borrowers",
                ":borrowerId",
                "extractions",
                ":docId",
                "tax-return"
              ],
              "raw": "{{baseUrl}}/api/borrowers/:borrowerId/extractions/:docId/tax-return",
              "variable": [
                {
                  "description": "The borrower's id.",
                  "key": "borrowerId",
                  "value": ""
                },
                {
                  "description": "The document's id.",
                  "key": "docId",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        },
        {
          "id": "5bedbd29-5a3c-58af-8f5f-beffd828e6aa",
          "name": "List all tax returns",
          "request": {
            "description": "Lists every usable tax return on the borrower's file. Duplicates and failed extractions are left out, and you can pass `loanId` to narrow the list to one loan.\n\nRequires the `extractions:read` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              }
            ],
            "method": "GET",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "borrowers",
                ":borrowerId",
                "extractions",
                "tax-returns"
              ],
              "query": [
                {
                  "description": "Narrow the list to one loan.",
                  "disabled": true,
                  "key": "loanId",
                  "value": ""
                }
              ],
              "raw": "{{baseUrl}}/api/borrowers/:borrowerId/extractions/tax-returns",
              "variable": [
                {
                  "description": "The borrower's id.",
                  "key": "borrowerId",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        },
        {
          "id": "fc930fd8-0448-5849-9867-98fdc081971e",
          "name": "Retrieve a personal financial statement",
          "request": {
            "description": "Retrieves a single extracted personal financial statement. Requesting a document of any other type returns a 404.\n\nRequires the `extractions:read` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              }
            ],
            "method": "GET",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "borrowers",
                ":borrowerId",
                "extractions",
                ":docId",
                "pfs"
              ],
              "raw": "{{baseUrl}}/api/borrowers/:borrowerId/extractions/:docId/pfs",
              "variable": [
                {
                  "description": "The borrower's id.",
                  "key": "borrowerId",
                  "value": ""
                },
                {
                  "description": "The document's id.",
                  "key": "docId",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        },
        {
          "id": "0a475687-6711-50e9-98f5-4808bb310db9",
          "name": "List all personal financial statements",
          "request": {
            "description": "Lists every usable personal financial statement on the borrower's file. Duplicates and failed extractions are left out, and you can pass `loanId` to narrow the list to one loan.\n\nRequires the `extractions:read` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              }
            ],
            "method": "GET",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "borrowers",
                ":borrowerId",
                "extractions",
                "personal-financial-statements"
              ],
              "query": [
                {
                  "description": "Narrow the list to one loan.",
                  "disabled": true,
                  "key": "loanId",
                  "value": ""
                }
              ],
              "raw": "{{baseUrl}}/api/borrowers/:borrowerId/extractions/personal-financial-statements",
              "variable": [
                {
                  "description": "The borrower's id.",
                  "key": "borrowerId",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        },
        {
          "id": "91912ede-27e2-5736-9cee-0614f3981755",
          "name": "Retrieve a balance sheet",
          "request": {
            "description": "Retrieves a single extracted balance sheet. Requesting a document of any other type returns a 404.\n\nRequires the `extractions:read` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              }
            ],
            "method": "GET",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "borrowers",
                ":borrowerId",
                "extractions",
                ":docId",
                "balance-sheet-statement"
              ],
              "raw": "{{baseUrl}}/api/borrowers/:borrowerId/extractions/:docId/balance-sheet-statement",
              "variable": [
                {
                  "description": "The borrower's id.",
                  "key": "borrowerId",
                  "value": ""
                },
                {
                  "description": "The document's id.",
                  "key": "docId",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        },
        {
          "id": "d027ba32-46ed-556f-be65-0f8666149dd2",
          "name": "List all balance sheets",
          "request": {
            "description": "Lists every usable balance sheet on the borrower's file. Duplicates and failed extractions are left out, and you can pass `loanId` to narrow the list to one loan.\n\nRequires the `extractions:read` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              }
            ],
            "method": "GET",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "borrowers",
                ":borrowerId",
                "extractions",
                "balance-sheets"
              ],
              "query": [
                {
                  "description": "Narrow the list to one loan.",
                  "disabled": true,
                  "key": "loanId",
                  "value": ""
                }
              ],
              "raw": "{{baseUrl}}/api/borrowers/:borrowerId/extractions/balance-sheets",
              "variable": [
                {
                  "description": "The borrower's id.",
                  "key": "borrowerId",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        },
        {
          "id": "99ddf211-2b98-568f-adfd-bffffd6cc92a",
          "name": "Retrieve a profit loss statement",
          "request": {
            "description": "Retrieves a single extracted profit loss statement. Requesting a document of any other type returns a 404.\n\nRequires the `extractions:read` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              }
            ],
            "method": "GET",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "borrowers",
                ":borrowerId",
                "extractions",
                ":docId",
                "profit-loss-statement"
              ],
              "raw": "{{baseUrl}}/api/borrowers/:borrowerId/extractions/:docId/profit-loss-statement",
              "variable": [
                {
                  "description": "The borrower's id.",
                  "key": "borrowerId",
                  "value": ""
                },
                {
                  "description": "The document's id.",
                  "key": "docId",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        },
        {
          "id": "f7ab969a-1af0-5c3b-a062-c5a07820ab14",
          "name": "List all profit loss statements",
          "request": {
            "description": "Lists every usable profit loss statement on the borrower's file. Duplicates and failed extractions are left out, and you can pass `loanId` to narrow the list to one loan.\n\nRequires the `extractions:read` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              }
            ],
            "method": "GET",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "borrowers",
                ":borrowerId",
                "extractions",
                "profit-loss-statements"
              ],
              "query": [
                {
                  "description": "Narrow the list to one loan.",
                  "disabled": true,
                  "key": "loanId",
                  "value": ""
                }
              ],
              "raw": "{{baseUrl}}/api/borrowers/:borrowerId/extractions/profit-loss-statements",
              "variable": [
                {
                  "description": "The borrower's id.",
                  "key": "borrowerId",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        },
        {
          "id": "5f1450b6-872c-5195-89cd-b9841db77f35",
          "name": "Retrieve a cash flow statement",
          "request": {
            "description": "Retrieves a single extracted cash flow statement. Requesting a document of any other type returns a 404.\n\nRequires the `extractions:read` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              }
            ],
            "method": "GET",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "borrowers",
                ":borrowerId",
                "extractions",
                ":docId",
                "cash-flow-statement"
              ],
              "raw": "{{baseUrl}}/api/borrowers/:borrowerId/extractions/:docId/cash-flow-statement",
              "variable": [
                {
                  "description": "The borrower's id.",
                  "key": "borrowerId",
                  "value": ""
                },
                {
                  "description": "The document's id.",
                  "key": "docId",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        },
        {
          "id": "05c5994a-75d9-5479-8ee3-1c56e0de3276",
          "name": "List all cash flow statements",
          "request": {
            "description": "Lists every usable cash flow statement on the borrower's file. Duplicates and failed extractions are left out, and you can pass `loanId` to narrow the list to one loan.\n\nRequires the `extractions:read` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              }
            ],
            "method": "GET",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "borrowers",
                ":borrowerId",
                "extractions",
                "cash-flow-statements"
              ],
              "query": [
                {
                  "description": "Narrow the list to one loan.",
                  "disabled": true,
                  "key": "loanId",
                  "value": ""
                }
              ],
              "raw": "{{baseUrl}}/api/borrowers/:borrowerId/extractions/cash-flow-statements",
              "variable": [
                {
                  "description": "The borrower's id.",
                  "key": "borrowerId",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        },
        {
          "id": "df404339-cd52-546e-af6e-9983d711cfbd",
          "name": "Retrieve a debt schedule",
          "request": {
            "description": "Retrieves a single extracted debt schedule. Requesting a document of any other type returns a 404.\n\nRequires the `extractions:read` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              }
            ],
            "method": "GET",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "borrowers",
                ":borrowerId",
                "extractions",
                ":docId",
                "debt-schedule"
              ],
              "raw": "{{baseUrl}}/api/borrowers/:borrowerId/extractions/:docId/debt-schedule",
              "variable": [
                {
                  "description": "The borrower's id.",
                  "key": "borrowerId",
                  "value": ""
                },
                {
                  "description": "The document's id.",
                  "key": "docId",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        },
        {
          "id": "1bf2ab63-728b-523b-950d-7b2a6404e2aa",
          "name": "List all debt schedules",
          "request": {
            "description": "Lists every usable debt schedule on the borrower's file. Duplicates and failed extractions are left out, and you can pass `loanId` to narrow the list to one loan.\n\nRequires the `extractions:read` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              }
            ],
            "method": "GET",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "borrowers",
                ":borrowerId",
                "extractions",
                "debt-schedules"
              ],
              "query": [
                {
                  "description": "Narrow the list to one loan.",
                  "disabled": true,
                  "key": "loanId",
                  "value": ""
                }
              ],
              "raw": "{{baseUrl}}/api/borrowers/:borrowerId/extractions/debt-schedules",
              "variable": [
                {
                  "description": "The borrower's id.",
                  "key": "borrowerId",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        },
        {
          "id": "dbe506d7-86dd-5cd0-b403-a4dec93a1e02",
          "name": "Retrieve a bank statement",
          "request": {
            "description": "Retrieves a single extracted bank statement, with account numbers masked. Requesting a document of any other type returns a 404.\n\nRequires the `extractions:read` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              }
            ],
            "method": "GET",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "borrowers",
                ":borrowerId",
                "extractions",
                ":docId",
                "bank-statement"
              ],
              "raw": "{{baseUrl}}/api/borrowers/:borrowerId/extractions/:docId/bank-statement",
              "variable": [
                {
                  "description": "The borrower's id.",
                  "key": "borrowerId",
                  "value": ""
                },
                {
                  "description": "The document's id.",
                  "key": "docId",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        },
        {
          "id": "640cfbc0-8a61-5b47-b4fb-8b666720c62a",
          "name": "List all bank statements",
          "request": {
            "description": "Lists every usable bank statement on the borrower's file. Duplicates and failed extractions are left out, and you can pass `loanId` to narrow the list to one loan.\n\nRequires the `extractions:read` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              }
            ],
            "method": "GET",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "borrowers",
                ":borrowerId",
                "extractions",
                "bank-statements"
              ],
              "query": [
                {
                  "description": "Narrow the list to one loan.",
                  "disabled": true,
                  "key": "loanId",
                  "value": ""
                }
              ],
              "raw": "{{baseUrl}}/api/borrowers/:borrowerId/extractions/bank-statements",
              "variable": [
                {
                  "description": "The borrower's id.",
                  "key": "borrowerId",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        },
        {
          "id": "4a933f11-cee5-5ce0-8faf-98048df18dd0",
          "name": "Retrieve an AR aging",
          "request": {
            "description": "Retrieves a single extracted AR aging. Requesting a document of any other type returns a 404.\n\nRequires the `extractions:read` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              }
            ],
            "method": "GET",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "borrowers",
                ":borrowerId",
                "extractions",
                ":docId",
                "ar-aging"
              ],
              "raw": "{{baseUrl}}/api/borrowers/:borrowerId/extractions/:docId/ar-aging",
              "variable": [
                {
                  "description": "The borrower's id.",
                  "key": "borrowerId",
                  "value": ""
                },
                {
                  "description": "The document's id.",
                  "key": "docId",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        },
        {
          "id": "482b8e91-905a-5c20-ba50-a00ea42be488",
          "name": "List all AR agings",
          "request": {
            "description": "Lists every usable AR aging on the borrower's file. Pass `form=summary` or `form=detail` to keep one form, and `loanId` to narrow the list to one loan. Duplicates and failed extractions are left out.\n\nRequires the `extractions:read` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              }
            ],
            "method": "GET",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "borrowers",
                ":borrowerId",
                "extractions",
                "ar-agings"
              ],
              "query": [
                {
                  "description": "Narrow the list to one loan.",
                  "disabled": true,
                  "key": "loanId",
                  "value": ""
                },
                {
                  "description": "Keep one form: `summary` or `detail`.",
                  "disabled": true,
                  "key": "form",
                  "value": ""
                }
              ],
              "raw": "{{baseUrl}}/api/borrowers/:borrowerId/extractions/ar-agings",
              "variable": [
                {
                  "description": "The borrower's id.",
                  "key": "borrowerId",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        },
        {
          "id": "d18a24de-d983-5579-b470-8c04f4c8a15f",
          "name": "Retrieve an AP aging",
          "request": {
            "description": "Retrieves a single extracted AP aging. Requesting a document of any other type returns a 404.\n\nRequires the `extractions:read` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              }
            ],
            "method": "GET",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "borrowers",
                ":borrowerId",
                "extractions",
                ":docId",
                "ap-aging"
              ],
              "raw": "{{baseUrl}}/api/borrowers/:borrowerId/extractions/:docId/ap-aging",
              "variable": [
                {
                  "description": "The borrower's id.",
                  "key": "borrowerId",
                  "value": ""
                },
                {
                  "description": "The document's id.",
                  "key": "docId",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        },
        {
          "id": "d776473e-e5e3-5bea-8411-214473a1b0e5",
          "name": "List all AP agings",
          "request": {
            "description": "Lists every usable AP aging on the borrower's file. Pass `form=summary` or `form=detail` to keep one form, and `loanId` to narrow the list to one loan. Duplicates and failed extractions are left out.\n\nRequires the `extractions:read` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              }
            ],
            "method": "GET",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "borrowers",
                ":borrowerId",
                "extractions",
                "ap-agings"
              ],
              "query": [
                {
                  "description": "Narrow the list to one loan.",
                  "disabled": true,
                  "key": "loanId",
                  "value": ""
                },
                {
                  "description": "Keep one form: `summary` or `detail`.",
                  "disabled": true,
                  "key": "form",
                  "value": ""
                }
              ],
              "raw": "{{baseUrl}}/api/borrowers/:borrowerId/extractions/ap-agings",
              "variable": [
                {
                  "description": "The borrower's id.",
                  "key": "borrowerId",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        },
        {
          "id": "7a5a66bc-d3e1-5990-b582-e4170d8c6b12",
          "name": "List all bank statement accounts",
          "request": {
            "description": "Lists the bank accounts seen across the borrower's extracted bank statements, one entry per statement in period order, carrying only the account's identity and statement period. It's the cheap way to learn which accounts and months are on file without pulling full statement payloads. Pass `loanId` to narrow it to one loan. Duplicates and failed extractions are left out. When the borrower's balance sheet names its bank accounts, a `document_account_labels` roster also maps each account's last four digits to the name the balance sheet uses for it.\n\nRequires the `extractions:read` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              }
            ],
            "method": "GET",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "borrowers",
                ":borrowerId",
                "extractions",
                "bank-statement-accounts"
              ],
              "query": [
                {
                  "description": "Narrow the list to one loan.",
                  "disabled": true,
                  "key": "loanId",
                  "value": ""
                }
              ],
              "raw": "{{baseUrl}}/api/borrowers/:borrowerId/extractions/bank-statement-accounts",
              "variable": [
                {
                  "description": "The borrower's id.",
                  "key": "borrowerId",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        },
        {
          "id": "daa0c33c-5554-563e-918e-3f1999ea1ae8",
          "name": "List all borrower owners",
          "request": {
            "description": "Lists the borrower's owners and officers as evidenced by its extracted tax returns, one entry per principal, highest ownership percentage first. Each entry carries the name and any name variants seen, the ownership percentage, an evidence label, the source document id, and the tax form behind it. The response is a bare array rather than an envelope. Requires a plan that includes counterparty analysis; other plans get a 403.\n\nRequires the `extractions:read` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              }
            ],
            "method": "GET",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "borrowers",
                ":borrowerId",
                "extractions",
                "owners"
              ],
              "raw": "{{baseUrl}}/api/borrowers/:borrowerId/extractions/owners",
              "variable": [
                {
                  "description": "The borrower's id.",
                  "key": "borrowerId",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        }
      ],
      "name": "Extractions"
    },
    {
      "id": "5d3e85df-70a3-5276-ad1e-21eb37ea20e2",
      "item": [
        {
          "id": "6d9e49e2-3021-51a9-9805-6be72defc1b8",
          "name": "List jobs",
          "request": {
            "description": "Lists the uploads you can see, newest first.\n\nRequires the `jobs:read` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              }
            ],
            "method": "GET",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "jobs"
              ],
              "query": [
                {
                  "description": "Page size, 1 to 100. Defaults to 50.",
                  "disabled": true,
                  "key": "limit",
                  "value": ""
                },
                {
                  "description": "The `next_cursor` from the previous page.",
                  "disabled": true,
                  "key": "cursor",
                  "value": ""
                }
              ],
              "raw": "{{baseUrl}}/api/jobs"
            }
          },
          "response": []
        },
        {
          "id": "e47a99b5-b07e-5cd5-95cf-43ae506791aa",
          "name": "Get job status",
          "request": {
            "description": "Retrieves one upload's processing status by job id.\n\nRequires the `jobs:read` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              }
            ],
            "method": "GET",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "jobs",
                ":jobId",
                "status"
              ],
              "raw": "{{baseUrl}}/api/jobs/:jobId/status",
              "variable": [
                {
                  "description": "The upload's job id.",
                  "key": "jobId",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        },
        {
          "id": "717b64bd-5a1a-5b21-99f4-c97da1eaa618",
          "name": "Get job results",
          "request": {
            "description": "Retrieves the extraction results of one upload.\n\nRequires the `jobs:read` and `extractions:read` scopes. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              }
            ],
            "method": "GET",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "jobs",
                ":jobId",
                "results"
              ],
              "raw": "{{baseUrl}}/api/jobs/:jobId/results",
              "variable": [
                {
                  "description": "The upload's job id.",
                  "key": "jobId",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        },
        {
          "id": "31791fa8-b315-5a75-8d6e-34dacef3c009",
          "name": "Delete job",
          "request": {
            "description": "Permanently deletes an uploaded file and everything extracted from it. There is no undo, and an upload still processing is refused with a 409.\n\nRequires the `documents:delete` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              },
              {
                "description": "Retries that reuse the key within 24h replay the original response.",
                "key": "Idempotency-Key",
                "value": "{{$guid}}"
              }
            ],
            "method": "DELETE",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "jobs",
                ":jobId"
              ],
              "raw": "{{baseUrl}}/api/jobs/:jobId",
              "variable": [
                {
                  "description": "The upload's job id.",
                  "key": "jobId",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        }
      ],
      "name": "Jobs"
    },
    {
      "id": "0587b91f-4a32-58ba-a25e-726491b7a6c8",
      "item": [
        {
          "id": "77fa8894-779a-5911-8c7f-4cb031355cf5",
          "name": "List loan credit memos",
          "request": {
            "description": "Lists the credit memos saved on a loan as metadata only, each with its render state.\n\nRequires the `memos:read` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              }
            ],
            "method": "GET",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "loans",
                ":loanId",
                "memos"
              ],
              "raw": "{{baseUrl}}/api/loans/:loanId/memos",
              "variable": [
                {
                  "description": "The loan's id.",
                  "key": "loanId",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        },
        {
          "id": "71699688-ad5b-54ae-9c32-31eda4726509",
          "name": "Render credit memo",
          "request": {
            "description": "Requests a PDF render of one credit memo and answers 202 with the render to poll on the memo's renders endpoint. Every request renders, so an unchanged memo is still rendered fresh. A workspace that already has a render in flight returns a 429 naming that render in `render_id`.\n\nRequires the `memos:render` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              },
              {
                "description": "Retries that reuse the key within 24h replay the original response.",
                "key": "Idempotency-Key",
                "value": "{{$guid}}"
              }
            ],
            "method": "POST",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "loans",
                ":loanId",
                "memos",
                ":memoId",
                "renders"
              ],
              "raw": "{{baseUrl}}/api/loans/:loanId/memos/:memoId/renders",
              "variable": [
                {
                  "description": "The loan's id.",
                  "key": "loanId",
                  "value": ""
                },
                {
                  "description": "The credit memo's id.",
                  "key": "memoId",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        },
        {
          "id": "7dead982-ce46-53ee-ae9b-ad9c25631c1e",
          "name": "Get credit memo render",
          "request": {
            "description": "Retrieves one render of a saved credit memo so you can poll it until `status` is terminal. A render that does not belong to the memo returns a 404.\n\nRequires the `memos:read` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              }
            ],
            "method": "GET",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "loans",
                ":loanId",
                "memos",
                ":memoId",
                "renders",
                ":renderId"
              ],
              "raw": "{{baseUrl}}/api/loans/:loanId/memos/:memoId/renders/:renderId",
              "variable": [
                {
                  "description": "The loan's id.",
                  "key": "loanId",
                  "value": ""
                },
                {
                  "description": "The credit memo's id.",
                  "key": "memoId",
                  "value": ""
                },
                {
                  "description": "The render's id.",
                  "key": "renderId",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        },
        {
          "id": "bb5fb698-91e9-5714-a1c7-1e5aed478091",
          "name": "Cancel credit memo render",
          "request": {
            "description": "Cancels a render that is still queued. A render that is already running or finished returns a 409; one already cancelled is returned unchanged. Cancelling a queued render emits `memo_render.cancelled`.\n\nRequires the `memos:render` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              },
              {
                "description": "Retries that reuse the key within 24h replay the original response.",
                "key": "Idempotency-Key",
                "value": "{{$guid}}"
              }
            ],
            "method": "POST",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "loans",
                ":loanId",
                "memos",
                ":memoId",
                "renders",
                ":renderId",
                "cancel"
              ],
              "raw": "{{baseUrl}}/api/loans/:loanId/memos/:memoId/renders/:renderId/cancel",
              "variable": [
                {
                  "description": "The loan's id.",
                  "key": "loanId",
                  "value": ""
                },
                {
                  "description": "The credit memo's id.",
                  "key": "memoId",
                  "value": ""
                },
                {
                  "description": "The render's id.",
                  "key": "renderId",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        },
        {
          "id": "270dc94e-f114-5953-84f8-511866ce3626",
          "name": "Get credit memo PDF",
          "request": {
            "description": "Returns a short-lived link to the latest rendered PDF of one credit memo, and whether that PDF is stale. Returns a 404 until a render has finished.\n\nRequires the `memos:read` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              }
            ],
            "method": "GET",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "loans",
                ":loanId",
                "memos",
                ":memoId",
                "pdf"
              ],
              "raw": "{{baseUrl}}/api/loans/:loanId/memos/:memoId/pdf",
              "variable": [
                {
                  "description": "The loan's id.",
                  "key": "loanId",
                  "value": ""
                },
                {
                  "description": "The credit memo's id.",
                  "key": "memoId",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        }
      ],
      "name": "Loan memos"
    },
    {
      "id": "047802c8-ba1b-564c-88f9-2d6d4c1746e6",
      "item": [
        {
          "id": "d854d2dd-f95c-53d1-90b0-dcd7c4bacae9",
          "name": "List loans",
          "request": {
            "description": "Lists loans across every borrower you can see, newest first.\n\nRequires the `loans:read` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              }
            ],
            "method": "GET",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "loans"
              ],
              "query": [
                {
                  "description": "Page size, 1 to 100. Defaults to 50.",
                  "disabled": true,
                  "key": "limit",
                  "value": ""
                },
                {
                  "description": "The `next_cursor` from the previous page.",
                  "disabled": true,
                  "key": "cursor",
                  "value": ""
                },
                {
                  "description": "Expand each loan with `borrower`, `documents`, or both separated by a comma.",
                  "disabled": true,
                  "key": "include",
                  "value": ""
                }
              ],
              "raw": "{{baseUrl}}/api/loans"
            }
          },
          "response": []
        },
        {
          "id": "72ad55df-16b6-56af-8cbe-8d810a61eada",
          "name": "List borrower loans",
          "request": {
            "description": "Lists loans for a borrower, newest first.\n\nRequires the `loans:read` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              }
            ],
            "method": "GET",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "borrowers",
                ":borrowerId",
                "loans"
              ],
              "query": [
                {
                  "description": "Page size, 1 to 100. Defaults to 50.",
                  "disabled": true,
                  "key": "limit",
                  "value": ""
                },
                {
                  "description": "The `next_cursor` from the previous page.",
                  "disabled": true,
                  "key": "cursor",
                  "value": ""
                },
                {
                  "description": "Expand each loan with `borrower`, `documents`, or both separated by a comma.",
                  "disabled": true,
                  "key": "include",
                  "value": ""
                }
              ],
              "raw": "{{baseUrl}}/api/borrowers/:borrowerId/loans",
              "variable": [
                {
                  "description": "The borrower's id.",
                  "key": "borrowerId",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        },
        {
          "id": "2db8a0d3-4d80-50bc-a8ab-0d1ca1bb74c0",
          "name": "Create loan",
          "request": {
            "body": {
              "mode": "raw",
              "options": {
                "raw": {
                  "language": "json"
                }
              },
              "raw": "{\n  \"name\": \"Small Business Loan\",\n  \"loan_type\": \"CommercialTerm\",\n  \"loan_sub_type\": \"TermLoan\",\n  \"requested_amount\": 250000,\n  \"rate_type\": \"Fixed\",\n  \"interest_rate\": 5.75,\n  \"term_months\": 60\n}"
            },
            "description": "Creates a loan for a borrower. `loan_type` is one of `AlternativeFinancing`, `SBA`, `CommercialTerm`, `CommercialRealEstate`, `ResidentialMortgage`, `Auto`, `Personal`; `loan_sub_type` must belong to it; `rate_type` is `Fixed`, `SOFR` or `Prime`; `status` is `active`, `under_review`, `approved` or `closed`; `priority` is `none`, `low`, `medium`, `high` or `urgent`.\n\nRequires the `loans:write` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              },
              {
                "description": "Retries that reuse the key within 24h replay the original response.",
                "key": "Idempotency-Key",
                "value": "{{$guid}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "borrowers",
                ":borrowerId",
                "loans"
              ],
              "raw": "{{baseUrl}}/api/borrowers/:borrowerId/loans",
              "variable": [
                {
                  "description": "The borrower's id.",
                  "key": "borrowerId",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        },
        {
          "id": "9ee0f24a-e282-5665-b662-d4c71ded27e1",
          "name": "Get loan",
          "request": {
            "description": "Retrieves a single loan.\n\nRequires the `loans:read` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              }
            ],
            "method": "GET",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "loans",
                ":id"
              ],
              "raw": "{{baseUrl}}/api/loans/:id",
              "variable": [
                {
                  "description": "The loan's id.",
                  "key": "id",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        },
        {
          "id": "b75cf0fe-68ea-5be4-9195-14e8e2440b7c",
          "name": "Update loan",
          "request": {
            "body": {
              "mode": "raw",
              "options": {
                "raw": {
                  "language": "json"
                }
              },
              "raw": "{\n  \"status\": \"under_review\",\n  \"priority\": \"high\"\n}"
            },
            "description": "Updates a loan. Only the fields you send change. `loan_type` is one of `AlternativeFinancing`, `SBA`, `CommercialTerm`, `CommercialRealEstate`, `ResidentialMortgage`, `Auto`, `Personal`; `loan_sub_type` must belong to it; `rate_type` is `Fixed`, `SOFR` or `Prime`; `status` is `active`, `under_review`, `approved` or `closed`; `priority` is `none`, `low`, `medium`, `high` or `urgent`. Sending `loan_type` without `loan_sub_type` clears the subtype, and a status other than `active` or `under_review` clears `priority`.\n\nRequires the `loans:write` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              },
              {
                "description": "Retries that reuse the key within 24h replay the original response.",
                "key": "Idempotency-Key",
                "value": "{{$guid}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "method": "PATCH",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "loans",
                ":id"
              ],
              "raw": "{{baseUrl}}/api/loans/:id",
              "variable": [
                {
                  "description": "The loan's id.",
                  "key": "id",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        },
        {
          "id": "bf53b432-42c3-5e11-9aaf-369cd83ff6e6",
          "name": "Delete loan",
          "request": {
            "description": "Permanently deletes a loan along with its uploads and extractions. There is no undo.\n\nRequires the `loans:delete` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              },
              {
                "description": "Retries that reuse the key within 24h replay the original response.",
                "key": "Idempotency-Key",
                "value": "{{$guid}}"
              }
            ],
            "method": "DELETE",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "loans",
                ":id"
              ],
              "raw": "{{baseUrl}}/api/loans/:id",
              "variable": [
                {
                  "description": "The loan's id.",
                  "key": "id",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        }
      ],
      "name": "Loans"
    },
    {
      "id": "8cedc0f9-74ff-50f9-bcac-dd8160c49a3d",
      "item": [
        {
          "id": "e0407b10-7154-54a1-991d-82dff71f4fb0",
          "name": "Get current user",
          "request": {
            "description": "Retrieves the caller's identity and the organization the credential belongs to. For an API key, `email` is null and `display_name` is the key's name. Embed sessions cannot call it (403).\n\nRequires no scope: any key in the workspace can call it. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              }
            ],
            "method": "GET",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "me"
              ],
              "raw": "{{baseUrl}}/api/me"
            }
          },
          "response": []
        }
      ],
      "name": "Me"
    },
    {
      "id": "d6eab22d-ef74-5e9c-a8f6-b9844effabad",
      "item": [
        {
          "id": "ab0be9f2-875e-5f39-a7c9-f02a654dd16d",
          "name": "List organizations",
          "request": {
            "description": "Lists the organizations the caller belongs to. For an API key this is always exactly the key's own organization. Embed sessions cannot call it (403).\n\nRequires no scope: any key in the workspace can call it. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              }
            ],
            "method": "GET",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "organizations"
              ],
              "raw": "{{baseUrl}}/api/organizations"
            }
          },
          "response": []
        }
      ],
      "name": "Organizations"
    },
    {
      "id": "4477a78d-fa65-58ea-ac2a-b69bfa625a1e",
      "item": [
        {
          "id": "3d5122e9-94bc-5a45-9df6-d11e9eef37f8",
          "name": "Reset the sandbox",
          "request": {
            "description": "Restores the test-mode workspace to its seeded state. Requires a test-mode key; live keys get 403 `mode_mismatch`. Returns `reset`, `sandbox_tenant_present`, `reseeded` and `external_purge_errors` (0 is a clean reset).\n\nRequires the `sandbox:reset` scope. Rate limit: 10 requests per minute per key (the `strict` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              },
              {
                "description": "Retries that reuse the key within 24h replay the original response.",
                "key": "Idempotency-Key",
                "value": "{{$guid}}"
              }
            ],
            "method": "POST",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "sandbox",
                "reset"
              ],
              "raw": "{{baseUrl}}/api/sandbox/reset"
            }
          },
          "response": []
        }
      ],
      "name": "Sandbox"
    },
    {
      "id": "5f63a3b2-0ff5-5cb9-a87e-9bfefe38396a",
      "item": [
        {
          "id": "03b2b780-fa6a-5202-a6c2-e9fdd29c2515",
          "name": "Get latest attributes",
          "request": {
            "description": "Retrieves the loan's latest attribute snapshot of one status. `snapshot` is null when the loan has none of that status yet.\n\nRequires the `spreads:read` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              }
            ],
            "method": "GET",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "loans",
                ":loanId",
                "attributes"
              ],
              "query": [
                {
                  "description": "Which status to read: `final`, `machine` or `draft`; any other value is rejected with 400. Defaults to `final`.",
                  "disabled": true,
                  "key": "status",
                  "value": ""
                }
              ],
              "raw": "{{baseUrl}}/api/loans/:loanId/attributes",
              "variable": [
                {
                  "description": "The loan's id.",
                  "key": "loanId",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        },
        {
          "id": "ba33374f-a996-59b1-a719-29dcfe6c772f",
          "name": "List attribute versions",
          "request": {
            "description": "Lists the loan's snapshots newest first, ids and statuses only, never the figures. The 200 most recent are returned and the list is not paginated.\n\nRequires the `spreads:read` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              }
            ],
            "method": "GET",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "loans",
                ":loanId",
                "attributes",
                "versions"
              ],
              "query": [
                {
                  "description": "Filter to one status: `final`, `machine` or `draft`; any other value is rejected with 400.",
                  "disabled": true,
                  "key": "status",
                  "value": ""
                }
              ],
              "raw": "{{baseUrl}}/api/loans/:loanId/attributes/versions",
              "variable": [
                {
                  "description": "The loan's id.",
                  "key": "loanId",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        },
        {
          "id": "71c63206-9d62-53ad-8b34-902b6cc66437",
          "name": "Get attribute snapshot",
          "request": {
            "description": "Retrieves one attribute snapshot by id, with its payload. A snapshot under another loan returns a 404.\n\nRequires the `spreads:read` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              }
            ],
            "method": "GET",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "loans",
                ":loanId",
                "attributes",
                ":snapshotId"
              ],
              "raw": "{{baseUrl}}/api/loans/:loanId/attributes/:snapshotId",
              "variable": [
                {
                  "description": "The loan's id.",
                  "key": "loanId",
                  "value": ""
                },
                {
                  "description": "The snapshot's id.",
                  "key": "snapshotId",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        }
      ],
      "name": "Spread attributes"
    },
    {
      "id": "3e441c31-8479-5b19-bd5f-9d140dca401b",
      "item": [
        {
          "id": "ec15c484-6bae-5093-ad5d-596aad230a89",
          "name": "Create webhook",
          "request": {
            "body": {
              "mode": "raw",
              "options": {
                "raw": {
                  "language": "json"
                }
              },
              "raw": "{\n  \"url\": \"https://webhooks.example.com/receive\",\n  \"subscribed_events\": [\n    \"document.processed\",\n    \"job.completed\"\n  ]\n}"
            },
            "description": "Creates a webhook endpoint. The response carries the signing secret, which is never returned again. The URL must be an absolute `https` address that resolves to a public host; credentials in the URL and private or loopback addresses are rejected with 400.\n\nRequires the `webhooks:write` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "webhooks"
              ],
              "raw": "{{baseUrl}}/api/webhooks"
            }
          },
          "response": []
        },
        {
          "id": "ea3e2a8b-db98-5fee-b5b3-88d27ac9fa16",
          "name": "List webhooks",
          "request": {
            "description": "Lists webhook endpoints, newest first. Pass `include_revoked=true` to include revoked ones.\n\nRequires the `webhooks:read` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              }
            ],
            "method": "GET",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "webhooks"
              ],
              "query": [
                {
                  "description": "Page size, 1 to 100. Defaults to 50.",
                  "disabled": true,
                  "key": "limit",
                  "value": ""
                },
                {
                  "description": "The `next_cursor` from the previous page.",
                  "disabled": true,
                  "key": "cursor",
                  "value": ""
                },
                {
                  "description": "Set to true to include revoked endpoints.",
                  "disabled": true,
                  "key": "include_revoked",
                  "value": "false"
                }
              ],
              "raw": "{{baseUrl}}/api/webhooks"
            }
          },
          "response": []
        },
        {
          "id": "4d80bee2-e640-5861-832b-8cb99bb57755",
          "name": "Get webhook",
          "request": {
            "description": "Retrieves a single webhook endpoint.\n\nRequires the `webhooks:read` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              }
            ],
            "method": "GET",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "webhooks",
                ":id"
              ],
              "raw": "{{baseUrl}}/api/webhooks/:id",
              "variable": [
                {
                  "description": "The webhook endpoint's id.",
                  "key": "id",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        },
        {
          "id": "824132a6-2af1-592d-9001-7bde5e304de6",
          "name": "Update webhook",
          "request": {
            "body": {
              "mode": "raw",
              "options": {
                "raw": {
                  "language": "json"
                }
              },
              "raw": "{\n  \"description\": \"Production document events\",\n  \"subscribed_events\": [\n    \"document.processed\",\n    \"job.completed\"\n  ]\n}"
            },
            "description": "Updates a webhook endpoint. Only the fields you send change.\n\nRequires the `webhooks:write` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              },
              {
                "description": "Retries that reuse the key within 24h replay the original response.",
                "key": "Idempotency-Key",
                "value": "{{$guid}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "method": "PATCH",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "webhooks",
                ":id"
              ],
              "raw": "{{baseUrl}}/api/webhooks/:id",
              "variable": [
                {
                  "description": "The webhook endpoint's id.",
                  "key": "id",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        },
        {
          "id": "6afb6d06-8601-55c1-ba8c-9a413925f3ef",
          "name": "Delete webhook",
          "request": {
            "description": "Revokes a webhook endpoint. This is a soft delete: the endpoint stays readable with `status: revoked` (and in lists with `include_revoked=true`) and pending deliveries to it are dropped. Deleting it again answers 409.\n\nRequires the `webhooks:write` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              },
              {
                "description": "Retries that reuse the key within 24h replay the original response.",
                "key": "Idempotency-Key",
                "value": "{{$guid}}"
              }
            ],
            "method": "DELETE",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "webhooks",
                ":id"
              ],
              "raw": "{{baseUrl}}/api/webhooks/:id",
              "variable": [
                {
                  "description": "The webhook endpoint's id.",
                  "key": "id",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        },
        {
          "id": "c767a89d-bcc8-5bc2-98f9-d8f713146755",
          "name": "Rotate webhook secret",
          "request": {
            "description": "Mints a new signing secret and returns it once. The previous secret keeps verifying for 24 hours, so accept either one during that window. A revoked endpoint answers 409.\n\nRequires the `webhooks:write` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              }
            ],
            "method": "POST",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "webhooks",
                ":id",
                "rotate"
              ],
              "raw": "{{baseUrl}}/api/webhooks/:id/rotate",
              "variable": [
                {
                  "description": "The webhook endpoint's id.",
                  "key": "id",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        },
        {
          "id": "4808a462-9a72-59c6-9a5b-3ce6abe4684c",
          "name": "List deliveries",
          "request": {
            "description": "Lists delivery attempts for one endpoint, newest first.\n\nRequires the `webhooks:read` scope. Rate limit: 200 requests per minute per key (the `api` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              }
            ],
            "method": "GET",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "webhooks",
                ":id",
                "deliveries"
              ],
              "query": [
                {
                  "description": "Page size, 1 to 100. Defaults to 50.",
                  "disabled": true,
                  "key": "limit",
                  "value": ""
                },
                {
                  "description": "The `next_cursor` from the previous page.",
                  "disabled": true,
                  "key": "cursor",
                  "value": ""
                },
                {
                  "description": "Filter to one delivery status: `pending`, `delivered` or `dead`. Unknown values return an empty page.",
                  "disabled": true,
                  "key": "status",
                  "value": ""
                },
                {
                  "description": "Filter to one event type (the Webhooks page lists the fourteen names). Unknown values return an empty page.",
                  "disabled": true,
                  "key": "event_type",
                  "value": ""
                },
                {
                  "description": "Only deliveries whose event was about this loan (the payload's\n`data.loan_id`).",
                  "disabled": true,
                  "key": "loan_id",
                  "value": ""
                }
              ],
              "raw": "{{baseUrl}}/api/webhooks/:id/deliveries",
              "variable": [
                {
                  "description": "The webhook endpoint's id.",
                  "key": "id",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        },
        {
          "id": "c911b601-39c4-5569-8b25-cd54b7419aae",
          "name": "Replay delivery",
          "request": {
            "description": "Queues one past delivery to be sent again.\n\nRequires the `webhooks:write` scope. Rate limit: 10 requests per minute per key (the `strict` lane).",
            "header": [
              {
                "description": "Optional date-stamped API version pin. Omit to get the latest.",
                "key": "SpreadSpace-Version",
                "value": "{{apiVersion}}"
              },
              {
                "description": "Retries that reuse the key within 24h replay the original response.",
                "key": "Idempotency-Key",
                "value": "{{$guid}}"
              }
            ],
            "method": "POST",
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "webhooks",
                ":id",
                "deliveries",
                ":deliveryId",
                "replay"
              ],
              "raw": "{{baseUrl}}/api/webhooks/:id/deliveries/:deliveryId/replay",
              "variable": [
                {
                  "description": "The webhook endpoint's id.",
                  "key": "id",
                  "value": ""
                },
                {
                  "description": "The delivery's id.",
                  "key": "deliveryId",
                  "value": ""
                }
              ]
            }
          },
          "response": []
        }
      ],
      "name": "Webhooks"
    }
  ],
  "variable": [
    {
      "key": "baseUrl",
      "type": "string",
      "value": "https://api.spreadspace.app"
    },
    {
      "key": "apiKey",
      "type": "string",
      "value": ""
    },
    {
      "key": "apiVersion",
      "type": "string",
      "value": "2026-07-19"
    }
  ]
}
