Smart Capital Center API reference

uploadDocument

POST
/api/v2/public/valuation/upload-to-property/{propertyId}

Uploads a document, such as a rent roll or operating statement, and attaches it to a property. Use the returned document id in createOrder.

Auth: X-API-KEY: <your key> header

Use when: The user has documents for the property (rent roll, operating statement, appraisal) and wants them used in the valuation or loan quote.

Don't use when: The property does not exist yet (call createProperty first), or the user has not given you a file.

Parameters

Name In Type Required Description
propertyId path integer yes Numeric SCC property id (from createProperty). Example: 123456.
propertyBuildingId query integer no Property building identifier (optional).

Request body

Content type: multipart/form-data

Field Type Required Description
file binary yes The document. Allowed types: pdf, jpg, jpeg, png, gif, xls, xlsx, xlsm, xlsb, csv, docx, doc. Maximum 100 MB.
name string yes Document name. Letters, digits, spaces and . , _ ( ) - [ ] + & # ', up to 255 characters. Example: Rent Roll (Wellington Center).
type string no Document type; drives the extraction. Use OTHER when unsure. See document types. Example: RENT_ROLL.
date integer no Document date as Unix time in milliseconds. Example: 1707215736000.
pages string no Page range to process (PDF). Example: 1-5.
sheetNumber integer no Sheet number to process (Excel), 1-based. Example: 1.
parseType string no Parsing engine for the first pass over a rent roll or operating statement: PDFBOX (PDF text layer), OCR or OCR2 (OCR engines), GENERATIVE_AI (LLM extraction). Omit to use the default.

Notes for agents

  • Only upload files the user gave you, and name them clearly.
  • The file is stored right away; data extraction continues in the background.
  • Keep the returned data.id and pass it in createOrder documentIds for the same property.
  • Set type when you know it, so the right extraction runs. Use OTHER when unsure.
  • Every field except file may also be sent as a query parameter.
  • A 404 means the property does not exist or belongs to another user.

Example request

curl -X POST https://app.smartcapitalcenter.com/api/v2/public/valuation/upload-to-property/123456 \
  -H "X-API-KEY: $SCC_API_KEY" \
  -F "file=@rent-roll.pdf" \
  -F "name=Rent Roll (123 Main St)" \
  -F "type=RENT_ROLL"

Response 202

Document stored and attached to the property; data is the document.

Standard envelope with data containing:

Field Type Description
id integer Document id; pass it in createOrder documentIds.
name string Document name.
type string Document type.
fileName string Uploaded file name.
statusLabel string Human-readable document status.

Errors

Code Meaning
400 Invalid input (missing fields, wrong formats, unsupported file type)
401 Missing or invalid API key
404 Property not found or not owned by the caller
500 Internal server error during upload

Next: createOrder with the returned data.id in documentIds.

# uploadDocument `POST /api/v2/public/valuation/upload-to-property/{propertyId}` Uploads a document, such as a rent roll or operating statement, and attaches it to a property. Use the returned document id in `createOrder`. **Auth:** `X-API-KEY: <your key>` header **Use when:** The user has documents for the property (rent roll, operating statement, appraisal) and wants them used in the valuation or loan quote. **Don't use when:** The property does not exist yet (call `createProperty` first), or the user has not given you a file. ## Parameters | Name | In | Type | Required | Description | |---|---|---|---|---| | `propertyId` | path | integer | yes | Numeric SCC property id (from `createProperty`). Example: `123456`. | | `propertyBuildingId` | query | integer | no | Property building identifier (optional). | ## Request body Content type: `multipart/form-data` | Field | Type | Required | Description | |---|---|---|---| | `file` | binary | yes | The document. Allowed types: pdf, jpg, jpeg, png, gif, xls, xlsx, xlsm, xlsb, csv, docx, doc. Maximum 100 MB. | | `name` | string | yes | Document name. Letters, digits, spaces and `. , _ ( ) - [ ] + & # '`, up to 255 characters. Example: `Rent Roll (Wellington Center)`. | | `type` | string | no | Document type; drives the extraction. Use `OTHER` when unsure. See document types. Example: `RENT_ROLL`. | | `date` | integer | no | Document date as Unix time in milliseconds. Example: `1707215736000`. | | `pages` | string | no | Page range to process (PDF). Example: `1-5`. | | `sheetNumber` | integer | no | Sheet number to process (Excel), 1-based. Example: `1`. | | `parseType` | string | no | Parsing engine for the first pass over a rent roll or operating statement: `PDFBOX` (PDF text layer), `OCR` or `OCR2` (OCR engines), `GENERATIVE_AI` (LLM extraction). Omit to use the default. | ## Notes for agents - Only upload files the user gave you, and name them clearly. - The file is stored right away; data extraction continues in the background. - Keep the returned `data.id` and pass it in `createOrder` `documentIds` for the same property. - Set `type` when you know it, so the right extraction runs. Use `OTHER` when unsure. - Every field except `file` may also be sent as a query parameter. - A `404` means the property does not exist or belongs to another user. ## Example request ```bash curl -X POST https://app.smartcapitalcenter.com/api/v2/public/valuation/upload-to-property/123456 \ -H "X-API-KEY: $SCC_API_KEY" \ -F "file=@rent-roll.pdf" \ -F "name=Rent Roll (123 Main St)" \ -F "type=RENT_ROLL" ``` ## Response `202` Document stored and attached to the property; `data` is the document. Standard envelope with `data` containing: | Field | Type | Description | |---|---|---| | `id` | integer | Document id; pass it in `createOrder` `documentIds`. | | `name` | string | Document name. | | `type` | string | Document type. | | `fileName` | string | Uploaded file name. | | `statusLabel` | string | Human-readable document status. | ## Errors | Code | Meaning | |---|---| | 400 | Invalid input (missing fields, wrong formats, unsupported file type) | | 401 | Missing or invalid API key | | 404 | Property not found or not owned by the caller | | 500 | Internal server error during upload | **Next:** `createOrder` with the returned `data.id` in `documentIds`.