openapi: 3.1.0 info: title: Endpoints Accounts Transactions API version: 1.0.0 servers: - url: https://api.agora.finance description: Production tags: - name: Transactions paths: /v0/transactions: get: operationId: list summary: List Transactions description: "\n The endpoints exposed here are currently in **Beta**! As we continue to build our initial offering, these endpoints may implement breaking changes. Be sure to check back for our change log regularly as a precaution.\n\n\nList your settled transactions, newest first, with cursor pagination. Each entry summarizes the `source` and `recipient`, the per-currency totals each side moved, and the `type` (`mint`, `redeem`, `bridge`, `reward`, `return`). `type` and `status` are open enums; tolerate unknown values. Fetch one transaction's legs with `GET /v0/transactions/{txnId}`.\n" tags: - Transactions parameters: - name: cursor in: query required: false schema: type: string - name: limit in: query required: false schema: type: integer default: 50 - name: Authorization in: header description: 'Session JWT from POST /v0/auth/token, sent as `Authorization: Bearer `.' required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/transactions_list_Response_200' '400': description: One or more request parameters are invalid. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse_400_parameter_invalid' '401': description: Authentication is required. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse_401_unauthorized' '403': description: The account is not eligible for the requested route direction. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse_403_account_not_eligible_forbidden' '404': description: Resource not found. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse_404_not_found' '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse_429_rate_limit_exceeded' '500': description: An unexpected error occurred. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse_500_internal_error' /v0/transactions/{txnId}: get: operationId: getbyid summary: Get a Transaction by ID description: "\n The endpoints exposed here are currently in **Beta**! As we continue to build our initial offering, these endpoints may implement breaking changes. Be sure to check back for our change log regularly as a precaution.\n\n\nRetrieve one settled transaction by id, with its per-leg breakdown. Each leg carries a `direction` (`FROM_AGORA` or `TO_AGORA`) and a rail-specific `detail` keyed by `type`: `token` (`transactionHash`), `wire` (Fedwire `imad`), `bookTransfer`, or `instantPayment` (`confirmationNumber`). A `404` means no such transaction exists for your organization.\n" tags: - Transactions parameters: - name: txnId in: path required: true schema: type: string format: uuid - name: Authorization in: header description: 'Session JWT from POST /v0/auth/token, sent as `Authorization: Bearer `.' required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/transactions_getbyid_Response_200' '400': description: One or more request parameters are invalid. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse_400_parameter_invalid' '401': description: Authentication is required. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse_401_unauthorized' '403': description: The account is not eligible for the requested route direction. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse_403_account_not_eligible_forbidden' '404': description: Resource not found. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse_404_not_found_transaction_not_found' '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse_429_rate_limit_exceeded' '500': description: An unexpected error occurred. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse_500_internal_error' components: schemas: ErrorResponse400ParameterInvalidContext: type: object properties: issues: type: array items: $ref: '#/components/schemas/ErrorResponse400ParameterInvalidContextIssuesItems' required: - issues title: ErrorResponse400ParameterInvalidContext ErrorResponse_401_unauthorized: type: object properties: code: $ref: '#/components/schemas/ErrorResponse401UnauthorizedCode' docs_url: type: string message: type: string context: $ref: '#/components/schemas/ErrorResponse401UnauthorizedContext' required: - code - docs_url - message title: ErrorResponse_401_unauthorized V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaSourceOneOf1AmountsItems: type: object properties: amount: type: string description: Decimal amount as a string (avoids floating-point precision loss). currency: type: string description: Currency code, e.g. `usd`, `ausd`, `usdc`. required: - amount - currency description: A per-currency amount moved on one side of the transaction. title: V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaSourceOneOf1AmountsItems ErrorResponse400ParameterInvalidContextIssuesItems: type: object properties: field: type: string message: type: string required: - field - message title: ErrorResponse400ParameterInvalidContextIssuesItems ErrorResponse401UnauthorizedCode: type: string enum: - unauthorized title: ErrorResponse401UnauthorizedCode V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsSource: oneOf: - $ref: '#/components/schemas/V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsSource0' - $ref: '#/components/schemas/V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsSource1' description: The counterparty sending value on this leg. title: V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsSource V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsRecipient0: type: object properties: kind: $ref: '#/components/schemas/V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsRecipientOneOf0Kind' description: 'Discriminator: the counterparty is a bank account.' accountId: type: - string - 'null' format: uuid description: UUID of the customer account this counterparty maps to (same id as `/v0/accounts`), or null when the address is not a known account (e.g. the Agora side). Bank counterparties currently always return null; bank-to-account linkage is not derived yet. accountNumber: type: - string - 'null' description: Bank account number. Null when unknown. bankName: type: - string - 'null' description: Name of the financial institution, when known. name: type: - string - 'null' description: Display label for the counterparty. The Agora side of a leg is labelled `"Agora"`. required: - kind - accountId - accountNumber - bankName - name title: V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsRecipient0 V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaRecipient1: type: object properties: kind: $ref: '#/components/schemas/V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaRecipientOneOf1Kind' description: 'Discriminator: the counterparty is a blockchain address.' accountId: type: - string - 'null' format: uuid description: UUID of the customer account this counterparty maps to (same id as `/v0/accounts`), or null when the address is not a known account (e.g. the Agora side). Bank counterparties currently always return null; bank-to-account linkage is not derived yet. address: type: - string - 'null' description: On-chain address, EIP-55 checksummed for EVM. Public on-chain data, returned in full. Null when unknown. chain: type: string description: Chain the address is on, as the public-API network id (e.g. `ethereum`, `base`). Non-public/historical chains fall back to the raw chain id. Treated as an open enum; tolerate unknown values. name: type: - string - 'null' description: Display label for the counterparty. The Agora side of a leg is labelled `"Agora"`. amounts: type: array items: $ref: '#/components/schemas/V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaRecipientOneOf1AmountsItems' description: Per-currency totals moved on this side of the transaction, one entry per currency. required: - kind - accountId - address - chain - name - amounts title: V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaRecipient1 V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsDetail2: type: object properties: type: $ref: '#/components/schemas/V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsDetailOneOf2Type' description: 'Discriminator: the leg settled on-chain.' transactionHash: type: - string - 'null' description: On-chain transaction hash. Null when not yet known. required: - type - transactionHash description: On-chain (token) leg detail. title: V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsDetail2 V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaRecipientOneOf1AmountsItems: type: object properties: amount: type: string description: Decimal amount as a string (avoids floating-point precision loss). currency: type: string description: Currency code, e.g. `usd`, `ausd`, `usdc`. required: - amount - currency description: A per-currency amount moved on one side of the transaction. title: V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaRecipientOneOf1AmountsItems V0TransactionsGetResponsesContentApplicationJsonSchemaDataItemsSourceOneOf1AmountsItems: type: object properties: amount: type: string description: Decimal amount as a string (avoids floating-point precision loss). currency: type: string description: Currency code, e.g. `usd`, `ausd`, `usdc`. required: - amount - currency description: A per-currency amount moved on one side of the transaction. title: V0TransactionsGetResponsesContentApplicationJsonSchemaDataItemsSourceOneOf1AmountsItems V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsDetailOneOf0Type: type: string enum: - bookTransfer description: 'Discriminator: the leg settled as an internal book transfer.' title: V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsDetailOneOf0Type V0TransactionsGetResponsesContentApplicationJsonSchemaDataItemsSourceOneOf1Kind: type: string enum: - wallet description: 'Discriminator: the counterparty is a blockchain address.' title: V0TransactionsGetResponsesContentApplicationJsonSchemaDataItemsSourceOneOf1Kind transactions_list_Response_200: type: object properties: data: type: array items: $ref: '#/components/schemas/V0TransactionsGetResponsesContentApplicationJsonSchemaDataItems' description: Page of transactions, newest first (by initiated time, tie-broken by id). nextCursor: type: - string - 'null' description: Opaque cursor for the next page. Pass back verbatim as the `cursor` query param; null when no more results. required: - data - nextCursor title: transactions_list_Response_200 V0TransactionsGetResponsesContentApplicationJsonSchemaDataItemsRecipient1: type: object properties: kind: $ref: '#/components/schemas/V0TransactionsGetResponsesContentApplicationJsonSchemaDataItemsRecipientOneOf1Kind' description: 'Discriminator: the counterparty is a blockchain address.' accountId: type: - string - 'null' format: uuid description: UUID of the customer account this counterparty maps to (same id as `/v0/accounts`), or null when the address is not a known account (e.g. the Agora side). Bank counterparties currently always return null; bank-to-account linkage is not derived yet. address: type: - string - 'null' description: On-chain address, EIP-55 checksummed for EVM. Public on-chain data, returned in full. Null when unknown. chain: type: string description: Chain the address is on, as the public-API network id (e.g. `ethereum`, `base`). Non-public/historical chains fall back to the raw chain id. Treated as an open enum; tolerate unknown values. name: type: - string - 'null' description: Display label for the counterparty. The Agora side of a leg is labelled `"Agora"`. amounts: type: array items: $ref: '#/components/schemas/V0TransactionsGetResponsesContentApplicationJsonSchemaDataItemsRecipientOneOf1AmountsItems' description: Per-currency totals moved on this side of the transaction, one entry per currency. required: - kind - accountId - address - chain - name - amounts title: V0TransactionsGetResponsesContentApplicationJsonSchemaDataItemsRecipient1 V0TransactionsGetResponsesContentApplicationJsonSchemaDataItemsRecipient: oneOf: - $ref: '#/components/schemas/V0TransactionsGetResponsesContentApplicationJsonSchemaDataItemsRecipient0' - $ref: '#/components/schemas/V0TransactionsGetResponsesContentApplicationJsonSchemaDataItemsRecipient1' description: The counterparty receiving value, with the totals it received. title: V0TransactionsGetResponsesContentApplicationJsonSchemaDataItemsRecipient ErrorResponse401UnauthorizedContextReason: type: string enum: - invalid_token - missing_claim - missing_header - token_expired - token_revoked - unknown_tenant title: ErrorResponse401UnauthorizedContextReason V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaSourceOneOf1Kind: type: string enum: - wallet description: 'Discriminator: the counterparty is a blockchain address.' title: V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaSourceOneOf1Kind V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsDetailOneOf1Type: type: string enum: - instantPayment description: 'Discriminator: the leg settled over an instant-payment rail.' title: V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsDetailOneOf1Type V0TransactionsGetResponsesContentApplicationJsonSchemaDataItemsRecipient0: type: object properties: kind: $ref: '#/components/schemas/V0TransactionsGetResponsesContentApplicationJsonSchemaDataItemsRecipientOneOf0Kind' description: 'Discriminator: the counterparty is a bank account.' accountId: type: - string - 'null' format: uuid description: UUID of the customer account this counterparty maps to (same id as `/v0/accounts`), or null when the address is not a known account (e.g. the Agora side). Bank counterparties currently always return null; bank-to-account linkage is not derived yet. accountNumber: type: - string - 'null' description: Bank account number. Null when unknown. bankName: type: - string - 'null' description: Name of the financial institution, when known. name: type: - string - 'null' description: Display label for the counterparty. The Agora side of a leg is labelled `"Agora"`. amounts: type: array items: $ref: '#/components/schemas/V0TransactionsGetResponsesContentApplicationJsonSchemaDataItemsRecipientOneOf0AmountsItems' description: Per-currency totals moved on this side of the transaction, one entry per currency. required: - kind - accountId - accountNumber - bankName - name - amounts title: V0TransactionsGetResponsesContentApplicationJsonSchemaDataItemsRecipient0 ErrorResponse_404_not_found: type: object properties: code: $ref: '#/components/schemas/ErrorResponse404NotFoundCode' docs_url: type: string message: type: string required: - code - docs_url - message title: ErrorResponse_404_not_found ErrorResponse404NotFoundCode: type: string enum: - not_found title: ErrorResponse404NotFoundCode V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsRecipient1: type: object properties: kind: $ref: '#/components/schemas/V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsRecipientOneOf1Kind' description: 'Discriminator: the counterparty is a blockchain address.' accountId: type: - string - 'null' format: uuid description: UUID of the customer account this counterparty maps to (same id as `/v0/accounts`), or null when the address is not a known account (e.g. the Agora side). Bank counterparties currently always return null; bank-to-account linkage is not derived yet. address: type: - string - 'null' description: On-chain address, EIP-55 checksummed for EVM. Public on-chain data, returned in full. Null when unknown. chain: type: string description: Chain the address is on, as the public-API network id (e.g. `ethereum`, `base`). Non-public/historical chains fall back to the raw chain id. Treated as an open enum; tolerate unknown values. name: type: - string - 'null' description: Display label for the counterparty. The Agora side of a leg is labelled `"Agora"`. required: - kind - accountId - address - chain - name title: V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsRecipient1 ErrorResponse_400_parameter_invalid: type: object properties: code: $ref: '#/components/schemas/ErrorResponse400ParameterInvalidCode' docs_url: type: string message: type: string context: $ref: '#/components/schemas/ErrorResponse400ParameterInvalidContext' required: - code - docs_url - message title: ErrorResponse_400_parameter_invalid V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsSourceOneOf1Kind: type: string enum: - wallet description: 'Discriminator: the counterparty is a blockchain address.' title: V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsSourceOneOf1Kind V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsDetailOneOf3Type: type: string enum: - wire description: 'Discriminator: the leg settled over a wire transfer.' title: V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsDetailOneOf3Type V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaRecipient: oneOf: - $ref: '#/components/schemas/V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaRecipient0' - $ref: '#/components/schemas/V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaRecipient1' description: The counterparty receiving value, with the totals it received. title: V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaRecipient V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaRecipient0: type: object properties: kind: $ref: '#/components/schemas/V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaRecipientOneOf0Kind' description: 'Discriminator: the counterparty is a bank account.' accountId: type: - string - 'null' format: uuid description: UUID of the customer account this counterparty maps to (same id as `/v0/accounts`), or null when the address is not a known account (e.g. the Agora side). Bank counterparties currently always return null; bank-to-account linkage is not derived yet. accountNumber: type: - string - 'null' description: Bank account number. Null when unknown. bankName: type: - string - 'null' description: Name of the financial institution, when known. name: type: - string - 'null' description: Display label for the counterparty. The Agora side of a leg is labelled `"Agora"`. amounts: type: array items: $ref: '#/components/schemas/V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaRecipientOneOf0AmountsItems' description: Per-currency totals moved on this side of the transaction, one entry per currency. required: - kind - accountId - accountNumber - bankName - name - amounts title: V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaRecipient0 V0TransactionsGetResponsesContentApplicationJsonSchemaDataItemsSource: oneOf: - $ref: '#/components/schemas/V0TransactionsGetResponsesContentApplicationJsonSchemaDataItemsSource0' - $ref: '#/components/schemas/V0TransactionsGetResponsesContentApplicationJsonSchemaDataItemsSource1' description: The counterparty sending value, with the totals it sent. title: V0TransactionsGetResponsesContentApplicationJsonSchemaDataItemsSource ErrorResponse403AccountNotEligibleForbiddenCode: type: string enum: - account_not_eligible - forbidden title: ErrorResponse403AccountNotEligibleForbiddenCode V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsRecipient: oneOf: - $ref: '#/components/schemas/V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsRecipient0' - $ref: '#/components/schemas/V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsRecipient1' description: The counterparty receiving value on this leg. title: V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsRecipient V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsDetail: oneOf: - $ref: '#/components/schemas/V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsDetail0' - $ref: '#/components/schemas/V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsDetail1' - $ref: '#/components/schemas/V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsDetail2' - $ref: '#/components/schemas/V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsDetail3' description: Rail-specific identifiers for the leg, shaped by the settlement rail. title: V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsDetail V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsDirection: type: string enum: - FROM_AGORA - TO_AGORA description: 'Direction of value movement relative to Agora: `FROM_AGORA` (Agora → customer) or `TO_AGORA` (customer → Agora).' title: V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsDirection V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsRecipientOneOf0Kind: type: string enum: - bank description: 'Discriminator: the counterparty is a bank account.' title: V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsRecipientOneOf0Kind ErrorResponse404NotFoundTransactionNotFoundCode: type: string enum: - not_found - transaction_not_found title: ErrorResponse404NotFoundTransactionNotFoundCode V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaRecipientOneOf0Kind: type: string enum: - bank description: 'Discriminator: the counterparty is a bank account.' title: V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaRecipientOneOf0Kind V0TransactionsGetResponsesContentApplicationJsonSchemaDataItemsRecipientOneOf0AmountsItems: type: object properties: amount: type: string description: Decimal amount as a string (avoids floating-point precision loss). currency: type: string description: Currency code, e.g. `usd`, `ausd`, `usdc`. required: - amount - currency description: A per-currency amount moved on one side of the transaction. title: V0TransactionsGetResponsesContentApplicationJsonSchemaDataItemsRecipientOneOf0AmountsItems ErrorResponse_429_rate_limit_exceeded: type: object properties: code: $ref: '#/components/schemas/ErrorResponse429RateLimitExceededCode' docs_url: type: string message: type: string required: - code - docs_url - message title: ErrorResponse_429_rate_limit_exceeded ErrorResponse401UnauthorizedContext: type: object properties: reason: $ref: '#/components/schemas/ErrorResponse401UnauthorizedContextReason' required: - reason title: ErrorResponse401UnauthorizedContext V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaRecipientOneOf1Kind: type: string enum: - wallet description: 'Discriminator: the counterparty is a blockchain address.' title: V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaRecipientOneOf1Kind ErrorResponse_404_not_found_transaction_not_found: type: object properties: code: $ref: '#/components/schemas/ErrorResponse404NotFoundTransactionNotFoundCode' docs_url: type: string message: type: string required: - code - docs_url - message title: ErrorResponse_404_not_found_transaction_not_found V0TransactionsGetResponsesContentApplicationJsonSchemaDataItemsSource0: type: object properties: kind: $ref: '#/components/schemas/V0TransactionsGetResponsesContentApplicationJsonSchemaDataItemsSourceOneOf0Kind' description: 'Discriminator: the counterparty is a bank account.' accountId: type: - string - 'null' format: uuid description: UUID of the customer account this counterparty maps to (same id as `/v0/accounts`), or null when the address is not a known account (e.g. the Agora side). Bank counterparties currently always return null; bank-to-account linkage is not derived yet. accountNumber: type: - string - 'null' description: Bank account number. Null when unknown. bankName: type: - string - 'null' description: Name of the financial institution, when known. name: type: - string - 'null' description: Display label for the counterparty. The Agora side of a leg is labelled `"Agora"`. amounts: type: array items: $ref: '#/components/schemas/V0TransactionsGetResponsesContentApplicationJsonSchemaDataItemsSourceOneOf0AmountsItems' description: Per-currency totals moved on this side of the transaction, one entry per currency. required: - kind - accountId - accountNumber - bankName - name - amounts title: V0TransactionsGetResponsesContentApplicationJsonSchemaDataItemsSource0 V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsDetail0: type: object properties: type: $ref: '#/components/schemas/V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsDetailOneOf0Type' description: 'Discriminator: the leg settled as an internal book transfer.' confirmationNumber: type: - string - 'null' description: Book-transfer confirmation number. Null when not yet known. required: - type - confirmationNumber description: Book-transfer leg detail. title: V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsDetail0 V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaRecipientOneOf0AmountsItems: type: object properties: amount: type: string description: Decimal amount as a string (avoids floating-point precision loss). currency: type: string description: Currency code, e.g. `usd`, `ausd`, `usdc`. required: - amount - currency description: A per-currency amount moved on one side of the transaction. title: V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaRecipientOneOf0AmountsItems V0TransactionsGetResponsesContentApplicationJsonSchemaDataItems: type: object properties: id: type: string format: uuid description: Stable UUID identifying this transaction; pass to the detail endpoint to fetch legs. initiatedAt: type: string format: date-time description: ISO-8601 timestamp of the first leg. isInstantSettlement: type: boolean description: True if this transaction used Agora's instant-settlement path rather than standard settlement. legCount: type: integer description: Number of customer-facing legs in this transaction. recipient: $ref: '#/components/schemas/V0TransactionsGetResponsesContentApplicationJsonSchemaDataItemsRecipient' description: The counterparty receiving value, with the totals it received. settledAt: type: - string - 'null' format: date-time description: ISO-8601 timestamp when the transaction settled. Null until settled. source: $ref: '#/components/schemas/V0TransactionsGetResponsesContentApplicationJsonSchemaDataItemsSource' description: The counterparty sending value, with the totals it sent. status: type: string description: Lifecycle status. v1 emits only `"settled"`. This is an open, extensible enum; future values (e.g. `pending`) may appear, so clients must tolerate unknown values. type: type: string description: 'Customer-facing transaction type: `mint`, `redeem`, `bridge`, `reward`, or `return`. Treated as an open enum; tolerate unknown values.' required: - id - initiatedAt - isInstantSettlement - legCount - recipient - settledAt - source - status - type description: Settled-transaction summary. Fetch the detail endpoint with `id` for per-leg detail. title: V0TransactionsGetResponsesContentApplicationJsonSchemaDataItems ErrorResponse400ParameterInvalidCode: type: string enum: - parameter_invalid title: ErrorResponse400ParameterInvalidCode V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsDetail3: type: object properties: type: $ref: '#/components/schemas/V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsDetailOneOf3Type' description: 'Discriminator: the leg settled over a wire transfer.' imad: type: - string - 'null' description: Fedwire IMAD (Input Message Accountability Data) identifying the wire. Null when not yet known. required: - type - imad description: Wire-transfer leg detail. title: V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsDetail3 V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaSourceOneOf0Kind: type: string enum: - bank description: 'Discriminator: the counterparty is a bank account.' title: V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaSourceOneOf0Kind ErrorResponse429RateLimitExceededCode: type: string enum: - rate_limit_exceeded title: ErrorResponse429RateLimitExceededCode V0TransactionsGetResponsesContentApplicationJsonSchemaDataItemsRecipientOneOf1AmountsItems: type: object properties: amount: type: string description: Decimal amount as a string (avoids floating-point precision loss). currency: type: string description: Currency code, e.g. `usd`, `ausd`, `usdc`. required: - amount - currency description: A per-currency amount moved on one side of the transaction. title: V0TransactionsGetResponsesContentApplicationJsonSchemaDataItemsRecipientOneOf1AmountsItems V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsSourceOneOf0Kind: type: string enum: - bank description: 'Discriminator: the counterparty is a bank account.' title: V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsSourceOneOf0Kind ErrorResponse_403_account_not_eligible_forbidden: type: object properties: code: $ref: '#/components/schemas/ErrorResponse403AccountNotEligibleForbiddenCode' docs_url: type: string message: type: string required: - code - docs_url - message title: ErrorResponse_403_account_not_eligible_forbidden V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItems: type: object properties: id: type: string format: uuid description: Stable UUID identifying this leg. amount: type: string description: Decimal amount moved on this leg, as a string (avoids floating-point precision loss). currency: type: string description: Currency code, e.g. `usd`, `ausd`, `usdc`. Treated as an open enum; tolerate unknown values. detail: $ref: '#/components/schemas/V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsDetail' description: Rail-specific identifiers for the leg, shaped by the settlement rail. direction: $ref: '#/components/schemas/V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsDirection' description: 'Direction of value movement relative to Agora: `FROM_AGORA` (Agora → customer) or `TO_AGORA` (customer → Agora).' occurredAt: type: string format: date-time description: ISO-8601 timestamp when this leg occurred. recipient: $ref: '#/components/schemas/V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsRecipient' description: The counterparty receiving value on this leg. source: $ref: '#/components/schemas/V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsSource' description: The counterparty sending value on this leg. required: - id - amount - currency - detail - direction - occurredAt - recipient - source description: A single customer-facing leg of a transaction. title: V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItems V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaSourceOneOf0AmountsItems: type: object properties: amount: type: string description: Decimal amount as a string (avoids floating-point precision loss). currency: type: string description: Currency code, e.g. `usd`, `ausd`, `usdc`. required: - amount - currency description: A per-currency amount moved on one side of the transaction. title: V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaSourceOneOf0AmountsItems V0TransactionsGetResponsesContentApplicationJsonSchemaDataItemsSource1: type: object properties: kind: $ref: '#/components/schemas/V0TransactionsGetResponsesContentApplicationJsonSchemaDataItemsSourceOneOf1Kind' description: 'Discriminator: the counterparty is a blockchain address.' accountId: type: - string - 'null' format: uuid description: UUID of the customer account this counterparty maps to (same id as `/v0/accounts`), or null when the address is not a known account (e.g. the Agora side). Bank counterparties currently always return null; bank-to-account linkage is not derived yet. address: type: - string - 'null' description: On-chain address, EIP-55 checksummed for EVM. Public on-chain data, returned in full. Null when unknown. chain: type: string description: Chain the address is on, as the public-API network id (e.g. `ethereum`, `base`). Non-public/historical chains fall back to the raw chain id. Treated as an open enum; tolerate unknown values. name: type: - string - 'null' description: Display label for the counterparty. The Agora side of a leg is labelled `"Agora"`. amounts: type: array items: $ref: '#/components/schemas/V0TransactionsGetResponsesContentApplicationJsonSchemaDataItemsSourceOneOf1AmountsItems' description: Per-currency totals moved on this side of the transaction, one entry per currency. required: - kind - accountId - address - chain - name - amounts title: V0TransactionsGetResponsesContentApplicationJsonSchemaDataItemsSource1 ErrorResponse500InternalErrorCode: type: string enum: - internal_error title: ErrorResponse500InternalErrorCode V0TransactionsGetResponsesContentApplicationJsonSchemaDataItemsSourceOneOf0Kind: type: string enum: - bank description: 'Discriminator: the counterparty is a bank account.' title: V0TransactionsGetResponsesContentApplicationJsonSchemaDataItemsSourceOneOf0Kind V0TransactionsGetResponsesContentApplicationJsonSchemaDataItemsRecipientOneOf0Kind: type: string enum: - bank description: 'Discriminator: the counterparty is a bank account.' title: V0TransactionsGetResponsesContentApplicationJsonSchemaDataItemsRecipientOneOf0Kind V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaSource: oneOf: - $ref: '#/components/schemas/V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaSource0' - $ref: '#/components/schemas/V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaSource1' description: The counterparty sending value, with the totals it sent. title: V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaSource transactions_getbyid_Response_200: type: object properties: id: type: string format: uuid description: Stable UUID identifying this transaction; pass to the detail endpoint to fetch legs. initiatedAt: type: string format: date-time description: ISO-8601 timestamp of the first leg. isInstantSettlement: type: boolean description: True if this transaction used Agora's instant-settlement path rather than standard settlement. legCount: type: integer description: Number of customer-facing legs in this transaction. recipient: $ref: '#/components/schemas/V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaRecipient' description: The counterparty receiving value, with the totals it received. settledAt: type: - string - 'null' format: date-time description: ISO-8601 timestamp when the transaction settled. Null until settled. source: $ref: '#/components/schemas/V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaSource' description: The counterparty sending value, with the totals it sent. status: type: string description: Lifecycle status. v1 emits only `"settled"`. This is an open, extensible enum; future values (e.g. `pending`) may appear, so clients must tolerate unknown values. type: type: string description: 'Customer-facing transaction type: `mint`, `redeem`, `bridge`, `reward`, or `return`. Treated as an open enum; tolerate unknown values.' legs: type: array items: $ref: '#/components/schemas/V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItems' description: The customer-facing legs that make up this transaction. required: - id - initiatedAt - isInstantSettlement - legCount - recipient - settledAt - source - status - type - legs description: A single settled transaction with its per-leg breakdown. title: transactions_getbyid_Response_200 V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsDetail1: type: object properties: type: $ref: '#/components/schemas/V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsDetailOneOf1Type' description: 'Discriminator: the leg settled over an instant-payment rail.' confirmationNumber: type: - string - 'null' description: Instant-payment confirmation number. Null when not yet known. required: - type - confirmationNumber description: Instant-payment leg detail. title: V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsDetail1 V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaSource1: type: object properties: kind: $ref: '#/components/schemas/V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaSourceOneOf1Kind' description: 'Discriminator: the counterparty is a blockchain address.' accountId: type: - string - 'null' format: uuid description: UUID of the customer account this counterparty maps to (same id as `/v0/accounts`), or null when the address is not a known account (e.g. the Agora side). Bank counterparties currently always return null; bank-to-account linkage is not derived yet. address: type: - string - 'null' description: On-chain address, EIP-55 checksummed for EVM. Public on-chain data, returned in full. Null when unknown. chain: type: string description: Chain the address is on, as the public-API network id (e.g. `ethereum`, `base`). Non-public/historical chains fall back to the raw chain id. Treated as an open enum; tolerate unknown values. name: type: - string - 'null' description: Display label for the counterparty. The Agora side of a leg is labelled `"Agora"`. amounts: type: array items: $ref: '#/components/schemas/V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaSourceOneOf1AmountsItems' description: Per-currency totals moved on this side of the transaction, one entry per currency. required: - kind - accountId - address - chain - name - amounts title: V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaSource1 V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsSource1: type: object properties: kind: $ref: '#/components/schemas/V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsSourceOneOf1Kind' description: 'Discriminator: the counterparty is a blockchain address.' accountId: type: - string - 'null' format: uuid description: UUID of the customer account this counterparty maps to (same id as `/v0/accounts`), or null when the address is not a known account (e.g. the Agora side). Bank counterparties currently always return null; bank-to-account linkage is not derived yet. address: type: - string - 'null' description: On-chain address, EIP-55 checksummed for EVM. Public on-chain data, returned in full. Null when unknown. chain: type: string description: Chain the address is on, as the public-API network id (e.g. `ethereum`, `base`). Non-public/historical chains fall back to the raw chain id. Treated as an open enum; tolerate unknown values. name: type: - string - 'null' description: Display label for the counterparty. The Agora side of a leg is labelled `"Agora"`. required: - kind - accountId - address - chain - name title: V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsSource1 V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsSource0: type: object properties: kind: $ref: '#/components/schemas/V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsSourceOneOf0Kind' description: 'Discriminator: the counterparty is a bank account.' accountId: type: - string - 'null' format: uuid description: UUID of the customer account this counterparty maps to (same id as `/v0/accounts`), or null when the address is not a known account (e.g. the Agora side). Bank counterparties currently always return null; bank-to-account linkage is not derived yet. accountNumber: type: - string - 'null' description: Bank account number. Null when unknown. bankName: type: - string - 'null' description: Name of the financial institution, when known. name: type: - string - 'null' description: Display label for the counterparty. The Agora side of a leg is labelled `"Agora"`. required: - kind - accountId - accountNumber - bankName - name title: V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsSource0 V0TransactionsGetResponsesContentApplicationJsonSchemaDataItemsRecipientOneOf1Kind: type: string enum: - wallet description: 'Discriminator: the counterparty is a blockchain address.' title: V0TransactionsGetResponsesContentApplicationJsonSchemaDataItemsRecipientOneOf1Kind V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsRecipientOneOf1Kind: type: string enum: - wallet description: 'Discriminator: the counterparty is a blockchain address.' title: V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsRecipientOneOf1Kind V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsDetailOneOf2Type: type: string enum: - token description: 'Discriminator: the leg settled on-chain.' title: V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsDetailOneOf2Type V0TransactionsGetResponsesContentApplicationJsonSchemaDataItemsSourceOneOf0AmountsItems: type: object properties: amount: type: string description: Decimal amount as a string (avoids floating-point precision loss). currency: type: string description: Currency code, e.g. `usd`, `ausd`, `usdc`. required: - amount - currency description: A per-currency amount moved on one side of the transaction. title: V0TransactionsGetResponsesContentApplicationJsonSchemaDataItemsSourceOneOf0AmountsItems V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaSource0: type: object properties: kind: $ref: '#/components/schemas/V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaSourceOneOf0Kind' description: 'Discriminator: the counterparty is a bank account.' accountId: type: - string - 'null' format: uuid description: UUID of the customer account this counterparty maps to (same id as `/v0/accounts`), or null when the address is not a known account (e.g. the Agora side). Bank counterparties currently always return null; bank-to-account linkage is not derived yet. accountNumber: type: - string - 'null' description: Bank account number. Null when unknown. bankName: type: - string - 'null' description: Name of the financial institution, when known. name: type: - string - 'null' description: Display label for the counterparty. The Agora side of a leg is labelled `"Agora"`. amounts: type: array items: $ref: '#/components/schemas/V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaSourceOneOf0AmountsItems' description: Per-currency totals moved on this side of the transaction, one entry per currency. required: - kind - accountId - accountNumber - bankName - name - amounts title: V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaSource0 ErrorResponse_500_internal_error: type: object properties: code: $ref: '#/components/schemas/ErrorResponse500InternalErrorCode' docs_url: type: string message: type: string required: - code - docs_url - message title: ErrorResponse_500_internal_error securitySchemes: accessKey: type: http scheme: bearer description: 'Agora access key (cleartext), sent as `Authorization: Bearer `. Used only by POST /v0/auth/token to mint a session JWT.' sessionJwt: type: http scheme: bearer description: 'Session JWT from POST /v0/auth/token, sent as `Authorization: Bearer `.'