API template library

Plaid Auth mock API and live sandbox

A WireMock simulation of Plaid's REST API — covering account and routing numbers, verification insights, and bank-transfer events.

Vendor
Plaid
Functionality
Account and routing verification
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 Auth

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

Base URL
https://emev1.wiremockapi.cloud

POST Auth - Get account and routing numbers (200)

curl -s -X POST 'https://emev1.wiremockapi.cloud/auth/get' \
  -H 'Content-Type: application/json' \
  -d '{}'

POST Auth - Verify account and routing numbers (200)

curl -s -X POST 'https://emev1.wiremockapi.cloud/auth/verify' \
  -H 'Content-Type: application/json' \
  -d '{}'

POST Bank Transfer - List events (200)

curl -s -X POST 'https://emev1.wiremockapi.cloud/bank_transfer/event/list' \
  -H 'Content-Type: application/json' \
  -d '{}'
Method Path Summary
POST /auth/get Retrieve auth data
POST /auth/verify Verify auth data
POST /bank_transfer/event/list List bank transfer events
POST /bank_transfer/event/sync Sync bank transfer events

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

What's inside the Auth template

Auth is the product that turns a linked account into something you can move money to, and the template serves its payload in full: /auth/get answers with the numbers object populated across all four schemes at once — ACH routing and wire-routing numbers, EFT for Canada, an IBAN under international, and a BACS sort code — attached to a checking account whose mask matches the ACH account number's last four digits. /auth/verify renders the modern verdict, database_insights_pass, backed by a verification_insights block of name-match scoring, network status, and an account-number format check.

  • Account numbers — one checking account expressed in ACH, EFT, international, and BACS forms simultaneously
  • Verification insights — the /auth/verify verdict with its scoring and prior-returns sub-signals
  • Bank-transfer events — the event list and sync pair from the legacy bank_transfer product

Example implementation using plaid-python

One request model and one response walk cover the product; plaid-python needs only its host pointed here to run them:

Payment-onboarding code is where this earns its keep: the routine that extracts a routing/account pair and hands it to your payments provider can be integration-tested on every build, no linked bank account and no Plaid dashboard project required.

When the flow under test needs a failing verification or a tokenized account number instead, recreate the template in WireMock Cloud and edit the verdict — the response schema is already in place to modify rather than write from scratch.

import plaid
from plaid.api import plaid_api
from plaid.model.auth_get_request import AuthGetRequest

configuration = plaid.Configuration(
    host="https://emev1.wiremockapi.cloud",
    # required by the client, ignored by the mock
    api_key={"clientId": "any-value", "secret": "any-value"},
)
client = plaid_api.PlaidApi(plaid.ApiClient(configuration))

resp = client.auth_get(AuthGetRequest(access_token="access-sandbox-123"))
for ach in resp.numbers.ach:
    print(ach.routing, ach.account)

Frequently asked questions

A real /auth/get includes only the schemes the institution supports; the template includes every scheme so that formatting code for US ACH, Canadian EFT, IBAN, and UK sort-code paths can all be exercised from a single response. Iterate the scheme arrays rather than assuming exactly one is populated.

Not on this instance — the stub always reports database_insights_pass with clean sub-signals. The failure and pending statuses in Plaid's verification vocabulary are one stub edit away in a private WireMock Cloud copy, which is the sensible place to rehearse the reject-and-retry UX anyway.

Their response bodies are byte-identical here: one pending bank-transfer event with event_id 1 and has_more true. What differs is the request contract your client builds — offset-driven for list, after_id-driven for sync — and the mock is a fine place to confirm you're constructing each correctly.

The bank_transfer event routes here belong to Plaid's legacy transfer product. Its successor — authorization decisions, a stateful transfer store, ledger balances — lives in the Transfer template, which pairs naturally with the account numbers this one hands you.

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