Batched Jobs (Beta)

Batched jobs split a portfolio view or query request into parallel sub-requests and merge the results into a single response. This provides faster computation for large portfolios where a standard synchronous request would time out.

Batched jobs use the same Jobs API endpoint with an additional header.

⚠️

Beta

Batched jobs are in the Addepar Beta Program. Features may be modified or removed at any time.

Overview

EndpointPOST /v1/jobs (with Addepar-Compute-Type: BATCH header)
ResultsGET /v1/jobs/:id/download
Result TTL24 hours after job creation
Supported job typesportfolio_view_results, portfolio_query_results
OAuth scopesSame as Jobs

📘

Access requirements

Same permissions as the standard Jobs API. The user must have access to the portfolio and view being requested.

How it works

  1. Configure a view or query following the guidelines below.
  2. Submit the job with the Addepar-Compute-Type: BATCH header.
  3. Poll job status via GET /v1/jobs/:id until complete.
  4. Download results via GET /v1/jobs/:id/download.

Submit a batched job

POST /v1/jobs

Add the header Addepar-Compute-Type: BATCH to signal batch processing. The request body is identical to a standard job submission.

curl -X POST "https://{firm}.addepar.com/api/v1/jobs" \
  -H "Authorization: Basic {credentials}" \
  -H "Addepar-Firm: 1" \
  -H "Accept: application/vnd.api+json" \
  -H "Content-Type: application/vnd.api+json" \
  -H "Addepar-Compute-Type: BATCH" \
  -d '{
    "data": {
      "type": "jobs",
      "attributes": {
        "job_type": "portfolio_view_results",
        "parameters": {
          "view_id": "74894",
          "portfolio_type": "entity",
          "portfolio_id": "22",
          "output_type": "json",
          "start_date": "2011-12-31",
          "end_date": "2013-01-15"
        }
      }
    }
  }'
{
  "data": {
    "id": "7",
    "type": "jobs",
    "attributes": {
      "job_type": "portfolio_view_results",
      "parameters": {
        "view_id": 74894,
        "portfolio_type": "entity",
        "portfolio_id": "22",
        "output_type": "json",
        "start_date": "2011-12-31",
        "end_date": "2013-01-15"
      },
      "status": "Queued"
    },
    "relationships": {
      "creator": {
        "data": {"type": "users", "id": "44"}
      }
    },
    "links": { "self": "/v1/jobs/7" }
  }
}

Response codes:

  • 202 Accepted -- Job created and queued
  • 400 Bad Request -- Invalid parameters or unsupported batch configuration
  • 403 Forbidden -- Insufficient permissions

Download results

GET /v1/jobs/:id/download

Returns results in the format specified by output_type (JSON, CSV, TSV, or XLSX).

Response codes:

  • 200 OK -- Results returned
  • 303 See Other -- Follow the Location header to retrieve results
  • 404 Not Found -- Job has not completed or produced no results
  • 410 Gone -- Results expired (older than 24 hours)

If the view contains unsupported attributes, the job status becomes Error with a description of the incompatibility. Check status via GET /v1/jobs/:id.

Guidelines

Optimize batch performance by minimizing positions per row. Group by position, holding account, or top-level owner rather than broad categories like asset class or country.

Restrictions:

  • Summary data applied to a table row is not supported.
  • Advanced tables and pivot tables are not supported.

To disable the total row (if unsupported attributes prevent aggregation): uncheck "Show total row" in View Settings, or set disable_total_row = true in the job payload.

Attribute support tiers

TierBehavior
Fully supportedWorks in all contexts (grouping, column, filter, total row).
Partially supportedWorks as grouping/filter. As a column, values are not computed for total rows or rows exceeding the position threshold (returns Coordinator Disabled).
Not supportedCannot be used in any batched request. Job will error.

Not supported (will cause job failure):

  • Benchmark
  • Calendar Period Grouping
  • Group / Group Type Key (only when >500k groups are enabled)
  • Performance Contribution
  • Target Allocation / Target Allocation % / Target Allocation Range
  • Time Period Grouping
  • Transaction-based attributes

Fully supported (non-exhaustive):

Accrued Income, Change In Accrued Income, Creation Date, Display Name, Entity ID, External ID, Group ID, Income/Expenses, Model Type, Net Cash Flow, Net Gain/Loss, Percent of Portfolio, Reference Currency, Total Return, Value.

Partially supported (non-exhaustive):

IRR, TWR.


📘

Related

  • Jobs -- Core async job API (status polling, lifecycle)
  • Portfolio Views -- View configuration and synchronous results
  • Portfolio Query -- Alternative query-based data extraction

Did this page help you?