Smart Capital Center API reference

createOrder

POST
/api/v2/public/valuation/order

Requests a full valuation (FULL) or a loan quote (LOAN) for a property the user owns.

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

Use when: The property exists and the user has asked for a valuation or a loan quote.

Don't use when: Placing a FULL order without explicit, specific approval from the user.

Request body

Content type: application/json

Field Type Required Description
propertyId integer yes Numeric id of the property (from the create-property step). Example: 123456.
orderType string yes Order type: FULL (detailed valuation) or LOAN (loan quote). Example: FULL.
documentIds array of integer no Optional ids of documents uploaded to this property with uploadDocument (its data.id).
cardToken string no Stripe card token (tok_.../pm_...) created client-side. Required for a FULL valuation ($350 charge); ignored for LOAN quotes. Example: tok_visa.

Notes for agents

  • FULL costs $350 and charges a card. Before calling, tell the user the property, the order type and the $350 charge, and wait for a clear yes.
  • LOAN quotes are free. cardToken is ignored for them.
  • cardToken must be a Stripe token (tok_... or pm_...) created in the user's browser or app. Never invent one, and never ask the user to paste raw card numbers to you.
  • documentIds come from uploadDocument on this same property.
  • The response data.id is the request id. Check progress with getOrder, at most once a minute, until status is COMPLETED or REJECTED.
  • A 402 means the card charge failed. Tell the user; do not retry with the same card token unless they ask.

Example request

curl -X POST https://app.smartcapitalcenter.com/api/v2/public/valuation/order \
  -H "X-API-KEY: $SCC_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"propertyId": 123456, "orderType": "LOAN", "documentIds": [9876]}'

Response 200

OK.

Standard envelope with data containing:

Field Type Description
id integer Request id; use it with getOrder.
propertyId integer Numeric property id the request belongs to.
loanDetailsId integer —
propertyType string —
propertyName string —
address string —
countyId string —
parcelId string —
documents array —
documents[].id integer —
documents[].type string Enum, see document types.
documents[].name string —
documents[].fileName string —
documents[].documentStatus string —
documents[].documentStatusLabel string —
documents[].rrId integer —
documents[].osId integer —
documents[].documentDate string —
requesterId integer —
requesterEmail string —
servicerId integer —
servicerEmail string —
type string Request type: VALUATION (detailed valuation, orderType FULL) or LOAN (loan quote).
typeLabel string Human-readable request type.
status string Processing status: REQUEST_STARTED, REQUEST_SUBMITTED, REQUEST_APPROVED, WAITING_STANDARDIZATION, STANDARDIZED_NOT_REVIEWED, IN_PROGRESS_BY_SC, IN_PROGRESS_BY_USER, REQUEST_INFO, COMPLETED or REJECTED. COMPLETED and REJECTED are final.
statusLabel string Human-readable status.
createdAtTimestamp string —
updatedAtTimestamp string —
completedAtTimestamp string Set once the request is COMPLETED.
message string Message from the analyst, if any.
emailNotificationSentAt integer —

Errors

Code Meaning
400 Validation error, or cardToken missing for a FULL valuation
402 Card charge failed
404 Property not found or not owned by the caller

Next: getOrder with the returned data.id.

# createOrder `POST /api/v2/public/valuation/order` Requests a full valuation (`FULL`) or a loan quote (`LOAN`) for a property the user owns. **Auth:** `X-API-KEY: <your key>` header **Use when:** The property exists and the user has asked for a valuation or a loan quote. **Don't use when:** Placing a `FULL` order without explicit, specific approval from the user. ## Request body Content type: `application/json` | Field | Type | Required | Description | |---|---|---|---| | `propertyId` | integer | yes | Numeric id of the property (from the create-property step). Example: `123456`. | | `orderType` | string | yes | Order type: FULL (detailed valuation) or LOAN (loan quote). Example: `FULL`. | | `documentIds` | array of integer | no | Optional ids of documents uploaded to this property with `uploadDocument` (its `data.id`). | | `cardToken` | string | no | Stripe card token (tok_.../pm_...) created client-side. Required for a FULL valuation ($350 charge); ignored for LOAN quotes. Example: `tok_visa`. | ## Notes for agents - **`FULL` costs $350 and charges a card.** Before calling, tell the user the property, the order type and the $350 charge, and wait for a clear yes. - `LOAN` quotes are free. `cardToken` is ignored for them. - `cardToken` must be a Stripe token (`tok_...` or `pm_...`) created in the user's browser or app. Never invent one, and never ask the user to paste raw card numbers to you. - `documentIds` come from `uploadDocument` on this same property. - The response `data.id` is the request id. Check progress with `getOrder`, at most once a minute, until `status` is `COMPLETED` or `REJECTED`. - A `402` means the card charge failed. Tell the user; do not retry with the same card token unless they ask. ## Example request ```bash curl -X POST https://app.smartcapitalcenter.com/api/v2/public/valuation/order \ -H "X-API-KEY: $SCC_API_KEY" \ -H "Content-Type: application/json" \ -d '{"propertyId": 123456, "orderType": "LOAN", "documentIds": [9876]}' ``` ## Response `200` OK. Standard envelope with `data` containing: | Field | Type | Description | |---|---|---| | `id` | integer | Request id; use it with `getOrder`. | | `propertyId` | integer | Numeric property id the request belongs to. | | `loanDetailsId` | integer | — | | `propertyType` | string | — | | `propertyName` | string | — | | `address` | string | — | | `countyId` | string | — | | `parcelId` | string | — | | `documents` | array | — | | `documents[].id` | integer | — | | `documents[].type` | string | Enum, see document types. | | `documents[].name` | string | — | | `documents[].fileName` | string | — | | `documents[].documentStatus` | string | — | | `documents[].documentStatusLabel` | string | — | | `documents[].rrId` | integer | — | | `documents[].osId` | integer | — | | `documents[].documentDate` | string | — | | `requesterId` | integer | — | | `requesterEmail` | string | — | | `servicerId` | integer | — | | `servicerEmail` | string | — | | `type` | string | Request type: `VALUATION` (detailed valuation, orderType FULL) or `LOAN` (loan quote). | | `typeLabel` | string | Human-readable request type. | | `status` | string | Processing status: `REQUEST_STARTED`, `REQUEST_SUBMITTED`, `REQUEST_APPROVED`, `WAITING_STANDARDIZATION`, `STANDARDIZED_NOT_REVIEWED`, `IN_PROGRESS_BY_SC`, `IN_PROGRESS_BY_USER`, `REQUEST_INFO`, `COMPLETED` or `REJECTED`. `COMPLETED` and `REJECTED` are final. | | `statusLabel` | string | Human-readable status. | | `createdAtTimestamp` | string | — | | `updatedAtTimestamp` | string | — | | `completedAtTimestamp` | string | Set once the request is `COMPLETED`. | | `message` | string | Message from the analyst, if any. | | `emailNotificationSentAt` | integer | — | ## Errors | Code | Meaning | |---|---| | 400 | Validation error, or `cardToken` missing for a `FULL` valuation | | 402 | Card charge failed | | 404 | Property not found or not owned by the caller | **Next:** `getOrder` with the returned `data.id`.