Portfolio API¶
Portfolio management, investors, loan assignments, snapshots, and loan tape generation.
Base permission: IsViewerOrAbove (read), IsAdminOrAbove (write)
Portfolios¶
| Method | Path | Description | Permission |
|---|---|---|---|
GET |
/portfolios |
List portfolios | IsViewerOrAbove |
GET |
/portfolios/{id} |
Get portfolio | IsViewerOrAbove |
POST |
/portfolios |
Create portfolio | IsAdminOrAbove |
PUT |
/portfolios/{id} |
Update portfolio | IsAdminOrAbove |
DELETE |
/portfolios/{id} |
Archive portfolio | IsAdminOrAbove |
POST |
/portfolios/{id}/unarchive |
Unarchive portfolio | IsAdminOrAbove |
POST |
/portfolios/{id}/auto-assign |
Auto-assign loans by criteria | IsAdminOrAbove |
POST |
/portfolios/{id}/sell |
Mark portfolio as sold | IsAdminOrAbove |
POST |
/portfolios/{id}/transfer-loans |
Transfer loans between portfolios | IsAdminOrAbove |
GET |
/portfolios/{id}/vintages |
Get vintage analysis | IsViewerOrAbove |
Create Portfolio¶
{
"name": "Q1 2026 Consumer Loans",
"portfolio_type": "static",
"description": "Consumer installment loans originated in Q1 2026",
"criteria": {
"program_id": "661f9511-f3ac-52e5-b827-557766551111",
"origination_date_start": "2026-01-01",
"origination_date_end": "2026-03-31"
}
}
Portfolio Types¶
| Type | Description |
|---|---|
static |
Loans are manually assigned |
dynamic |
Loans are auto-assigned based on criteria |
Auto-Assign Loans¶
Assign loans matching portfolio criteria that are not already assigned.
Sell Portfolio¶
Assign Loan to Portfolio¶
Portfolio Snapshots¶
Daily point-in-time snapshots of portfolio metrics.
| Method | Path | Description | Permission |
|---|---|---|---|
GET |
/portfolios/{id}/snapshots |
List snapshots | IsViewerOrAbove |
POST |
/portfolios/{id}/snapshots |
Create snapshot | IsAdminOrAbove |
Snapshot Metrics¶
{
"id": "...",
"portfolio_id": "...",
"snapshot_date": "2026-01-31",
"total_loans": 250,
"total_principal": "2500000.00",
"total_outstanding": "2150000.00",
"weighted_average_rate": "0.078",
"weighted_average_term": 42,
"delinquency_rate": "0.032",
"default_rate": "0.008",
"by_bucket": {
"current": 235,
"dpd_1_29": 8,
"dpd_30_59": 4,
"dpd_60_89": 2,
"dpd_90_119": 1
}
}
Investors¶
| Method | Path | Description | Permission |
|---|---|---|---|
GET |
/investors |
List investors | IsViewerOrAbove |
GET |
/investors/{id} |
Get investor | IsViewerOrAbove |
POST |
/investors |
Create investor | IsAdminOrAbove |
PUT |
/investors/{id} |
Update investor | IsAdminOrAbove |
Nested Resources¶
| Method | Path | Description |
|---|---|---|
GET |
/investors/{id}/settlement-instruments |
List settlement instruments |
POST |
/investors/{id}/settlement-instruments |
Add settlement instrument |
GET |
/investors/{id}/loan-assignments |
List loan assignments |
POST |
/investors/{id}/loan-assignments |
Create loan assignment |
Flat endpoints: GET /settlement-instruments/{id}, PUT /settlement-instruments/{id}, GET /loan-assignments/{id}, PUT /loan-assignments/{id}
Loan Snapshots¶
Point-in-time snapshots of individual loan state.
| Method | Path | Description | Permission |
|---|---|---|---|
GET |
/loan-snapshots |
List loan snapshots | IsViewerOrAbove |
Loan Tape Configs¶
Configure and generate loan tapes for investor reporting.
| Method | Path | Description | Permission |
|---|---|---|---|
GET |
/loan-tape-configs |
List configs | IsViewerOrAbove |
GET |
/loan-tape-configs/{id} |
Get config | IsViewerOrAbove |
POST |
/loan-tape-configs |
Create config | IsAdminOrAbove |
PUT |
/loan-tape-configs/{id} |
Update config | IsAdminOrAbove |
POST |
/loan-tape-configs/{id}/generate |
Generate loan tape | IsAdminOrAbove |
Create Loan Tape Config¶
{
"name": "Monthly Investor Report",
"portfolio_id": "...",
"format": "csv",
"columns": [
"loan_number",
"borrower_name",
"principal_balance",
"interest_rate",
"days_past_due",
"delinquency_bucket",
"next_payment_date"
],
"schedule": "monthly"
}
See Also¶
- Portfolio Management --- Portfolio types, snapshots, investor management
- Reporting API --- Report generation
- Loans API --- Loan data and portfolio assignment