Integration Summary
When to use- List and view term sheets for deals.
- Use this page as the source of truth for reads, filters, pagination, and object shape.
Required scopes- Access is inherited from the connected user or JWT session.
- Inspect GET /me or the validate-api-key response to confirm the scopes available to the current token.
Headers- Authorization: Bearer <token>
- X-Origin-App: <client-name>
- Content-Type: application/json when the endpoint accepts a body
Request schemaUse the path and query parameter tables below or /platform/openapi.json for the machine-readable schema surface.
Response schemaResponses use the standard request_id/timestamp/data envelope. This page documents these object schemas: Term Sheet Object.
Enums & values- Enum-like values and filter operators are documented inline on the page where available.
- When a value set is account- or tier-dependent, validate against live responses before hard-coding assumptions.
Rate limitsSee /rate-limits. Page intentionally through list endpoints and apply backoff on 429 responses.
Examplescurl, TypeScript, Python
Starter example: GET /api/external/v2/deals/{deal_id}/term-sheets
bash
curl -X GET "https://api.levcapital.com/api/external/v2/deals/{deal_id}/term-sheets" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "X-Origin-App: my-integration"Term Sheets
Last updated: March 2026
Term sheets contain the lending terms offered by lenders on a deal — rate, spread, LTV, recourse, and more. These are read-only endpoints for accessing term sheet data.
Connect your API key to explore
Stored in your browser session only. Never sent to our docs server.
GET
/api/external/v2/deals/{deal_id}/term-sheetsdeal_id*limithttps://api.levcapital.com/api/external/v2/deals/{deal_id}/term-sheets?limit=10Overview
Term sheets are associated with deals and represent offers from lenders. The API currently provides read-only access.
| Endpoint | Description |
|---|---|
GET /deals/{deal_id}/term-sheets | List term sheets for a deal |
GET /deals/{deal_id}/term-sheets/{id} | Get a single term sheet |
List Term Sheets
GET
/api/external/v2/deals/{deal_id}/term-sheetsList term sheets for a deal
Path parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
deal_id | integer | Required | The deal ID |
Query parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
limit | integer | Optional | Results per page (1–200, default 50) |
cursor | string | Optional | Cursor for next page |
Response (200):
json
{
"request_id": "e7f8a9b0-c1d2-3456-0123-567890123456",
"timestamp": "2026-03-20T15:30:45Z",
"data": [
{
"id": 15,
"title": "JPMorgan Chase — Stabilized Multifamily",
"quote_type": "soft_quote",
"rate_type": "fixed",
"total_rate": 5.85,
"base_rate": "CMT",
"initial_funding": 5000000,
"io_period": 24,
"max_ltv": 0.70,
"max_ltc": null,
"origination_fee": 0.01,
"term": 120,
"recourse": "non_recourse",
"org_id": 3200,
"placement_id": 310,
"winning": false,
"created_at": "2026-02-10T14:00:00Z",
"updated_at": "2026-03-01T09:15:00Z"
}
],
"pagination": {
"total": 3,
"limit": 50,
"has_more": false,
"next_cursor": null
}
}Error responses
401unauthorized
When: Missing or invalid Authorization header
{
"request_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"error": {
"status": 401,
"type": "unauthorized",
"message": "Authentication required",
"details": {}
}
}404not_found
When: The deal_id doesn't exist or isn't accessible to the authenticated user
{
"request_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"error": {
"status": 404,
"type": "not_found",
"message": "Deal not found",
"details": {}
}
}Get Term Sheet
GET
/api/external/v2/deals/{deal_id}/term-sheets/{term_sheet_id}Get a single term sheet
Path parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
deal_id | integer | Required | The deal ID |
term_sheet_id | integer | Required | The term sheet ID |
Response (200):
json
{
"request_id": "f8a9b0c1-d2e3-4567-1234-678901234567",
"timestamp": "2026-03-20T15:30:45Z",
"data": {
"id": 15,
"title": "JPMorgan Chase — Stabilized Multifamily",
"quote_type": "soft_quote",
"rate_type": "fixed",
"total_rate": 5.85,
"base_rate": "CMT",
"initial_funding": 5000000,
"io_period": 24,
"max_ltv": 0.70,
"max_ltc": null,
"origination_fee": 0.01,
"term": 120,
"recourse": "non_recourse",
"org_id": 3200,
"placement_id": 310,
"winning": false,
"created_at": "2026-02-10T14:00:00Z",
"updated_at": "2026-03-01T09:15:00Z",
"capital_source_type": "balance_sheet",
"base_rate_value": 4.35,
"effective_spread": 1.50,
"recourse_type": "non_recourse",
"payment_method": "actual_360",
"prepayment_penalty": "yield_maintenance",
"prepayment_penalty_details": "Yield maintenance for first 7 years, 1% thereafter",
"amortization": 360,
"extension_one": 12,
"extension_two": null,
"extension_three": null,
"floor": 5.00,
"floor_type": "total_rate",
"good_faith_deposit": 50000.0,
"min_dscr": 1.25,
"min_debt_yield": 0.08,
"ir_details": null,
"notes": "Subject to property inspection and environmental review"
}
}Error responses
401unauthorized
When: Missing or invalid Authorization header
{
"request_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"error": {
"status": 401,
"type": "unauthorized",
"message": "Authentication required",
"details": {}
}
}404not_found
When: The term_sheet_id or deal_id doesn't exist or isn't accessible to the authenticated user
{
"request_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"error": {
"status": 404,
"type": "not_found",
"message": "Term sheet not found",
"details": {}
}
}Term Sheet Object
The list endpoint returns a summary response, while the detail endpoint returns additional fields.
Summary Fields (List + Detail)
| Field | Type | Description |
|---|---|---|
id | integer | Term sheet identifier |
title | string|null | Term sheet title |
quote_type | string|null | Quote type (indication, soft_quote, hard_quote) |
initial_funding | integer|null | Initial funding amount |
total_rate | number|null | All-in total rate |
base_rate | string|null | Base rate name (e.g., SOFR, CMT) |
rate_type | string|null | Rate type (fixed, floating) |
term | integer|null | Loan term in months |
io_period | integer|null | Interest-only period in months |
recourse | string|null | Recourse type |
max_ltv | number|null | Maximum Loan-to-Value ratio |
max_ltc | number|null | Maximum Loan-to-Cost ratio |
origination_fee | number|null | Origination fee |
org_id | integer|null | Lender organization ID |
placement_id | integer|null | Associated placement ID |
winning | boolean|null | Whether this is the winning term sheet |
created_at | string|null | Creation timestamp |
updated_at | string|null | Last update timestamp |
Additional Detail Fields (Detail Only)
These fields are only returned by the
GET /deals/{deal_id}/term-sheets/{id} endpoint:| Field | Type | Description |
|---|---|---|
capital_source_type | string|null | Capital source type |
base_rate_value | number|null | Base rate numeric value |
effective_spread | number|null | Effective spread over index |
recourse_type | string|null | Recourse type detail |
payment_method | string|null | Payment method |
prepayment_penalty | string|null | Prepayment penalty type |
prepayment_penalty_details | string|null | Prepayment penalty details |
amortization | integer|null | Amortization period in months |
extension_one | integer|null | First extension option (months) |
extension_two | integer|null | Second extension option (months) |
extension_three | integer|null | Third extension option (months) |
floor | number|null | Rate floor |
floor_type | string|null | Floor type |
good_faith_deposit | number|null | Good faith deposit amount |
min_dscr | number|null | Minimum DSCR requirement |
min_debt_yield | number|null | Minimum debt yield requirement |
ir_details | string|null | Interest reserve details |
notes | string|null | Additional notes |