Back to API Overview

Complete API Reference

Every endpoint, parameter, and response documented. 20+ resources, 100+ endpoints.

API Quick Reference

Base URL

https://api.nagarehq.com/api/v1

Authentication

Authorization: Bearer fnd_live_...

Content Type

application/json

Funds Management

Core fund CRUD operations. Funds are represented as MASTER parameter records with versioning support.

GET/funds

List all active funds in your portfolio. Returns paginated results with filtering options.

Query Parameters

pagePage number (default: 1)
limitResults per page (default: 50, max: 100)
fundTypeFilter by fund type (VENTURE_CAPITAL, BUYOUT, GROWTH_EQUITY, etc.)
tagsFilter by tags (comma-separated)
sortSort field (prefix with - for descending, e.g., -createdAt)

Example Request

curl -X GET "https://api.nagarehq.com/api/v1/funds?page=1&limit=10&fundType=VENTURE_CAPITAL" \
  -H "Authorization: Bearer fnd_live_..." \
  -H "Content-Type: application/json"

Example Response

{
  "data": [
    {
      "id": "abc123",
      "parameterId": "PRM-1234567890-ABC123",
      "fundId": "sequoia-xviii",
      "type": "MASTER",
      "name": "Sequoia Capital Fund XVIII",
      "description": "2022 vintage venture capital fund",
      "version": 1,
      "isActive": true,
      "fundStatus": "ACTIVE",
      "parameters": {
        "fundType": "VENTURE_CAPITAL",
        "firmName": "Sequoia Capital",
        "fundName": "Fund XVIII",
        "vintageYear": 2022,
        "currency": "USD",
        "commitment": 50000000,
        "commitmentDate": "2022-06-15",
        "durationYears": 12,
        "investmentPeriodYears": 5,
        "expectedGrossMultiple": 3.0,
        "expectedNetMultiple": 2.5,
        "managementFeeRate": 0.02,
        "carriedInterestRate": 0.20
      },
      "tags": ["vc", "technology", "us"],
      "createdBy": "system",
      "createdAt": "2024-01-15T10:00:00.000Z",
      "updatedAt": "2024-03-20T14:30:00.000Z"
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 10,
    "total": 30,
    "totalPages": 3
  }
}
POST/funds

Create a new fund. This creates a MASTER parameter record with version 1.

Request Body

{
  "fundId": "vista-ix",              // Optional: auto-generated from firm/fund name if omitted
  "name": "Vista Equity Partners Fund IX",
  "description": "2024 vintage software-focused buyout fund",
  "fundStatus": "ACTIVE",            // ACTIVE | PLANNING | CLOSED
  "parameters": {
    "fundType": "BUYOUT",            // Required: fund type
    "firmName": "Vista Equity Partners",
    "fundName": "Fund IX",
    "vintageYear": 2024,
    "currency": "USD",
    "commitment": 100000000,
    "commitmentDate": "2024-03-01",
    "firstCallDate": "2024-06-01",   // Optional: first capital call date
    "durationYears": 10,
    "investmentPeriodYears": 4,
    "expectedGrossMultiple": 2.5,
    "expectedNetMultiple": 2.2,
    "managementFeeRate": 0.015,
    "carriedInterestRate": 0.20,
    "hurdleRate": 0.08
  },
  "tags": ["buyout", "software", "us"]
}

Fund Types

  • Private Equity: VENTURE_CAPITAL, GROWTH_EQUITY, BUYOUT, SECONDARY, FUND_OF_FUNDS
  • Real Assets: REAL_ESTATE, INFRASTRUCTURE
  • Credit: PRIVATE_CREDIT
  • Public Markets: PUBLIC_EQUITY, PUBLIC_DEBT, PUBLIC_PORTFOLIO
  • Cash: MONEY_MARKET

Response (201 Created)

{
  "id": "def456",
  "parameterId": "PRM-1710234567-XYZ789",
  "fundId": "vista-ix",
  "type": "MASTER",
  "name": "Vista Equity Partners Fund IX",
  "version": 1,
  "isActive": true,
  ...
}
GET/funds/:fundId

Get detailed information about a specific fund (active MASTER parameters).

GET /api/v1/funds/sequoia-xviii
PUT/funds/:fundId

Update fund details. This creates a new version and deactivates the old one (versioned updates).

Note: Updates are versioned. The old version is deactivated, and a new version is created with incremented version number.

{
  "name": "Updated Fund Name",
  "description": "Updated description",
  "fundStatus": "CLOSED",
  "parameters": {
    "expectedNetMultiple": 2.8,  // Partial update - other fields preserved
    "notes": "Increased expectations based on Q1 performance"
  },
  "tags": ["buyout", "software", "us", "high-performer"]
}
DELETE/funds/:fundId

Soft delete a fund by deactivating its MASTER parameters. Historical data is preserved.

Soft Delete: The fund is marked as inactive but not removed from the database. All historical transactions and projections are preserved.

GET/funds/:fundId/blended

Get blended view combining actuals and projections for all quarters across the fund's lifecycle. This endpoint resolves the data waterfall (ACTUAL → FORECAST → MASTER) and calculates projections.

Data Waterfall Priority:

  1. ACTUAL (transactions) - Real historical data always wins
  2. FORECAST (fund parameters) - Fund-specific forecasts
  3. MASTER (fund parameters) - Baseline assumptions
{
  "fundId": "sequoia-xviii",
  "quarters": [
    {
      "quarter": 0,
      "calendarQuarter": "2022-Q2",
      "dataSource": "ACTUAL",        // This quarter has actual data
      "calls": 5000000,
      "distributions": 0,
      "netCashflow": -5000000,
      "nav": 4800000,
      "managementFees": 100000,
      "grossTVPI": 0.96,
      "netTVPI": 0.95,
      "dpi": 0,
      "rvpi": 0.95,
      "grossIRR": -0.15,
      "netIRR": -0.18
    },
    {
      "quarter": 1,
      "calendarQuarter": "2022-Q3",
      "dataSource": "FORECAST",      // Projected based on parameters
      "calls": 5000000,
      "distributions": 500000,
      "netCashflow": -4500000,
      "nav": 10500000,
      "managementFees": 125000,
      "grossTVPI": 1.05,
      "netTVPI": 1.02,
      "dpi": 0.05,
      "rvpi": 0.97,
      "grossIRR": 0.12,
      "netIRR": 0.09
    }
  ]
}

Transactions (Actuals)

Manage actual fund transactions - capital calls, distributions, and NAV updates. These override forecasts in the data waterfall.

GET/funds/:fundId/transactions

List all actual transactions for a specific fund with filtering and pagination.

Query Parameters

page Page number
limit Results per page
startDate Filter by date range start (YYYY-MM-DD)
endDate Filter by date range end (YYYY-MM-DD)
quarter Filter by specific quarter (0-based)
dataSource Filter by source (ACTUAL, MANUAL, IMPORTED)
POST/funds/:fundId/transactions

Create a single transaction for a fund. Validates against commitment date for PE funds.

{
  "quarter": 2,                      // Fund quarter (0-based)
  "transactionDate": "2022-12-31",
  "capitalCall": 5000000,            // Capital called this quarter
  "distribution": 500000,            // Distributions this quarter
  "nav": 15200000,                   // NAV at end of quarter
  "managementFees": 150000,          // Fees paid this quarter
  "notes": "Q4 2022 actuals from GP statement"
}

Validation: For PE funds, capital call dates must be after the commitment date (or firstCallDate if specified). The system defaults to Q+1 after commitment.

POST/funds/:fundId/transactions/bulk

Bulk create multiple transactions at once. Useful for importing historical data.

{
  "transactions": [
    {
      "quarter": 0,
      "transactionDate": "2022-06-30",
      "capitalCall": 5000000,
      "distribution": 0,
      "nav": 4800000,
      "managementFees": 100000
    },
    {
      "quarter": 1,
      "transactionDate": "2022-09-30",
      "capitalCall": 5000000,
      "distribution": 0,
      "nav": 10500000,
      "managementFees": 125000
    },
    {
      "quarter": 2,
      "transactionDate": "2022-12-31",
      "capitalCall": 5000000,
      "distribution": 500000,
      "nav": 15200000,
      "managementFees": 150000
    }
  ]
}

Response (201 Created)

{
  "data": [/* Created transaction objects */],
  "created": 3,
  "errors": [
    {
      "quarter": 5,
      "error": "Transaction already exists"
    }
  ]  // Only present if some transactions failed
}
PUT/funds/:fundId/transactions/:id

Update an existing transaction. Partial updates supported.

DELETE/funds/:fundId/transactions/:id

Delete a transaction. This is a hard delete - the transaction is permanently removed.

Warning: Hard delete - cannot be undone. After deletion, projections will use FORECAST or MASTER data for this quarter.

Scenarios & Forecasting

Create and manage portfolio-level scenarios with what-if analysis, calculation triggers, and result aggregation.

GET/scenarios

List all scenarios with pagination and filtering.

scenarioType Filter by type (BASE, OPTIMISTIC, PESSIMISTIC, CUSTOM)
POST/scenarios

Create a new scenario with fund selection and assumptions.

{
  "name": "Bear Case: 20% Slower Deployment",
  "description": "Conservative scenario with delayed deployment and lower returns",
  "scenarioType": "PESSIMISTIC",
  "isMainScenario": false,
  "fundSelectionMode": "MANUAL",  // MANUAL | CRITERIA | ALL
  "fundIds": ["sequoia-xviii", "vista-ix"],
  "assumptions": {
    "returnAdjustment": -0.05,    // Reduce expected returns by 5%
    "deploymentSlowdown": 0.2,    // Slow deployment by 20%
    "exitDelay": 2,               // Delay exits by 2 quarters
    "feeAdjustment": 0            // No fee changes
  }
}

Fund Selection Modes

  • MANUAL: Explicitly specify fund IDs
  • CRITERIA: Use criteria (fundType, tags, vintageYear, etc.) - funds resolved automatically
  • ALL: Include all active funds
POST/scenarios/:scenarioId/calculate

Trigger scenario calculation. Returns lightweight summary. Results are written to ScenarioProjection table.

Calculation Process: Re-resolves funds (in case new funds were added), runs calculation engine, creates quarterly projections for all funds, and aggregates portfolio-level metrics.

POST /api/v1/scenarios/SCN-1234567890-ABC123/calculate

Response (200 OK):
{
  "scenarioId": "SCN-1234567890-ABC123",
  "calculationStatus": "COMPLETED",
  "fundCount": 30,
  "totalQuarters": 120,
  "calculatedAt": "2024-10-14T12:30:00.000Z"
}
GET/scenarios/:scenarioId/cashflow

Get quarterly cashflow series for charts (calls, distributions, NAV, metrics).

period Aggregation period: "quarter" (default) | "year"
{
  "scenarioId": "SCN-1234567890-ABC123",
  "period": "quarter",
  "projections": [
    {
      "quarter": "2024-Q1",
      "date": "2024-03-31",
      "calls": 25000000,
      "distributions": 5000000,
      "netCashflow": -20000000,
      "nav": 450000000,
      "cash": 50000000,
      "totalNav": 500000000,
      "grossTVPI": 1.85,
      "netTVPI": 1.72,
      "dpi": 0.45,
      "rvpi": 1.27,
      "grossIRR": 0.18,
      "netIRR": 0.15
    }
  ]
}
GET/scenarios/:scenarioId/aggregates/latest

Get dashboard-ready aggregate for the latest calendar quarter. Perfect for showing current portfolio position.

{
  "scenarioId": "SCN-1234567890-ABC123",
  "calendarQuarter": "2024-Q3",
  "nav": 450000000,
  "cash": 50000000,
  "totalNav": 500000000,
  "cumulativeCalls": 550000000,
  "cumulativeDistributions": 250000000,
  "grossTVPI": 1.85,
  "netTVPI": 1.72,
  "dpi": 0.45,
  "rvpi": 1.27,
  "grossIRR": 0.18,
  "netIRR": 0.15,
  "fundCount": 30
}
GET/scenarios/:scenarioId/funds/latest

Get latest quarter projection per fund. Useful for fund-level dashboards and tables.

POST/scenarios/:scenarioId/set-main

Set this scenario as the main scenario for the dashboard. Unsets other main scenarios.

PUT/scenarios/:scenarioId

Update scenario metadata, assumptions, or fund selection.

DELETE/scenarios/:scenarioId

Delete scenario and all related projections. Hard delete - cannot be undone.

AI Document Processing

Upload, process, and search documents using AI. Powered by Vertesia for intelligent document extraction and analysis.

POST/documents/upload-url

Get a signed URL for uploading a document. Step 1 of 2-step upload process.

// Step 1: Get upload URL
POST /api/v1/documents/upload-url
{
  "name": "Q3-2024-Statement.pdf",
  "mime_type": "application/pdf"
}

Response:
{
  "url": "https://signed-url...",
  "id": "file_abc123",
  "mime_type": "application/pdf",
  "path": "/uploads/file_abc123.pdf"
}

// Step 2: Upload file to signed URL
PUT [signed URL]
Content-Type: application/pdf
[Binary file data]
POST/documents

Create document object after file upload. Triggers AI processing workflows.

{
  "name": "Q3 2024 Capital Call - Sequoia XVIII",
  "description": "Quarterly capital call statement",
  "fundId": "sequoia-xviii",
  "fundName": "Sequoia Capital Fund XVIII",
  "sourceId": "file_abc123",  // From upload-url response
  "mime_type": "application/pdf",
  "tags": ["capital-call", "q3-2024"],
  "properties": {
    "quarter": "2024-Q3",
    "document_type": "capital_call"
  }
}

Response (200 OK):
{
  "id": "doc_xyz789",
  "name": "Q3 2024 Capital Call - Sequoia XVIII",
  "status": "processing",
  "workflow_id": "wf_123",
  "workflow_run_id": "run_456",
  ...
}
GET/documents/:id/workflow-status

Get processing status for a document. Check if AI extraction is complete.

{
  "documentId": "doc_xyz789",
  "status": "completed",       // pending | processing | completed | failed
  "workflows": [
    {
      "workflow_id": "wf_123",
      "run_id": "run_456",
      "status": "completed",
      "started_at": "2024-10-14T12:00:00.000Z",
      "completed_at": "2024-10-14T12:00:15.000Z"
    }
  ]
}
GET/documents

List documents filtered by fund and tenant.

fundId Filter by fund
limit Results per page (default: 100)
offset Pagination offset
POST/documents/search

Search documents with vector + fulltext search. Supports filtering by fund, type, status, and properties.

{
  "query": "capital call Q3",      // Full-text search query
  "fundId": "sequoia-xviii",
  "type": "application/pdf",
  "status": "completed",
  "properties": {
    "document_type": "capital_call"
  },
  "limit": 50,
  "offset": 0,
  "facets": true                   // Include aggregations
}

Response:
{
  "results": [/* Document objects */],
  "count": 15,
  "facets": {
    "type": {
      "application/pdf": 10,
      "application/vnd.ms-excel": 5
    },
    "status": {
      "completed": 12,
      "processing": 3
    }
  }
}
POST/documents/analyze-fund

Analyze a fund presentation PDF and extract structured fund information. Useful for pre-filling fund forms.

{
  "documentId": "doc_xyz789"
}

Response:
{
  "success": true,
  "data": {
    "firmName": "Sequoia Capital",
    "fundName": "Fund XVIII",
    "vintageYear": 2022,
    "fundType": "VENTURE_CAPITAL",
    "targetSize": 850000000,
    "currency": "USD",
    "investmentPeriod": 5,
    "fundLife": 12,
    "managementFee": 0.02,
    "carriedInterest": 0.20
  }
}
GET/documents/autocomplete

Autocomplete search for funds and scenarios. Used for quick navigation and filtering.

q Search query
type fund | scenario | all (default: all)
DELETE/documents/:id

Delete a document permanently.

Additional API Resources

The following resources are also available. See the complete source code for full details:

Portfolio Config

Manage portfolio-level configuration (base currency, reporting currency, forecast horizon).

GET/POST /portfolio-config

FX Rates

Query historical foreign exchange rates for currency conversion.

GET /fx-rates

Snapshots

Create and compare calculation snapshots for variance analysis.

GET/POST /snapshots

API Keys

Manage API keys for programmatic access.

GET/POST/DELETE /api-keys

Tenants (Admin)

Admin endpoints for tenant management and configuration.

GET/POST/PUT/DELETE /admin/tenants

Public Portfolios

Manage custom public market portfolios with holdings.

GET/POST /public-portfolios

Charts

Get chart-ready data for visualizations.

GET /charts/*

Context

Get current user context and workspace information.

GET /context

Start Building with the API

Get your API key and start integrating Nagare's portfolio intelligence into your systems.