App Directory API
Programmatic access to connected application metadata
Overview
App Directory gives you visibility into which Plaid-powered applications your customers have connected to, without implementing Dynamic Client Registration. Plaid manages application onboarding and risk review; you get read access to the resulting metadata for your own risk and compliance needs.
Single-institution accounts can also get this data with no code, in the Data Partner Dashboard. This page covers the API, which is available to every integration model, including platforms.
App Directory is available in Production only after you've completed your Core Exchange integration. To test before then, use Sandbox.
Authentication
Get access to the Data Partner Dashboard and complete your Core Exchange integration, then find your client_id and secret on the Developer > Keys tab. Include both in the headers of every request as PLAID-CLIENT-ID and PLAID-SECRET.
Endpoints
| Endpoint | Functionality |
|---|---|
GET /fdx/recipients | List all applications your customers have connected to |
GET /fdx/recipient/{recipientId} | Get details for a single application |
Get a list of applications with /fdx/recipients
We recommend rerunning this report daily to keep your records current.
Get Recipients
Returns a list of Recipients
Request fields
curl -X GET 'https://production.plaid.com/fdx/recipients' \
-H 'PLAID-CLIENT-ID: <client_id>' \
-H 'PLAID-SECRET: <secret>'Response fields
The recipient identifier
256 The recipient name displayed by the Data Provider during the consent flow
256 Data Recipient Logo URL location
The legal name of the recipient
256 The category that the recipient falls under
The date at which the recipient gained production access to Plaid
date The number of consumers connected to the recipient through this Data Partner
{
"recipients": [
{
"recipient_id": "98c8990b-72a9-4dc2-a4c5-f45b9b269178",
"client_name": "My Example Client",
"logo_uri": "https://client-logos.plaid.com/logo.png",
"joined_date": "2021-08-31",
"category": "Robo advisors",
"connection_count": 128,
"third_party_legal_name": "My Example Client LLC"
},
{
"recipient_id": "1a6ad795-2b9a-4a9f-8615-e771816c92db",
"client_name": "Another Example Client",
"logo_uri": "https://client-logos.plaid.com/logo2.png",
"joined_date": "2027-04-15",
"category": "eCommerce",
"connection_count": 209,
"third_party_legal_name": "Another Example Client LLC"
}
]
}Get a single application with /fdx/recipient/{recipientId}
recipient_id must be a UUID returned by /fdx/recipients — other values return an error. If this lookup happens during an active OAuth flow, you can optionally pass the OAuth state value as an OAUTH-STATE-ID header, which helps Plaid correlate the request if you need to troubleshoot it later.
Get Recipient
Get a specific recipient
Request fields
Recipient Identifier. Uniquely identifies the recipient
pathThe value that is passed into the OAuth URI 'state' query parameter.
headercurl -X GET 'https://production.plaid.com/fdx/recipient/<recipient_id>' \
-H 'PLAID-CLIENT-ID: <client_id>' \
-H 'PLAID-SECRET: <secret>' \
-H 'OAUTH-STATE-ID: <oauth_state>'Response fields
The recipient identifier
256 The recipient name displayed by the Data Provider during the consent flow
256 Data Recipient Logo URL location
The legal name of the recipient
256 {
"recipient_id": "7bf0b839-861e-444e-b103-9007610ffbaf",
"client_name": "My Example Client",
"logo_uri": "https://client-logos.plaid.com/logo.png",
"third_party_legal_name": "My Example Client LLC"
}Testing
The App Directory API is supported in the Sandbox environment. To test, make calls against sandbox.plaid.com instead of production.plaid.com. Unlike Production, Sandbox data is static, so new records will not be created and existing records will not change.
Errors
Both endpoints return errors in Plaid's standard error object format (error_type, error_code, error_message, display_message, request_id). Log request_id when you encounter an error to speed up troubleshooting with Plaid.