API template library

Plaid Investments mock API and live sandbox

A WireMock simulation of Plaid's REST API — covering holdings, investment transactions, transfer-authorization data, and refresh.

Vendor
Plaid
Functionality
Holdings and investment transactions
Spec version
2020-09-14_1.688.6
Endpoints
4
Stubs
4
Protocol
REST
Validation
AI-validated Before publication, an AI agent exercised these endpoints against the real Plaid API through WireMock's recording proxy, and the recorded traffic was used to verify each stub's request and response shapes.

Live sandbox · no signup, no API key

Plaid Investments

A running WireMock Cloud instance of this template, callable right now from a terminal, a script, or an AI agent.

Base URL
https://3r72z.wiremockapi.cloud

POST Get Investment Holdings

curl -s -X POST 'https://3r72z.wiremockapi.cloud/investments/holdings/get' \
  -H 'Content-Type: application/json' \
  -d '{}'

POST Get Investment Transactions

curl -s -X POST 'https://3r72z.wiremockapi.cloud/investments/transactions/get' \
  -H 'Content-Type: application/json' \
  -d '{}'

POST Refresh Investments

curl -s -X POST 'https://3r72z.wiremockapi.cloud/investments/refresh' \
  -H 'Content-Type: application/json' \
  -d '{}'
Method Path Summary
POST /investments/auth/get Get data needed to authorize an investments transfer
POST /investments/holdings/get Get Investment holdings
POST /investments/refresh Refresh investment data
POST /investments/transactions/get Get investment transactions

Unauthenticated WireMock Cloud demo sandbox for Plaid — not an official Plaid sandbox, and it returns simulated example data only.

What's inside the Investments template

The portfolio is small and legible: a Plaid IRA holding 100 shares of Apple at a 185.50 close, institution value 18,550, delivered in Plaid's two-array layout — holdings keyed by security_id on one side, the securities they reference on the other. The transactions route logs the single buy that built the position (10 shares, 1,855 total), and /investments/auth/get rounds the product out with the numbers an account transfer needs: ACATS, ATON, and retirement-401k identifiers beside the owner record.

  • Holdings — position quantities, cost basis, and values joined to a securities reference list
  • Investment transactions — a dated buy with type, subtype, quantity, and settled amount
  • Transfer authorization — the ACATS, ATON, and retirement-401k number sets brokerage moves run on
  • Refresh — the acknowledgement route that requests fresh institutional data

Frequently asked questions

Not the holdings and transactions routes — the stub securities omit the figi field, which plaid-python's strict response models treat as required, so deserialization raises before your code sees data. Call these endpoints with a plain HTTP client, or relax the check in a private copy by adding figi values to the stubs.

It's Plaid's normalization: many holdings can reference one security, so positions carry a security_id and the security details live once in a parallel list. The fixture's one-to-one pairing is the minimal case for exercising your join logic — resolve the AAPL record from the holding and the lookup path is covered.

For the mechanics, yes: quantity times close price equals the institution value exactly, and the buy transaction's amount is consistent with its quantity and price. Multi-position aggregation, cost-basis edge cases, and currency mixes need a richer dataset — which is stub editing in WireMock Cloud, not new code.

The Liabilities template — credit cards, a mortgage, and a student loan in one payload. Between the two, a net-worth feature can read both sides of a household balance sheet from deterministic fixtures.

Vendor names identify APIs represented by WireMock template sources. This page does not imply vendor endorsement, certification, partnership, or official integration status.