components: responses: {} schemas: UpdateExternalAddressRequest: additionalProperties: false properties: additional_transfer_types: items: example: solana type: string type: array bank_address: allOf: - $ref: '#/components/schemas/USStreetAddress' description: For bank (financial institution) addresses only. Supply before adding wire to additional_transfer_types. nullable: true beneficiary_address: allOf: - $ref: '#/components/schemas/USStreetAddress' description: For bank (financial institution) addresses only. Supply before adding wire to additional_transfer_types. nullable: true name: example: Company External EVM Address nullable: true type: string status: enum: - active - archived nullable: true type: string title: UpdateExternalAddressRequest type: object EndUserTosAttestation: additionalProperties: false properties: accepted_at: $ref: '#/components/schemas/DateTime' ip: example: 203.0.113.42 type: string user_agent: example: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:138.0) Gecko/20100101 Firefox/138.0 type: string version: example: '2025-04-01' type: string required: - accepted_at title: EndUserTosAttestation type: object BrandData: additionalProperties: false nullable: true properties: account_id: type: string required: - account_id title: BrandData type: object DocumentKindEnum: enum: - articles_of_incorporation - certificate_of_good_standing - ein_letter - government_photo_id - other title: DocumentKindEnum type: string CreateAutomation: additionalProperties: false properties: brand: $ref: '#/components/schemas/AutomationBrandData' destination: $ref: '#/components/schemas/AutomationDestination' name: type: string source: $ref: '#/components/schemas/AutomationSource' required: - name - source - destination title: CreateAutomation type: object AccountList: additionalProperties: false properties: accounts: items: $ref: '#/components/schemas/Account' type: array required: - accounts title: AccountList type: object Transfer: additionalProperties: false discriminator: propertyName: transferType oneOf: - $ref: '#/components/schemas/BaseTransfer' - $ref: '#/components/schemas/AutomationsTransfer' - $ref: '#/components/schemas/TransferWithWireInstructions' title: Transfer type: object WebhookReplayAccepted: additionalProperties: false properties: jobIds: description: Oban job ids for scheduled replay deliveries (one per active subscription for the event type). items: type: string type: array status: description: Replay delivery jobs were accepted for processing. enum: - queued type: string required: - status - jobIds title: WebhookReplayAccepted type: object PagingParameters: description: Paging query parameters properties: after: type: string before: type: string size: format: int32 maximum: 100 minimum: 1 type: integer title: PagingParameters type: object TokenizationTransferResponse: properties: amount: description: Amount transferred type: string created_at: format: date-time type: string destination: properties: address: description: Destination blockchain address type: string transaction_id: description: On-chain transaction hash nullable: true type: string transfer_type: description: Blockchain name type: string type: object id: description: Order ID type: string source: properties: address: description: Source blockchain address type: string transaction_id: description: On-chain transaction hash nullable: true type: string transfer_type: description: Blockchain name type: string type: object status: description: Transaction status type: string updated_at: format: date-time type: string title: TokenizationTransferResponse type: object CreateInternalBlockchainAddressRequest: additionalProperties: false properties: name: example: Company Internal EVM Address nullable: true type: string transfer_types: description: Transfer types for the custodial address. All must belong to the same environment (e.g. ["ethereum", "polygon"] for EVM). Must be non-empty. items: example: ethereum type: string type: array required: - name - transfer_types title: CreateInternalBlockchainAddressRequest type: object ThirdPartyFinancialInstitutionPaymentData: additionalProperties: false properties: address_id: type: string payment_details: allOf: - $ref: '#/components/schemas/PaymentDetails' nullable: true requested_transfer_type: nullable: true type: string transfer_type: type: string value_type: type: string wire_memo: description: OBI memo sent to the receiving bank. Applicable to wire transfers only. nullable: true type: string required: - value_type - transfer_type - financial_institution_id title: ThirdPartyFinancialInstitutionPaymentData type: object CreateWebhookSubscription: additionalProperties: false properties: events: description: Event types to subscribe to. Supports concrete types (e.g. `transfer.created`) and namespace wildcards (e.g. `transfer.*` for all transfer events). See the supported event types endpoint. items: type: string minItems: 1 type: array url: description: HTTPS URL to receive signed webhook POST requests maxLength: 2048 type: string required: - url - events title: CreateWebhookSubscription type: object AddressV2: additionalProperties: false oneOf: - $ref: '#/components/schemas/BlockchainAddressV2' - $ref: '#/components/schemas/FinancialInstitutionV2' title: AddressV2 type: object TokenizationTransfersList: description: List of tokenization transfer transactions with pagination metadata properties: pagination: type: object transfers: items: $ref: '#/components/schemas/TokenizationTransferResponse' type: array title: TokenizationTransfersList type: object AddressReference: additionalProperties: false properties: address: example: '0xb518d4d6221d9a41d23d71cbce8e106e7aab8f9b' type: string id: $ref: '#/components/schemas/ID' required: - id - address title: AddressReference type: object Individual: additionalProperties: false properties: address: $ref: '#/components/schemas/IndividualAddress' country: description: ISO 3166-1 alpha-2 country code; stored separately for AiPrise routing example: US type: string date_of_birth: description: YYYY-MM-DD example: '1990-01-31' type: string email: example: jane@example.com type: string first_name: example: Jane type: string identity: $ref: '#/components/schemas/IndividualIdentity' last_name: example: Doe type: string phone_number: example: 515-555-1212 type: string required: - first_name - last_name - date_of_birth - email - phone_number - address - country title: Individual type: object CreateExternalBlockchainAddressRequest: additionalProperties: false properties: address: example: '0xb518d4d6221d9a41d23d71cbce8e106e7aab8f9b' type: string name: example: Company External EVM Address nullable: true type: string ownership: description: Ownership type of the address enum: - self-owned - customer-owned type: string transfer_types: items: example: solana type: string type: array required: - name - address - transfer_types title: CreateExternalBlockchainAddressRequest type: object FinancialInstitutionListV2: additionalProperties: false properties: financial_institutions: items: $ref: '#/components/schemas/FinancialInstitutionV2' type: array required: - financial_institutions title: FinancialInstitutionListV2 type: object AutomationResponse: additionalProperties: false allOf: - properties: brand: $ref: '#/components/schemas/AutomationBrandData' created_at: $ref: '#/components/schemas/DateTime' destination: $ref: '#/components/schemas/AutomationDestination' id: $ref: '#/components/schemas/ID' name: type: string source: $ref: '#/components/schemas/AutomationSourceWithFundingInstructions' status: enum: - pending - active - disabled - archived type: string updated_at: $ref: '#/components/schemas/DateTime' required: - name - status - source - destination type: object title: AutomationResponse type: object AutomationSource: additionalProperties: false properties: transfer_type: type: string value_type: type: string required: - value_type title: AutomationSource type: object ControllingParty: additionalProperties: false properties: address: $ref: '#/components/schemas/USStreetAddress' dob: example: YYYY-MM-DD type: string email: example: a@b.com type: string first_name: example: John type: string last_name: example: Doe type: string ownership_percentage: example: 40 nullable: true type: number phone_number: example: 515-555-1212 type: string ssn: example: 123-45-6789 type: string required: - first_name - last_name - dob - ssn - address - email - phone_number title: ControllingParty type: object WebhookSubscription: additionalProperties: false properties: events: items: type: string type: array id: $ref: '#/components/schemas/ID' status: description: 'Subscription lifecycle: active deliveries or archived (no longer used).' enum: - active - archived type: string url: type: string required: - id - events - url - status title: WebhookSubscription type: object LinkTokenResponse: properties: callback_url: description: The URL to POST the public token tox after Plaid Link completion to register the account example: http://localhost:4000/financial_institutions/register_account type: string expiration: description: ISO 8601 timestamp when the link token expires example: '2024-01-01T12:00:00Z' type: string link_token: description: The Plaid link token for bank authentication example: link-sandbox-123456789 type: string required: - link_token - expiration - callback_url title: LinkTokenResponse type: object BaseTransfer: additionalProperties: false properties: amount: $ref: '#/components/schemas/Amount' created_at: $ref: '#/components/schemas/DateTime' destination: $ref: '#/components/schemas/PaymentDataView' failure: allOf: - $ref: '#/components/schemas/Failure' nullable: true funding_simulated: description: When true, inbound ACH funding was simulated for testnet or sandbox rather than submitted to Dwolla type: boolean id: $ref: '#/components/schemas/ID' note: type: string source: $ref: '#/components/schemas/PaymentDataView' status: enum: - pending - processing - complete - canceled - failed type: string updated_at: $ref: '#/components/schemas/DateTime' title: BaseTransfer type: object DocumentSubmissionCreated: additionalProperties: false properties: doc_submission_id: $ref: '#/components/schemas/ID' required: - doc_submission_id title: DocumentSubmissionCreated type: object PaymentData: additionalProperties: false properties: address_id: type: string financial_institution_id: type: string transfer_type: type: string value_type: type: string wire_memo: description: OBI memo sent to the receiving bank. Applicable to wire transfers only. nullable: true type: string required: - value_type - transfer_type title: PaymentData type: object TransferWithWireInstructions: allOf: - $ref: '#/components/schemas/BaseTransfer' - properties: wire_instructions: $ref: '#/components/schemas/WireInstructions' required: - wire_instructions type: object title: TransferWithWireInstructions type: object WebhookSubscriptionCreated: additionalProperties: false properties: events: items: type: string type: array id: $ref: '#/components/schemas/ID' sharedSecret: description: Signing secret (Base64 Encoded). Returned only on create; store it securely to verify signatures. type: string status: description: 'Subscription lifecycle: active deliveries or archived (no longer used).' enum: - active - archived type: string url: type: string required: - id - sharedSecret - events - url - status title: WebhookSubscriptionCreated type: object Account: properties: created: $ref: '#/components/schemas/DateTime' id: $ref: '#/components/schemas/ID' name: example: My Account type: string status: enum: - complete - pending - rejected type: string updated: $ref: '#/components/schemas/DateTime' required: - id - name - status title: Account type: object BurnResponse: properties: amount: description: Amount burned type: string created_at: format: date-time type: string id: description: Order ID type: string source: $ref: '#/components/schemas/BurnSource' status: description: Transaction status type: string updated_at: format: date-time type: string title: BurnResponse type: object FundingInstructions: additionalProperties: false properties: account_number: type: string bank_address: type: string bank_name: type: string beneficiary_address: type: string beneficiary_name: type: string routing_number: type: string required: - bank_name - bank_address - account_number - routing_number - beneficiary_name - beneficiary_address title: FundingInstructions type: object CreateExternalAddressRequest: additionalProperties: false oneOf: - $ref: '#/components/schemas/CreateExternalBlockchainAddressRequest' - $ref: '#/components/schemas/CreateExternalFinancialInstitutionRequest' title: CreateExternalAddressRequest type: object AutomationBrandData: additionalProperties: false properties: account_id: type: string required: - account_id title: AutomationBrandData type: object PaymentDataView: additionalProperties: false discriminator: propertyName: paymentDataType oneOf: - $ref: '#/components/schemas/BasePaymentData' - $ref: '#/components/schemas/FinancialInstitutionPaymentData' - $ref: '#/components/schemas/ThirdPartyFinancialInstitutionPaymentData' - $ref: '#/components/schemas/AddressPaymentData' - $ref: '#/components/schemas/AddressPaymentDataWithTransaction' title: PaymentDataView type: object BasePaymentData: additionalProperties: false properties: payment_details: allOf: - $ref: '#/components/schemas/PaymentDetails' nullable: true requested_transfer_type: nullable: true type: string transfer_type: type: string value_type: type: string required: - value_type - transfer_type title: BasePaymentData type: object WebhookEventTypeList: additionalProperties: false properties: event_types: description: Supported event types for new subscriptions, sorted by `event_type`. items: $ref: '#/components/schemas/WebhookEventType' type: array required: - event_types title: WebhookEventTypeList type: object TransfersList: description: List of transfers with pagination metadata properties: pagination: type: object transfers: items: $ref: '#/components/schemas/Transfer' type: array title: TransfersList type: object BlockchainAddressV2: properties: address: description: On-chain address value. Null for pending addresses awaiting API-gateway provisioning. example: '0xb518d4d6221d9a41d23d71cbce8e106e7aab8f9b' nullable: true type: string created: $ref: '#/components/schemas/DateTime' id: $ref: '#/components/schemas/ID' is_primary: description: Whether this is the primary custodial address for the environment nullable: true type: boolean name: example: Company External EVM Address nullable: true type: string ownership: enum: - self-owned - customer-owned type: string status: enum: - active - archived - pending type: string transfer_types: items: example: solana type: string type: array type: enum: - internal - external type: string required: - id - status - name - transfer_types title: BlockchainAddressV2 type: object Pagination: description: Pagination information for list endpoints properties: next: description: Cursor for the next page of results nullable: true type: string page_size: description: Number of items per page type: integer prev: description: Cursor for the previous page of results nullable: true type: string title: Pagination type: object UpdateWebhookSubscription: additionalProperties: false properties: events: description: When present, replaces all subscribed event types. Supports concrete types (e.g. `transfer.created`) and namespace wildcards (e.g. `transfer.*`). items: type: string nullable: true type: array url: description: HTTPS URL to receive signed webhook POST requests maxLength: 2048 nullable: true type: string title: UpdateWebhookSubscription type: object MintDestination: properties: address_id: description: Brale address ID type: string transaction_id: description: On-chain transaction hash nullable: true type: string transfer_type: description: Blockchain/chain name type: string value_type: description: Token ticker type: string required: - address_id - value_type - transfer_type title: MintDestination type: object VerificationDocumentsList: additionalProperties: false properties: account_id: $ref: '#/components/schemas/ID' available_person_labels: example: - Jane Doe items: type: string type: array documents: items: $ref: '#/components/schemas/DocumentRequirement' type: array other_documents_uploaded_count: example: 0 type: integer required: - account_id - documents - other_documents_uploaded_count - available_person_labels title: VerificationDocumentsList type: object BurnSource: properties: address_id: description: Brale address ID type: string transaction_id: description: On-chain transaction hash nullable: true type: string transfer_type: description: Blockchain/chain name type: string value_type: description: Token ticker type: string required: - address_id - value_type - transfer_type title: BurnSource type: object USStreetAddress: additionalProperties: false properties: city: example: Springfield type: string country: example: US type: string state: enum: - AL - AK - AS - AZ - AR - CA - CO - CT - DE - DC - FL - GA - GU - HI - ID - IL - IN - IA - KS - KY - LA - ME - MD - MA - MI - MN - MS - MO - MT - NE - NV - NH - NJ - NM - NY - NC - ND - MP - OH - OK - OR - PA - PR - RI - SC - SD - TN - TX - VI - UT - VT - VA - WA - WV - WI - WY type: string street_line_1: example: 100 Example St. type: string street_line_2: example: Suite 500 type: string zip: example: '90001' type: string required: - street_line_1 - city - state - zip title: USStreetAddress type: object WebhookSubscriptionList: additionalProperties: false properties: subscriptions: items: $ref: '#/components/schemas/WebhookSubscription' type: array required: - subscriptions title: WebhookSubscriptionList type: object RegisterAccountRequest: properties: customer_webhook_url: description: URL where customer will receive webhook notifications when Plaid items need updates (required for account registration) example: https://customer.com/webhooks/plaid-updates format: uri type: string public_token: description: The public token returned from Plaid Link example: public-sandbox-123456789 type: string required: - public_token - customer_webhook_url title: RegisterAccountRequest type: object UpdateAutomationStatus: additionalProperties: false properties: status: enum: - disabled - archived type: string required: - status title: UpdateAutomationStatus type: object MintsList: description: List of mint transactions with pagination metadata properties: mints: items: $ref: '#/components/schemas/MintResponse' type: array pagination: type: object title: MintsList type: object Link: additionalProperties: false example: href: /some-resource/2VZvtmVc2j3gQ80CTlcuQXbGrwC properties: href: example: /some-resource/2VZvtmVc2j3gQ80CTlcuQXbGrwC type: string required: - href title: Link type: object ApiErrorV2: additionalProperties: false properties: code: example: ValidationError type: string detail: example: A validation error occurred type: string status: example: 400 type: integer type: type: string values: items: type: string type: array required: - type title: ApiErrorV2 type: object AutomationSourceWithFundingInstructions: additionalProperties: false allOf: - $ref: '#/components/schemas/AutomationSource' - properties: funding_instructions: $ref: '#/components/schemas/FundingInstructions' type: object title: AutomationSourceWithFundingInstructions type: object CreateBurn: additionalProperties: false example: amount: '1000' note: Monthly burn for Q1 2024 source: address_id: 2zbcDT1E1K6xjuYT transfer_type: solana value_type: eSDR properties: amount: description: Amount to burn as a decimal string example: '1000.50' type: string note: maxLength: 255 type: string source: $ref: '#/components/schemas/BurnSource' required: - amount - source title: CreateBurn type: object CreateTransfer: additionalProperties: false properties: amount: $ref: '#/components/schemas/Amount' brand: $ref: '#/components/schemas/BrandData' destination: $ref: '#/components/schemas/PaymentData' note: maxLength: 255 type: string source: $ref: '#/components/schemas/PaymentData' required: - amount - source - destination title: CreateTransfer type: object Failure: additionalProperties: false properties: errors: items: $ref: '#/components/schemas/ApiError' type: array uniqueItems: true links: additionalProperties: $ref: '#/components/schemas/Link' nullable: true type: object meta: additionalProperties: type: string nullable: true type: object required: - errors title: Failure type: object DocumentRequirement: additionalProperties: false properties: display_name: example: Government-issued photo ID type: string document_kind: $ref: '#/components/schemas/DocumentKindEnum' document_type: enum: - business_document - individual_document - misc_document type: string person_label: example: Jane Doe nullable: true type: string status: enum: - pending_upload - uploaded type: string required: - document_kind - document_type - display_name - status title: DocumentRequirement type: object WebhookDeliveryLog: additionalProperties: false properties: attempt_number: minimum: 1 type: integer event_id: description: Envelope id for the event (e.g. payment id for `payment.completed`, transfer / order id for `transfer.completed`, `transfer.canceled`, or `transfer.created`). type: string failure_message: description: Present when the attempt failed. nullable: true type: string id: $ref: '#/components/schemas/ID' inserted_at: $ref: '#/components/schemas/DateTime' status_code: description: HTTP status as string, or a short code such as `request_timeout`. type: string subscription_id: $ref: '#/components/schemas/ID' required: - id - event_id - subscription_id - attempt_number - status_code - inserted_at title: WebhookDeliveryLog type: object CreateLinkTokenRequest: properties: android_package_name: description: Android package name for OAuth return-to-app. Must be pre-registered for the account and allowlisted in Plaid Dashboard. Required for Android OAuth flows. Cannot be used with redirect_uri. example: com.example.myapp type: string date_of_birth: description: User's date of birth (optional) example: '1990-01-01' type: string email_address: description: User's email address (optional) example: user@example.com type: string legal_name: description: User's legal name (optional) example: John Doe type: string phone_number: description: User's phone number (optional) example: '+1234567890' type: string redirect_uri: description: Universal link for iOS OAuth return-to-app. Must be pre-registered for the account and allowlisted in Plaid Dashboard. Required for iOS OAuth flows. Cannot be used with android_package_name. example: https://app.example.com/plaid-oauth format: uri type: string title: CreateLinkTokenRequest type: object TransferSource: properties: address_id: description: Source Brale address ID type: string transaction_id: description: On-chain transaction hash nullable: true type: string transfer_type: description: Blockchain/chain name type: string value_type: description: Token ticker type: string required: - address_id - value_type - transfer_type title: TransferSource type: object RegisterAccountAddressResponse: properties: address_id: description: The ID of the created address example: addr_123456789 type: string required: - address_id title: RegisterAccountAddressResponse type: object TransferDestination: properties: address_id: description: Destination Brale address ID type: string transaction_id: description: On-chain transaction hash nullable: true type: string transfer_type: description: Blockchain/chain name type: string value_type: description: Token ticker type: string required: - address_id - value_type - transfer_type title: TransferDestination type: object PaymentDetails: additionalProperties: false properties: fallback_at: format: date-time nullable: true type: string fallback_reason: nullable: true type: string fallback_reason_code: nullable: true type: string imad: nullable: true type: string original_transfer_type: nullable: true type: string payment_reference: nullable: true type: string received_at: format: date-time nullable: true type: string sender_bank_name: nullable: true type: string sender_bank_routing_number: nullable: true type: string sender_name: nullable: true type: string sent_at: format: date-time nullable: true type: string trace_number: nullable: true type: string title: PaymentDetails type: object AutomationsTransfer: allOf: - $ref: '#/components/schemas/BaseTransfer' - properties: automation_id: type: string required: - automation_id type: object title: AutomationsTransfer type: object IndividualIdentity: additionalProperties: false properties: number: description: The identity number. example: 123-45-6789 type: string type: description: The identity number type. enum: - SSN9 - SSN4 - DRIVER_LICENSE - PASSPORT - NATIONAL_ID - VOTER_ID - BVN - NIN - NIN_SLIP - SSNIT - TAX_ID - KENYA_KRA_PIN - ALIEN_CARD - RESIDENT_ID - COLOMBIA_PPT_NUMBER - GHANA_CARD_NUMBER example: SSN9 type: string required: - number - type title: IndividualIdentity type: object AddressListV2: additionalProperties: false properties: addresses: items: $ref: '#/components/schemas/AddressV2' type: array pagination: allOf: - $ref: '#/components/schemas/Pagination' nullable: true required: - addresses title: AddressListV2 type: object RegisterAccountWithTransferTypesRequest: properties: customer_webhook_url: description: URL where customer will receive webhook notifications when Plaid items need updates (required for account registration) example: https://customer.com/webhooks/plaid-updates format: uri type: string ownership: description: Ownership type of the financial institution. Defaults to third_party when not provided. enum: - first_party - third_party type: string public_token: description: The public token returned from Plaid Link example: public-sandbox-123456789 type: string transfer_types: description: Transfer types to support for this financial institution example: - ach_credit - wire items: example: ach_credit type: string minItems: 1 type: array required: - public_token - customer_webhook_url - transfer_types title: RegisterAccountWithTransferTypesRequest type: object AddressBalance: additionalProperties: false properties: address: $ref: '#/components/schemas/AddressReference' balance: $ref: '#/components/schemas/Amount' transfer_type: example: Solana type: string value_type: example: USDC type: string required: - value - currency title: AddressBalance type: object CreateTokenizationTransfer: additionalProperties: false example: amount: '3200' destination: address_id: 36FkHXYoAJo6QVQSHJ37Nmbaaaa transfer_type: solana value_type: eSDR source: address_id: 36FkHXYoAJo6QVQSHJ37NmbisZx transfer_type: solana value_type: eSDR properties: amount: description: Amount to transfer as a decimal string example: '3200' type: string destination: $ref: '#/components/schemas/TransferDestination' source: $ref: '#/components/schemas/TransferSource' required: - amount - source - destination title: CreateTokenizationTransfer type: object CreateAccountRequest: additionalProperties: false properties: account_type: default: custodial enum: - custodial - transactional type: string address: $ref: '#/components/schemas/USStreetAddress' beneficial_owners: items: $ref: '#/components/schemas/ControllingParty' nullable: true type: array business_controller: $ref: '#/components/schemas/ControllingParty' business_name: example: My Customer type: string doc_submission_ids: description: Optional staged document submission IDs to link at account creation items: $ref: '#/components/schemas/ID' nullable: true type: array ein: example: '123456789' type: string email: example: a@b.com type: string entity_type: default: business enum: - business - individual type: string individual: $ref: '#/components/schemas/Individual' phone_number: example: 515-555-1212 nullable: true type: string tos_attestation: $ref: '#/components/schemas/EndUserTosAttestation' verification_mode: default: standard enum: - standard - reliance - bypass type: string website: example: https://example.com type: string title: CreateAccountRequest type: object ApiError: additionalProperties: false properties: code: example: ValidationError type: string detail: nullable: true type: string id: nullable: true type: string links: additionalProperties: $ref: '#/components/schemas/Link' nullable: true type: object meta: additionalProperties: type: string nullable: true type: object source: nullable: true properties: parameter: example: page[cursor] type: string pointer: example: /body/data/attributes type: string type: object status: example: '400' type: string title: example: A validation error occurred type: string title: ApiError type: object WebhookEventType: additionalProperties: false properties: event_type: description: Wire string to pass in `POST .../webhooks` body `events`. type: string summary: description: Human-readable description of when this event fires. type: string required: - event_type - summary title: WebhookEventType type: object AddressPaymentData: additionalProperties: false properties: address_id: type: string transfer_type: type: string value_type: type: string required: - value_type - transfer_type - address_id title: AddressPaymentData type: object FinancialInstitutionPaymentData: additionalProperties: false properties: financial_institution_id: type: string payment_details: allOf: - $ref: '#/components/schemas/PaymentDetails' nullable: true requested_transfer_type: nullable: true type: string transfer_type: type: string value_type: type: string wire_memo: description: OBI memo sent to the receiving bank. Applicable to wire transfers only. nullable: true type: string required: - value_type - transfer_type - financial_institution_id title: FinancialInstitutionPaymentData type: object RegisterAccountResponse: properties: financial_institution_id: description: The ID of the created financial institution example: fi_123456789 type: string required: - financial_institution_id title: RegisterAccountResponse type: object FinancialInstitutionV2: properties: account_number: description: 'Masked account number showing only last 4 digits for security (format: ****1234). Full number never returned.' example: '****1234' nullable: true type: string account_type: enum: - checking - savings example: checking nullable: true type: string bank_address: allOf: - $ref: '#/components/schemas/USStreetAddress' nullable: true beneficiary_address: allOf: - $ref: '#/components/schemas/USStreetAddress' nullable: true created: $ref: '#/components/schemas/DateTime' id: $ref: '#/components/schemas/ID' last_updated: description: Last update timestamp example: '2024-01-15T10:30:00Z' format: date_time type: string name: example: First Last Bank nullable: true type: string needs_update: description: Whether this FI needs Plaid reauthorization example: false type: boolean owner: description: Beneficiary name for wire transfers (maps from POST request owner field) example: Jane Doe nullable: true type: string ownership: description: Ownership type of the financial institution enum: - self-owned - customer-owned example: customer-owned type: string routingNumber: example: '123456789' type: string status: enum: - active - archived type: string transfer_types: items: example: ach_debit type: string nullable: true type: array required: - id - name - routingNumber - status - created title: FinancialInstitutionV2 type: object CreateExternalFinancialInstitutionRequest: additionalProperties: false properties: account_number: example: '123456789' type: string account_type: example: checking type: string bank_address: allOf: - $ref: '#/components/schemas/USStreetAddress' description: Bank street address. Optional for ach_credit, same_day_ach_credit, and rtp_credit. Required when transfer_types includes wire. nullable: true beneficiary_address: allOf: - $ref: '#/components/schemas/USStreetAddress' description: Beneficiary street address. Optional for ach_credit, same_day_ach_credit, and rtp_credit. Required when transfer_types includes wire. nullable: true name: example: First Last Bank type: string owner: example: Jane Doe type: string ownership: description: Ownership type of the financial institution enum: - self-owned - customer-owned example: customer-owned type: string routing_number: example: '123456789' type: string transfer_types: description: Transfer types to support for this financial institution. When wire is included, bank_address and beneficiary_address are required. example: - ach_credit - wire items: example: ach_debit type: string minItems: 1 type: array required: - owner - account_number - routing_number - account_type - transfer_types title: CreateExternalFinancialInstitutionRequest type: object IndividualAddress: additionalProperties: false properties: city: example: London type: string country: example: GB type: string state: description: State, province, or region (free-form; not US-only) example: England type: string street_line_1: example: 10 Downing St type: string street_line_2: example: Flat 2 type: string zip: description: Postal code (any format) example: SW1A 2AA type: string required: - street_line_1 - city - state - zip title: IndividualAddress type: object AutomationDestination: additionalProperties: false properties: address_id: type: string financial_institution_id: type: string transfer_type: type: string value_type: type: string required: - value_type - transfer_type title: AutomationDestination type: object WebhookDeliveryLogList: additionalProperties: false properties: deliveries: description: Delivery attempts, newest `inserted_at` first. items: $ref: '#/components/schemas/WebhookDeliveryLog' type: array pagination: $ref: '#/components/schemas/Pagination' required: - deliveries - pagination title: WebhookDeliveryLogList type: object Amount: additionalProperties: false properties: currency: example: USD type: string value: example: '11234.88' type: string required: - value - currency title: Amount type: object CreateMint: additionalProperties: false properties: amount: description: Amount to mint as a decimal string type: string destination: $ref: '#/components/schemas/MintDestination' required: - amount - destination title: CreateMint type: object AddressPaymentDataWithTransaction: additionalProperties: false properties: address_id: type: string transaction_id: type: string transfer_type: type: string value_type: type: string required: - value_type - transfer_type - address_id title: AddressPaymentDataWithTransaction type: object MintResponse: properties: amount: description: Amount minted type: string created_at: format: date-time type: string destination: $ref: '#/components/schemas/MintDestination' id: description: Order ID type: string status: description: Transaction status type: string updated_at: format: date-time type: string title: MintResponse type: object WireInstructions: additionalProperties: false properties: account_number: type: string bank_address: type: string bank_name: type: string beneficiary_address: type: string beneficiary_name: type: string memo: type: string routing_number: type: string required: - bank_name - bank_address - account_number - routing_number - beneficiary_name - beneficiary_address title: WireInstructions type: object ID: description: ID of the resource example: 2VZvtmVc2j3gQ80CTlcuQXbGrwC title: ID type: string DateTime: description: ISO-8601 timestamp that includes date and time example: '2020-01-01T12:00:00Z' format: date-time title: DateTime type: string FinancialInstitutionStatusResponse: properties: financial_institution_id: description: The ID of the financial institution example: fi_123456789 type: string last_updated: description: Last update timestamp example: '2024-01-15T10:30:00Z' format: date_time type: string needs_update: description: Whether this FI needs Plaid reauthorization example: false type: boolean status: description: Current FI status enum: - active - archived example: active type: string required: - needs_update - status - last_updated title: FinancialInstitutionStatusResponse type: object BurnsList: description: List of burn transactions with pagination metadata properties: burns: items: $ref: '#/components/schemas/BurnResponse' type: array pagination: type: object title: BurnsList type: object PatchAccountDocumentsRequest: additionalProperties: false properties: doc_submission_ids: items: $ref: '#/components/schemas/ID' minItems: 1 type: array required: - doc_submission_ids title: PatchAccountDocumentsRequest type: object securitySchemes: oauth: flows: clientCredentials: scopes: addresses:read: Read address details financial-institutions:read: Read financial institution details mints:write: Mint more of a specific token on chain orders:read: Read order details redemptions:write: Redeem/burn a particular token on a specific chain self_attested_tokens:burn: Burn attested tokens (tokenization accounts only) self_attested_tokens:mint: Mint attested tokens (tokenization accounts only) self_attested_tokens:transfer: Transfer attested tokens (tokenization accounts only) tokens:read: Read token details webhooks:read: Read webhook subscriptions webhooks:write: Create and manage webhook subscriptions tokenUrl: https://auth.brale.xyz/oauth2/token type: oauth2 info: contact: email: support@brale.xyz name: Brale API Support description: Update this with a description. Can we use markdown in this section? termsOfService: https://brale.xyz/legal title: Brale API version: '1.0' openapi: 3.0.3 paths: /accounts/{account_id}/financial-institutions/{fi_id}/status: get: callbacks: {} operationId: get_financial_institution_status parameters: - description: Account ID in: path name: account_id required: true schema: $ref: '#/components/schemas/ID' - description: Financial Institution ID in: path name: fi_id required: true schema: $ref: '#/components/schemas/ID' responses: '200': content: application/json: schema: $ref: '#/components/schemas/FinancialInstitutionStatusResponse' description: OK '401': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Unauthorized '403': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Forbidden '404': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Not Found security: - oauth: - financial-institutions:read summary: Get financial institution status and update requirements tags: - Financial Institutions /accounts/{account_id}/webhooks/deliveries: get: callbacks: {} description: Returns outbound delivery attempts for webhook subscriptions owned by the account, newest first, with cursor pagination (`page[size]`, and either `page[after]` or `page[before]` — not both). operationId: list_webhook_deliveries parameters: - description: Account ID in: path name: account_id required: true schema: $ref: '#/components/schemas/ID' - description: Paging query parameters in: query name: page required: false schema: $ref: '#/components/schemas/PagingParameters' responses: '200': content: application/json: schema: $ref: '#/components/schemas/WebhookDeliveryLogList' description: OK '400': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Bad Request '401': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Unauthorized '403': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Forbidden '404': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Not Found security: - oauth: - webhooks:read summary: List webhook delivery logs tags: - Webhooks /accounts/{account_id}/financial-institutions: get: callbacks: {} description: Returns all financial institutions you have added to your account to receive wired funds. operationId: list_account_financial_institutions parameters: - description: Account ID in: path name: account_id required: true schema: $ref: '#/components/schemas/ID' responses: '200': content: application/json: schema: $ref: '#/components/schemas/FinancialInstitutionListV2' description: OK '401': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Unauthorized '403': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Forbidden security: - oauth: - financial-institutions:read summary: List financial institutions V2 tags: - Financial Institutions /accounts/{account_id}/plaid/register-account: post: callbacks: {} description: Registers a financial institution account using Plaid public token and returns the address ID operationId: register_account_to_address_id parameters: - description: Account ID in: path name: account_id required: true schema: $ref: '#/components/schemas/ID' requestBody: content: application/json: schema: $ref: '#/components/schemas/RegisterAccountWithTransferTypesRequest' description: Register account request body required: true responses: '201': content: application/json: schema: $ref: '#/components/schemas/RegisterAccountAddressResponse' description: Created headers: location: schema: type: string style: simple '400': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Bad Request '401': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Unauthorized '403': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Forbidden '404': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Not Found '409': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Conflict '500': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Unknown security: - oauth: - financial-institutions:write summary: Register financial institution account via Plaid and return address ID tags: - Financial Institutions /accounts/{account_id}/tokens/mints: get: callbacks: {} description: List all mint transactions for a tokenization account. Supports pagination and filtering. operationId: list_mints parameters: - description: Account ID in: path name: account_id required: true schema: $ref: '#/components/schemas/ID' - description: Paging query parameters in: query name: page required: false schema: $ref: '#/components/schemas/PagingParameters' - description: Filter by on-chain transaction hash in: query name: transaction_id required: false schema: type: string - description: Filter by token ticker in: query name: value_type required: false schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/MintsList' description: OK '401': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Unauthorized '403': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Forbidden '404': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Not Found security: - oauth: - self_attested_tokens:read summary: List Mints tags: - Orders post: callbacks: {} description: Mint (create) new tokens. Only available for tokenization/self-attested accounts. operationId: create_mint parameters: - description: Account ID in: path name: account_id required: true schema: $ref: '#/components/schemas/ID' requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateMint' description: Mint request body required: true responses: '201': content: application/json: schema: $ref: '#/components/schemas/MintResponse' description: OK '400': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Bad Request '401': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Unauthorized '403': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Forbidden security: - oauth: - self_attested_tokens:mint summary: Mint Tokens tags: - Orders /accounts/{account_id}/automations/{automation_id}: get: callbacks: {} description: Get Automation operationId: get_automation parameters: - description: Account ID in: path name: account_id required: true schema: $ref: '#/components/schemas/ID' - description: Automation ID in: path name: automation_id required: true schema: $ref: '#/components/schemas/ID' responses: '200': content: application/json: schema: $ref: '#/components/schemas/AutomationResponse' description: OK '400': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Bad Request '404': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Not Found security: - oauth: - automations:read summary: Get Automation tags: - Automations patch: callbacks: {} description: Disable or archive an Automation operationId: update_automation_status parameters: - description: Account ID in: path name: account_id required: true schema: $ref: '#/components/schemas/ID' - description: Automation ID in: path name: automation_id required: true schema: $ref: '#/components/schemas/ID' requestBody: content: application/json: schema: $ref: '#/components/schemas/UpdateAutomationStatus' description: Update Automation Status request body required: true responses: '200': content: application/json: schema: $ref: '#/components/schemas/AutomationResponse' description: OK '400': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Bad Request '401': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Unauthorized '403': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Forbidden '404': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Not Found '422': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Unprocessable Entity '502': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Upstream service error security: - oauth: - automations:write summary: Update Automation Status tags: - Automations /accounts: get: callbacks: {} operationId: list_accounts parameters: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/AccountList' description: OK '401': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Unauthorized '403': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Forbidden '404': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Not Found security: - oauth: - accounts:read summary: List accounts managed by organization tags: - Accounts post: callbacks: {} operationId: create_account parameters: [] requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateAccountRequest' description: Create account request body (business or individual) required: true responses: '200': content: application/json: schema: $ref: '#/components/schemas/Account' description: OK '400': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Bad Request '401': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Unauthorized '403': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Forbidden '404': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Not Found '422': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Unprocessable Entity security: - oauth: - accounts:write summary: Creates an account managed by organization tags: - Accounts /accounts/{account_id}/verification/documents: get: callbacks: {} operationId: list_verification_documents parameters: - description: Account ID in: path name: account_id required: true schema: $ref: '#/components/schemas/ID' responses: '200': content: application/json: schema: $ref: '#/components/schemas/VerificationDocumentsList' description: OK '401': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Unauthorized '403': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Forbidden '404': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Not Found security: - oauth: - accounts:read summary: List required verification documents tags: - Accounts /accounts/{account_id}/financial-institutions/register-account: post: callbacks: {} description: Registers a financial institution account using Plaid public token operationId: register_account parameters: - description: Account ID in: path name: account_id required: true schema: $ref: '#/components/schemas/ID' requestBody: content: application/json: schema: $ref: '#/components/schemas/RegisterAccountRequest' description: Register account request body required: true responses: '200': content: application/json: schema: $ref: '#/components/schemas/RegisterAccountResponse' description: OK '400': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Bad Request '401': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Unauthorized '403': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Forbidden '404': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Not Found '409': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Conflict '500': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Unknown security: - oauth: - financial-institutions:write summary: Register financial institution account tags: - Financial Institutions /accounts/{account_id}/tokens/transfers: get: callbacks: {} description: List all tokenization transfer transactions for a tokenization account. Supports pagination and filtering. operationId: list_tokenization_transfers parameters: - description: Account ID in: path name: account_id required: true schema: $ref: '#/components/schemas/ID' - description: Paging query parameters in: query name: page required: false schema: $ref: '#/components/schemas/PagingParameters' - description: Filter by on-chain transaction hash in: query name: transaction_id required: false schema: type: string - description: Filter by token ticker in: query name: value_type required: false schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/TokenizationTransfersList' description: OK '401': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Unauthorized '403': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Forbidden '404': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Not Found security: - oauth: - self_attested_tokens:read summary: List Tokenization Transfers tags: - Orders post: callbacks: {} description: Transfer attested tokens between addresses on the same blockchain. Only available for tokenization/self-attested accounts. operationId: create_tokenization_transfer parameters: - description: Account ID in: path name: account_id required: true schema: $ref: '#/components/schemas/ID' requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateTokenizationTransfer' description: Transfer request body required: true responses: '201': content: application/json: schema: $ref: '#/components/schemas/TokenizationTransferResponse' description: OK '400': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Bad Request '401': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Unauthorized '403': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Forbidden security: - oauth: - self_attested_tokens:transfer summary: Transfer Tokens tags: - Orders /accounts/{account_id}/webhooks/subscriptions/{subscription_id}: delete: callbacks: {} description: Sets an **active** subscription to **archived** so it no longer receives webhooks. Event subscriptions and delivery history are retained. Returns **409** if the subscription is already archived. operationId: delete_webhook_subscription parameters: - description: Account ID in: path name: account_id required: true schema: $ref: '#/components/schemas/ID' - description: Webhook subscription ID in: path name: subscription_id required: true schema: $ref: '#/components/schemas/ID' responses: '204': description: No Content '401': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Unauthorized '403': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Forbidden '404': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Not Found '409': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Conflict security: - oauth: - webhooks:write summary: Archive webhook subscription tags: - Webhooks patch: callbacks: {} description: Updates URL and/or subscribed event types for an **active** subscription. When `events` is sent, it replaces the full set. **Archived** subscriptions return **409**. operationId: update_webhook_subscription parameters: - description: Account ID in: path name: account_id required: true schema: $ref: '#/components/schemas/ID' - description: Webhook subscription ID in: path name: subscription_id required: true schema: $ref: '#/components/schemas/ID' requestBody: content: application/json: schema: $ref: '#/components/schemas/UpdateWebhookSubscription' description: Update webhook subscription required: true responses: '200': content: application/json: schema: $ref: '#/components/schemas/WebhookSubscription' description: OK '400': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Bad Request '401': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Unauthorized '403': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Forbidden '404': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Not Found '409': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Conflict '422': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Unprocessable Entity security: - oauth: - webhooks:write - webhooks:read summary: Update webhook subscription tags: - Webhooks /accounts/{account_id}/tokens/burns: get: callbacks: {} description: List all burn transactions for a tokenization account. Supports pagination and filtering. operationId: list_burns parameters: - description: Account ID in: path name: account_id required: true schema: $ref: '#/components/schemas/ID' - description: Paging query parameters in: query name: page required: false schema: $ref: '#/components/schemas/PagingParameters' - description: Filter by on-chain transaction hash in: query name: transaction_id required: false schema: type: string - description: Filter by token ticker in: query name: value_type required: false schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/BurnsList' description: OK '401': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Unauthorized '403': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Forbidden '404': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Not Found security: - oauth: - self_attested_tokens:read summary: List Burns tags: - Orders post: callbacks: {} description: Burn (destroy) tokens from an address. Only available for tokenization/self-attested accounts. operationId: create_burn parameters: - description: Account ID in: path name: account_id required: true schema: $ref: '#/components/schemas/ID' requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateBurn' description: Burn request body required: true responses: '201': content: application/json: schema: $ref: '#/components/schemas/BurnResponse' description: OK '400': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Bad Request '401': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Unauthorized '403': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Forbidden security: - oauth: - self_attested_tokens:burn summary: Burn Tokens tags: - Orders /accounts/{account_id}/transfers: get: callbacks: {} description: Returns all transfers for the specified account. operationId: list_transfers parameters: - description: Account ID in: path name: account_id required: true schema: $ref: '#/components/schemas/ID' - description: Paging query parameters in: query name: page required: false schema: $ref: '#/components/schemas/PagingParameters' - description: On-chain transaction hash in: query name: transaction_id required: false schema: type: string - description: Filter transfers created by a specific automation in: query name: automation_id required: false schema: type: string - description: Filter transfers by status in: query name: status required: false schema: enum: - pending - processing - complete - canceled type: string - description: Filter transfers by address ID in: query name: address_id required: false schema: type: string - description: Filter transfers by blockchain chain (e.g. solana, base, ethereum). Fiat payment types (e.g. same_day_ach_credit, wire) are not supported as filter values. in: query name: transfer_type required: false schema: type: string - description: Filter transfers by token ticker (e.g. USDC, SBC) in: query name: value_type required: false schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/TransfersList' description: OK '400': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Bad Request '401': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Unauthorized '403': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Forbidden '404': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Not Found '500': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Unknown security: - oauth: - transfers:read summary: List transfers for an account tags: - Orders post: callbacks: {} description: Create Transfer operationId: create_transfer parameters: - description: Account ID in: path name: account_id required: true schema: $ref: '#/components/schemas/ID' requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateTransfer' description: Create transfer request body required: true responses: '201': content: application/json: schema: $ref: '#/components/schemas/Transfer' description: OK '400': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Bad Request '401': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Unauthorized '403': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Forbidden security: - oauth: - transfers:write summary: Create Transfer tags: - Orders /accounts/{account_id}/financial-institutions/{fi_id}/update-link-token: post: callbacks: {} operationId: create_update_link_token (2) parameters: - description: Account ID in: path name: account_id required: true schema: $ref: '#/components/schemas/ID' - description: Financial Institution ID in: path name: fi_id required: true schema: $ref: '#/components/schemas/ID' requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateLinkTokenRequest' description: Update link token request body required: false responses: '200': content: application/json: schema: $ref: '#/components/schemas/LinkTokenResponse' description: OK '400': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Bad Request '401': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Unauthorized '403': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Forbidden '404': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Not Found security: - oauth: - financial-institutions:read summary: Create update link token for existing financial institution tags: - Financial Institutions /accounts/{account_id}/addresses: get: callbacks: {} description: Returns wallet addresses associated with your account, including custodial wallets and EOAs. Archived custodial (internal) addresses are omitted. operationId: list_account_addresses parameters: - description: Account ID in: path name: account_id required: true schema: $ref: '#/components/schemas/ID' - description: Filter by onchain address (case-insensitive) in: query name: address required: false schema: example: '0xb518d4d6221d9a41d23d71cbce8e106e7aab8f9b' type: string - description: Filter by address type in: query name: type required: false schema: enum: - internal - external example: internal type: string - description: Filter by transfer type (can be specified multiple times for OR logic) in: query name: transfer_type required: false schema: example: ethereum type: string - description: Pagination parameters in: query name: page required: false schema: $ref: '#/components/schemas/PagingParameters' responses: '200': content: application/json: schema: $ref: '#/components/schemas/AddressListV2' description: OK '400': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Bad Request '401': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Unauthorized '403': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Forbidden security: - oauth: - addresses:read summary: List addresses for account tags: - Addresses /accounts/{account_id}/plaid/link_token: post: callbacks: {} description: Creates a Plaid link token for bank authentication operationId: create_plaid_link_token (2) parameters: - description: Account ID in: path name: account_id required: true schema: $ref: '#/components/schemas/ID' requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateLinkTokenRequest' description: Create link token request body required: true responses: '200': content: application/json: schema: $ref: '#/components/schemas/LinkTokenResponse' description: OK '400': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Bad Request '401': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Unauthorized '403': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Forbidden '404': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Not Found '500': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Unknown security: - oauth: - financial-institutions:write summary: Create Plaid link token tags: - Financial Institutions /accounts/{account_id}/webhooks/{subscription_id}: get: callbacks: {} operationId: get_webhook_subscription parameters: - description: Account ID in: path name: account_id required: true schema: $ref: '#/components/schemas/ID' - description: Webhook subscription ID in: path name: subscription_id required: true schema: $ref: '#/components/schemas/ID' responses: '200': content: application/json: schema: $ref: '#/components/schemas/WebhookSubscription' description: OK '401': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Unauthorized '403': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Forbidden '404': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Not Found security: - oauth: - webhooks:read summary: Get webhook subscription tags: - Webhooks /accounts/{account_id}/webhooks: get: callbacks: {} operationId: list_webhook_subscriptions parameters: - description: Account ID in: path name: account_id required: true schema: $ref: '#/components/schemas/ID' responses: '200': content: application/json: schema: $ref: '#/components/schemas/WebhookSubscriptionList' description: OK '401': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Unauthorized '403': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Forbidden '404': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Not Found security: - oauth: - webhooks:read summary: List webhook subscriptions tags: - Webhooks post: callbacks: {} description: Registers a destination URL and one or more event types. The signing secret is returned once in the response. operationId: create_webhook_subscription parameters: - description: Account ID in: path name: account_id required: true schema: $ref: '#/components/schemas/ID' requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateWebhookSubscription' description: Create webhook subscription required: true responses: '201': content: application/json: schema: $ref: '#/components/schemas/WebhookSubscriptionCreated' description: Created headers: location: schema: type: string style: simple '400': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Bad Request '401': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Unauthorized '403': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Forbidden '404': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Not Found '422': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Unprocessable Entity security: - oauth: - webhooks:write - webhooks:read summary: Create webhook subscription tags: - Webhooks /accounts/{account_id}/addresses/{address_id}: get: callbacks: {} operationId: get_account_address parameters: - description: Account ID in: path name: account_id required: true schema: $ref: '#/components/schemas/ID' - description: Address ID in: path name: address_id required: true schema: $ref: '#/components/schemas/ID' responses: '200': content: application/json: schema: $ref: '#/components/schemas/AddressV2' description: OK '401': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Unauthorized '403': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Forbidden '404': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Not Found '500': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Unknown security: - oauth: - addresses:read summary: Get individual address for account tags: - Addresses patch: callbacks: {} operationId: update_account_address parameters: - description: Account ID in: path name: account_id required: true schema: $ref: '#/components/schemas/ID' - description: Address ID in: path name: address_id required: true schema: $ref: '#/components/schemas/ID' requestBody: content: application/json: schema: $ref: '#/components/schemas/UpdateExternalAddressRequest' description: Update address request body required: true responses: '200': content: application/json: schema: $ref: '#/components/schemas/AddressV2' description: OK '400': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Bad Request '401': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Unauthorized '403': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Forbidden '404': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Not Found '500': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Unknown security: - oauth: - addresses:write summary: Update address details for an account tags: - Addresses /documents: post: callbacks: {} operationId: create_document_submission parameters: [] requestBody: content: multipart/form-data: schema: properties: document_kind: $ref: '#/components/schemas/DocumentKindEnum' file: format: binary type: string person_label: nullable: true type: string required: - file - document_kind type: object description: Document submission upload required: true responses: '201': content: application/json: schema: $ref: '#/components/schemas/DocumentSubmissionCreated' description: Created headers: location: schema: type: string style: simple '400': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Bad Request '401': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Unauthorized '403': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Forbidden security: - oauth: - accounts:write summary: Stage a verification document for later linking tags: - Accounts /accounts/{account_id}/financial-institutions/external: post: callbacks: {} description: Creates a record of an external financial institution that can be used to receive funds. operationId: create_external_financial_institution parameters: - description: Account ID in: path name: account_id required: true schema: $ref: '#/components/schemas/ID' requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateExternalFinancialInstitutionRequest' description: Create external financial institution request body required: true responses: '201': content: application/json: schema: $ref: '#/components/schemas/FinancialInstitutionV2' description: OK '400': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Bad Request '401': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Unauthorized '403': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Forbidden '404': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Not Found '409': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Conflict '500': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Unknown security: - oauth: - financial-institutions:write summary: Create External financial institution tags: - Financial Institutions /accounts/{account_id}: get: callbacks: {} operationId: get_account parameters: - description: Account ID in: path name: account_id required: true schema: $ref: '#/components/schemas/ID' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Account' description: OK '401': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Unauthorized '403': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Forbidden '404': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Not Found security: - oauth: - accounts:read summary: Get individual account tags: - Accounts patch: callbacks: {} operationId: patch_account_documents parameters: - description: Account ID in: path name: account_id required: true schema: $ref: '#/components/schemas/ID' requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchAccountDocumentsRequest' description: Patch account documents request body required: true responses: '200': content: application/json: schema: $ref: '#/components/schemas/Account' description: OK '400': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Bad Request '401': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Unauthorized '403': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Forbidden '404': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Not Found '422': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Unprocessable Entity security: - oauth: - accounts:write summary: Link staged verification documents to an account tags: - Accounts /accounts/{account_id}/automations: get: callbacks: {} description: Get Automations operationId: get_automations parameters: - description: Account ID in: path name: account_id required: true schema: $ref: '#/components/schemas/ID' responses: '200': content: application/json: schema: $ref: '#/components/schemas/AutomationResponse' description: OK '400': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Bad Request '404': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Not Found security: - oauth: - automations:read summary: Get Automations tags: - Automations post: callbacks: {} description: Create Automation operationId: create_automation parameters: - description: Account ID in: path name: account_id required: true schema: $ref: '#/components/schemas/ID' requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateAutomation' description: Create Automation request body required: true responses: '201': content: application/json: schema: $ref: '#/components/schemas/AutomationResponse' description: OK '400': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Bad Request '401': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Unauthorized '403': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Forbidden '404': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Not Found security: - oauth: - automations:write summary: Create Automation tags: - Automations /accounts/{account_id}/addresses/{address_id}/update-link-token: post: callbacks: {} operationId: create_update_link_token parameters: - description: Account ID in: path name: account_id required: true schema: $ref: '#/components/schemas/ID' - description: Financial Institution ID in: path name: fi_id required: true schema: $ref: '#/components/schemas/ID' requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateLinkTokenRequest' description: Update link token request body required: false responses: '200': content: application/json: schema: $ref: '#/components/schemas/LinkTokenResponse' description: OK '400': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Bad Request '401': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Unauthorized '403': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Forbidden '404': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Not Found security: - oauth: - financial-institutions:read summary: Create update link token for existing financial institution tags: - Financial Institutions /accounts/{account_id}/webhooks/events/{event_id}/resend: post: callbacks: {} description: Queues one outbound replay delivery job per **active** webhook subscription for this account that subscribes to the event type of the given **`event_id`** (canonical envelope id; e.g. payment id for `payment.completed`, order id for `transfer.completed`, `transfer.canceled`, or `transfer.failed`). Requires **`Idempotency-Key`**. Payload is taken from `webhook_event_payloads` when present, otherwise rebuilt from domain data. operationId: replay_webhook_event parameters: - description: Account ID in: path name: account_id required: true schema: $ref: '#/components/schemas/ID' - description: Canonical webhook event id (envelope `id`; e.g. payment id for `payment.completed`, order id for transfer events) in: path name: event_id required: true schema: $ref: '#/components/schemas/ID' responses: '202': content: application/json: schema: $ref: '#/components/schemas/WebhookReplayAccepted' description: Accepted headers: content-location: schema: type: string style: simple '400': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Bad Request '401': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Unauthorized '403': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Forbidden '404': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Not Found '503': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Service Unavailable security: - oauth: - webhooks:write - webhooks:read summary: Replay webhook deliveries for an event tags: - Webhooks /accounts/{account_id}/tokens/mints/{mint_id}: get: callbacks: {} description: Retrieve a specific mint transaction by ID. operationId: get_mint parameters: - description: Account ID in: path name: account_id required: true schema: $ref: '#/components/schemas/ID' - description: Mint ID in: path name: mint_id required: true schema: $ref: '#/components/schemas/ID' responses: '200': content: application/json: schema: $ref: '#/components/schemas/MintResponse' description: OK '401': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Unauthorized '403': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Forbidden '404': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Not Found security: - oauth: - self_attested_tokens:read summary: Get Mint tags: - Orders /accounts/{account_id}/addresses/internal: post: callbacks: {} description: Provisions a new custodial (internal) address for the given account and environment. The first custodial address created for an account/environment combination is marked as primary. operationId: create_internal_address parameters: - description: Account ID in: path name: account_id required: true schema: $ref: '#/components/schemas/ID' requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateInternalBlockchainAddressRequest' description: Create internal address request body required: true responses: '201': content: application/json: schema: $ref: '#/components/schemas/AddressV2' description: OK '400': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Bad Request '401': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Unauthorized '403': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Forbidden '404': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Not Found '500': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Unknown security: - oauth: - addresses:write summary: Provision internal (custodial) address tags: - Addresses /accounts/{account_id}/transfers/{transfer_id}: get: callbacks: {} operationId: get_transfer parameters: - description: Account ID in: path name: account_id required: true schema: $ref: '#/components/schemas/ID' - description: Transfer ID in: path name: transfer_id required: true schema: $ref: '#/components/schemas/ID' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Transfer' description: OK '400': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Bad Request '401': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Unauthorized '403': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Forbidden '404': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Not Found security: - oauth: - transfers:read summary: Get Transfer tags: - Orders /accounts/{account_id}/tokens/burns/{burn_id}: get: callbacks: {} description: Retrieve a specific burn transaction by ID. operationId: get_burn parameters: - description: Account ID in: path name: account_id required: true schema: $ref: '#/components/schemas/ID' - description: Burn ID in: path name: burn_id required: true schema: $ref: '#/components/schemas/ID' responses: '200': content: application/json: schema: $ref: '#/components/schemas/BurnResponse' description: OK '401': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Unauthorized '403': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Forbidden '404': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Not Found security: - oauth: - self_attested_tokens:read summary: Get Burn tags: - Orders /accounts/{account_id}/financial-institutions/plaid/link_token: post: callbacks: {} description: Creates a Plaid link token for bank authentication operationId: create_plaid_link_token parameters: - description: Account ID in: path name: account_id required: true schema: $ref: '#/components/schemas/ID' requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateLinkTokenRequest' description: Create link token request body required: true responses: '200': content: application/json: schema: $ref: '#/components/schemas/LinkTokenResponse' description: OK '400': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Bad Request '401': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Unauthorized '403': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Forbidden '404': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Not Found '500': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Unknown security: - oauth: - financial-institutions:write summary: Create Plaid link token tags: - Financial Institutions /accounts/{account_id}/tokens/transfers/{transfer_id}: get: callbacks: {} description: Retrieve a specific tokenization transfer transaction by ID. operationId: get_tokenization_transfer parameters: - description: Account ID in: path name: account_id required: true schema: $ref: '#/components/schemas/ID' - description: Transfer ID in: path name: transfer_id required: true schema: $ref: '#/components/schemas/ID' responses: '200': content: application/json: schema: $ref: '#/components/schemas/TokenizationTransferResponse' description: OK '401': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Unauthorized '403': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Forbidden '404': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Not Found security: - oauth: - self_attested_tokens:read summary: Get Tokenization Transfer tags: - Orders /accounts/{account_id}/webhooks/event_types: get: callbacks: {} description: Returns the event type strings (and short descriptions) that may be passed in `POST .../webhooks` `events` when creating a subscription. operationId: list_webhook_event_types parameters: - description: Account ID in: path name: account_id required: true schema: $ref: '#/components/schemas/ID' responses: '200': content: application/json: schema: $ref: '#/components/schemas/WebhookEventTypeList' description: OK '401': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Unauthorized '403': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Forbidden '404': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Not Found security: - oauth: - webhooks:read summary: List supported webhook event types tags: - Webhooks /accounts/{account_id}/addresses/external: post: callbacks: {} description: Creates a record of an external address that can be used to receive funds. operationId: create_external_address parameters: - description: Account ID in: path name: account_id required: true schema: $ref: '#/components/schemas/ID' requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateExternalAddressRequest' description: Create address request body required: true responses: '201': content: application/json: schema: $ref: '#/components/schemas/AddressV2' description: OK '400': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Bad Request '401': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Unauthorized '403': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Forbidden '404': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Not Found '409': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Conflict '500': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Unknown security: - oauth: - addresses:write summary: Create external address tags: - Addresses /accounts/{account_id}/financial-institutions/{fi_id}: get: callbacks: {} operationId: get_account_financial_institution parameters: - description: Account ID in: path name: account_id required: true schema: $ref: '#/components/schemas/ID' - description: FinancialInstitution ID in: path name: fi_id required: true schema: $ref: '#/components/schemas/ID' responses: '200': content: application/json: schema: $ref: '#/components/schemas/FinancialInstitutionV2' description: OK '401': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Unauthorized '403': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Forbidden '404': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Not Found '500': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Unknown security: - oauth: - financial-institutions:read summary: Get individual financial institution tags: - Financial Institutions /accounts/{account_id}/addresses/{address_id}/balance: get: callbacks: {} operationId: get_address_token_balance parameters: - description: Account ID in: path name: account_id required: true schema: $ref: '#/components/schemas/ID' - description: Address ID in: path name: address_id required: true schema: $ref: '#/components/schemas/ID' - description: Transfer type in: query name: transfer_type required: false schema: type: string - description: Value type in: query name: value_type required: false schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/AddressBalance' description: OK '400': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Bad Request '401': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Unauthorized '403': content: application/json: schema: $ref: '#/components/schemas/Failure' description: Forbidden '404': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Not Found '500': content: application/json: schema: $ref: '#/components/schemas/ApiErrorV2' description: Unknown security: - oauth: - addresses:read summary: Get token balance for a given address on a specific chain tags: - Addresses security: [] servers: - url: https://api.brale.xyz variables: {} tags: []