Altruist Plaid API

Plaid bank linking operations

Operations 2

POST /api/v1/orgs/{orgId}/users/{userId}/fundingAccounts/plaid Submit a Plaid bank link #
POST /api/v1/orgs/{orgId}/users/{userId}/fundingAccounts/plaid/linkToken Create a Plaid link token #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/altruist:altruist-plaid-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

altruist-plaid-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Enterprise Realtime Plaid API
  description: The Enterprise Realtime API service acts as the public API layer for advisor infrastructure, enabling partner-developers to programmatically perform advisor actions.
  version: v1
servers:
- url: https://integrations.altruist.com
  description: API Server
tags:
- name: Plaid
  description: Plaid bank linking operations
paths:
  /api/v1/orgs/{orgId}/users/{userId}/fundingAccounts/plaid:
    post:
      tags:
      - Plaid
      summary: Submit a Plaid bank link
      description: 'Creates a funding account from a Plaid public token obtained after a successful Plaid Link session. The auth type in plaidMetaData must reflect the verification_status Plaid Link returned. ERA always enables AVS validation. Blocked for impersonating sessions. The request is safe to retry: if this bank is already on file for the user, the existing funding account is returned with a 200 instead of a 201.'
      operationId: createPlaidFundingAccount
      parameters:
      - name: orgId
        in: path
        required: true
        schema:
          type: string
          format: uuid
      - name: userId
        in: path
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreatePlaidFundingAccountRequestV1'
        required: true
      responses:
        '200':
          description: This bank was already linked; the existing funding account is returned
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/FundingAccountV1'
        '201':
          description: Funding account created successfully
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/FundingAccountV1'
        '400':
          description: Bank link failed
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorV1'
        '401':
          description: Unauthorized
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorV1'
        '403':
          description: Forbidden or impersonation not allowed
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorV1'
        '404':
          description: Not Found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorV1'
        '409':
          description: Conflict
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorV1'
        '422':
          description: Account could not be verified through Plaid
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorV1'
        '500':
          description: Internal Server Error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorV1'
        '501':
          description: Not Implemented
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorV1'
        '502':
          description: Bad Gateway
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorV1'
  /api/v1/orgs/{orgId}/users/{userId}/fundingAccounts/plaid/linkToken:
    post:
      tags:
      - Plaid
      summary: Create a Plaid link token
      description: Mints a short-lived link token to initialize the Plaid Link SDK on the client side. The consumer must pass this token to the Plaid Link widget, which guides the end user through bank authentication. After a successful bank link, call POST /fundingAccounts/plaid with the resulting public token.
      operationId: createLinkToken
      parameters:
      - name: orgId
        in: path
        required: true
        schema:
          type: string
          format: uuid
      - name: userId
        in: path
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreatePlaidLinkTokenRequestV1'
      responses:
        '201':
          description: Link token created successfully
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/PlaidLinkTokenResponseV1'
        '400':
          description: Failed to create Plaid link token
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorV1'
        '401':
          description: Unauthorized
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorV1'
        '403':
          description: Forbidden
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorV1'
        '404':
          description: Not Found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorV1'
        '409':
          description: Conflict
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorV1'
        '422':
          description: Unprocessable Entity
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorV1'
        '500':
          description: Internal Server Error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorV1'
        '501':
          description: Not Implemented
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorV1'
        '502':
          description: Bad Gateway
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorV1'
components:
  schemas:
    FundingAccountV1:
      type: object
      properties:
        id:
          type: string
          format: uuid
        accountType:
          type: string
          enum:
          - Checking
          - Savings
          - Unknown
          - Investment
          - Brokerage
          - Credit
          - Depository
          - Loan
          - Other
        routingNumber:
          type: string
        institutionName:
          type: string
        accountNumber:
          type: string
        accountName:
          type: string
        authenticationStatus:
          type: string
          enum:
          - Pending
          - Failed
          - Verified
          - PendingManual
          - PendingVerification
          - PendingOpsReview
          - PendingAdvisorReview
          - PendingDraftSubmission
          - PendingClientReview
          - ClientReviewApproved
          - ClientReviewRejected
          - Unknown
        verificationStatus:
          type: string
          enum:
          - Pending
          - Verified
          - Rejected
          - Canceled
          - Unknown
        accountOwnerName:
          type: string
        locked:
          type: boolean
        created:
          type: string
          format: date-time
    ErrorV1:
      type: object
      properties:
        code:
          type: integer
          format: int32
          description: '### Error Codes


            | Code   | Description                         |

            |--------|-------------------------------------|

            | **0xx** | **Unknown or Unexpected**          |

            | 0    | Unknown error                         |

            | 40   | Unknown authentication error          |

            | **1xx** | **General**                        |

            | 101  | Invalid input                         |

            | 104  | Not found                             |

            | 140  | Access Denied                         |

            | 141  | Unauthorized                          |

            | 150  | Not implemented                       |

            | **10xx** | **Household**                     |

            | 1000 | Household not found                   |

            | 1001 | Duplicate contact                     |

            | 1002 | Household contact not found           |

            | 1003 | Household contact already exists      |

            | **11xx** | **Account**                       |

            | 1100 | Account not found                     |

            | 1110 | Invalid account group                 |

            | **12xx** | **User**                          |

            | 1200 | User not found                        |

            | 1201 | User profile not found                |

            | **13xx** | **Transfer**                      |

            | 1300 | Transfer not found                    |

            | 1301 | Transfer not supported                |

            | 1302 | Duplicate transfer                    |

            | 1303 | Funding account not found             |

            | 1304 | Duplicate funding account             |

            | **14xx** | **Client Agreement**              |

            | 1400 | Client Agreement not found            |

            | 1401 | Invalid Client Agreement file         |

            | 1402 | Client Agreement could not be updated |

            | **15xx** | **Trusted Contact**               |

            | 1500 | Trusted Contact not found             |

            | **17xx** | **Cash Set Aside**                |

            | 1700 | Cash set aside not found              |

            | 1701 | Cash set aside invalid amount         |

            | 1702 | Cash set aside invalid date           |

            | 1703 | Cash set aside upstream error         |

            | 1704 | Cash set aside cannot be cancelled    |

            | 1705 | Cash set aside invalid account        |

            | **18xx** | **Cash Settings**                 |

            | 1800 | Cash settings not found               |

            '
        message:
          type: string
        requestId:
          type: string
    PlaidMetaDataV1:
      type: object
      description: Plaid account metadata returned by the Plaid Link SDK on success
      properties:
        accountMask:
          type: string
          description: Last 4 digits of the bank account number
          example: 1234
          minLength: 1
        accountName:
          type: string
          description: Name of the bank account as returned by Plaid
          example: Checking
          minLength: 1
        accountType:
          type: string
          description: Plaid account subtype in UpperCamelCase
          example: Checking
          minLength: 1
        authType:
          type: string
          description: 'Plaid authentication type, derived from the Plaid Link account''s verification_status: Instant if verified immediately, Automated if pending_automatic_verification, Manual if pending_manual_verification.'
          enum:
          - Instant
          - Automated
          - Manual
          example: Instant
        institutionName:
          type: string
          description: Name of the financial institution
          example: Chase
          minLength: 1
        plaidAccountId:
          type: string
          description: Plaid's internal account identifier
          example: plaid-abc123
          minLength: 1
      required:
      - accountMask
      - accountName
      - accountType
      - authType
      - institutionName
      - plaidAccountId
    CreatePlaidLinkTokenRequestV1:
      type: object
      description: Request body for creating a Plaid link token
      properties:
        redirectUri:
          type: string
          description: OAuth redirect URI. Required only for OAuth-redirect banks (e.g., Chase, Bank of America). Must be pre-registered in the Plaid Dashboard. Omit for non-OAuth banks.
          example: https://your-app.com/oauth-callback
    CreatePlaidFundingAccountRequestV1:
      type: object
      description: Request body for submitting a Plaid bank link
      properties:
        publicToken:
          type: string
          description: One-time token returned by Plaid Link on success
          example: public-sandbox-...
          minLength: 1
        plaidMetaData:
          $ref: '#/components/schemas/PlaidMetaDataV1'
          description: Account metadata returned by Plaid Link on success
      required:
      - plaidMetaData
      - publicToken
    PlaidLinkTokenResponseV1:
      type: object
      description: Plaid link token for initializing the Plaid Link SDK
      properties:
        linkToken:
          type: string
          description: Short-lived token to initialize the Plaid Link widget
          example: link-sandbox-abc123...
x-provenance:
  method: searched
  source: https://developer.altruist.com/reference
  harvested: '2026-10-13'
  tool: harvest-readme-openapi.py
  note: Assembled verbatim from the OpenAPI definition ReadMe embeds in each operation page of the provider's developer portal; paths and components merged by API title, nothing authored.
  assembled_from:
  - https://developer.altruist.com/reference/assignaccountportfolio-1.md
  - https://developer.altruist.com/reference/assignaccounttohousehold.md
  - https://developer.altruist.com/reference/associatedrafttobundle.md
  - https://developer.altruist.com/reference/batchdeletebeneficiaries.md
  - https://developer.altruist.com/reference/cancelacattransfer.md
  - https://developer.altruist.com/reference/cancelcashsetaside.md
  - https://developer.altruist.com/reference/cancelcashtransfer-1.md
  - https://developer.altruist.com/reference/cancelscheduledtransfer-1.md
  - https://developer.altruist.com/reference/checkdrafteligibility.md
  - https://developer.altruist.com/reference/createaccountgroup.md
  - https://developer.altruist.com/reference/createbanklink.md
  - https://developer.altruist.com/reference/createbeneficiary.md
  - https://developer.altruist.com/reference/createbundle.md
  - https://developer.altruist.com/reference/createcashsetaside.md
  - https://developer.altruist.com/reference/createcashtransfer-1.md
  - https://developer.altruist.com/reference/createdraftinbundle.md
  - https://developer.altruist.com/reference/createfundingaccount-1.md
  - https://developer.altruist.com/reference/createhousehold.md
  - https://developer.altruist.com/reference/createhouseholdcontact.md
  - https://developer.altruist.com/reference/createinvite.md
  - https://developer.altruist.com/reference/createlinktoken.md
  - https://developer.altruist.com/reference/createplaidfundingaccount.md
  - https://developer.altruist.com/reference/createscheduledtransfer-1.md
  - https://developer.altruist.com/reference/createtransfer-1.md
  - https://developer.altruist.com/reference/createuser.md
  - https://developer.altruist.com/reference/deleteaccountportfolio-1.md
  - https://developer.altruist.com/reference/deletebanklink.md
  - https://developer.altruist.com/reference/deletebeneficiary.md
  - https://developer.altruist.com/reference/deletebundle.md
  - https://developer.altruist.com/reference/deleteclientagreement-1.md
  - https://developer.altruist.com/reference/deletehousehold.md
  - https://developer.altruist.com/reference/deletetransfer-1.md
  - https://developer.altruist.com/reference/deletetrustedcontact-1.md
  - https://developer.altruist.com/reference/downloadclientagreementfile-1.md
  - https://developer.altruist.com/reference/getacattransfer.md
  - https://developer.altruist.com/reference/getaccount.md
  - https://developer.altruist.com/reference/getaccountcashsettings.md
  - https://developer.altruist.com/reference/getaccountgroup.md
  - https://developer.altruist.com/reference/getaccountgroups.md
  - https://developer.altruist.com/reference/getaccountportfolio-1.md
  - https://developer.altruist.com/reference/getaggregatedtransactions-1.md
  - https://developer.altruist.com/reference/getaggregatedtransactions_1.md
  - https://developer.altruist.com/reference/getallfundingaccounts-1.md
  - https://developer.altruist.com/reference/getallhouseholdsbyorgid.md
  - https://developer.altruist.com/reference/getalltransfers-1.md
  - https://developer.altruist.com/reference/getbanklink.md
  - https://developer.altruist.com/reference/getbeneficiary.md
  - https://developer.altruist.com/reference/getbundle.md
  - https://developer.altruist.com/reference/getcashsetaside.md
  - https://developer.altruist.com/reference/getcashsummary-1.md
  - https://developer.altruist.com/reference/getclientagreementdetails-1.md
  - https://developer.altruist.com/reference/getcontributionlimitforyear-1.md
  - https://developer.altruist.com/reference/getcontributionlimits-1.md
  - https://developer.altruist.com/reference/getfundingaccount-1.md
  - https://developer.altruist.com/reference/gethouseholdbyid.md
  - https://developer.altruist.com/reference/gethouseholdcontact.md
  - https://developer.altruist.com/reference/gethouseholdcontacts.md
  - https://developer.altruist.com/reference/getinvite.md
  - https://developer.altruist.com/reference/getinvitestatus.md
  - https://developer.altruist.com/reference/getmmasettings.md
  - https://developer.altruist.com/reference/getmodel-1.md
  - https://developer.altruist.com/reference/getpointsofcontact.md
  - https://developer.altruist.com/reference/getportfolio-1.md
  - https://developer.altruist.com/reference/getportfolios-1.md
  - https://developer.altruist.com/reference/getportfolios_1-1.md
  - https://developer.altruist.com/reference/getsecurities-1.md
  - https://developer.altruist.com/reference/gettimeweightedreturnsforresourcegroup-1.md
  - https://developer.altruist.com/reference/gettransferbyid-1.md
  - https://developer.altruist.com/reference/gettrustedcontact-1.md
  - https://developer.altruist.com/reference/getuserprofilebyuserid.md
  - https://developer.altruist.com/reference/getweightedmodelsforportfolio-1.md
  - https://developer.altruist.com/reference/initiateacattransfer.md
  - https://developer.altruist.com/reference/listacattransfers.md
  - https://developer.altruist.com/reference/listaccounts.md
  - https://developer.altruist.com/reference/listbanklinks.md
  - https://developer.altruist.com/reference/listbanklinksbyfundingaccount.md
  - https://developer.altruist.com/reference/listbeneficiaries.md
  - https://developer.altruist.com/reference/listbundles.md
  - https://developer.altruist.com/reference/listcashsetasides.md
  - https://developer.altruist.com/reference/listcashtransfers-1.md
  - https://developer.altruist.com/reference/listdraftsinbundle.md
  - https://developer.altruist.com/reference/listfundingeligibleaccounts.md
  - https://developer.altruist.com/reference/listhouseholdaccounts.md
  - https://developer.altruist.com/reference/listscheduledtransfers-1.md
  - https://developer.altruist.com/reference/removedraftfrombundle.md
  - https://developer.altruist.com/reference/resendacatconfirmation.md
  - https://developer.altruist.com/reference/setallocations.md
  - https://developer.altruist.com/reference/unassignaccount.md
  - https://developer.altruist.com/reference/updateaccount.md
  - https://developer.altruist.com/reference/updatebeneficiary.md
  - https://developer.altruist.com/reference/updateclientagreement-1.md
  - https://developer.altruist.com/reference/updatedraftinbundle.md
  - https://developer.altruist.com/reference/updatefundingaccount-1.md
  - https://developer.altruist.com/reference/updatehousehold.md
  - https://developer.altruist.com/reference/updatetransfer-1.md
  - https://developer.altruist.com/reference/updatetrustedcontact-1.md
  - https://developer.altruist.com/reference/updateuserprofile.md
  - https://developer.altruist.com/reference/validatecashsetaside.md
  merge:
    pages: 98
    deduped: 228
    conflicts_kept_first: 0