openapi: 3.2.0 info: title: AlgoVoi Gateway Payouts API description: Public-facing x402 payment gateway. version: 1.0.0-phase1c x-guidance: To access payment-gated resources, send the required payment proof header. Use GET /mpp/{resource_id} for MPP or GET /protected/{resource_id} for x402. tags: - name: Payouts paths: /v1/payouts: post: tags: - Payouts summary: Initiate on-chain payout description: 'Initiate an on-chain transfer from the tenant''s custodial balance. Idempotent on ``reference``: submitting the same reference twice returns the original payout_id + tx_id without re-broadcasting to the chain. Supported networks (MVP): algorand_mainnet, voi_mainnet (USDC / aUSDC). currency must be USD (USDC peg assumed 1:1).' operationId: create_payout_v1_payouts_post parameters: - name: tenant_id in: query required: false schema: anyOf: - type: string format: uuid - type: 'null' title: Tenant Id - name: x-tenant-id in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Tenant-Id - name: authorization in: header required: false schema: anyOf: - type: string - type: 'null' title: Authorization requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PayoutCreate' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/PayoutCreateResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' x-payment-info: authMode: api_key components: schemas: HTTPValidationError: properties: detail: items: $ref: '#/components/schemas/ValidationError' type: array title: Detail type: object title: HTTPValidationError PayoutCreateResponse: properties: payout_id: type: string title: Payout Id tx_id: type: string title: Tx Id network: type: string title: Network amount_usd_cents: type: integer title: Amount Usd Cents status: type: string title: Status type: object required: - payout_id - tx_id - network - amount_usd_cents - status title: PayoutCreateResponse ValidationError: properties: loc: items: anyOf: - type: string - type: integer type: array title: Location msg: type: string title: Message type: type: string title: Error Type input: title: Input ctx: type: object title: Context type: object required: - loc - msg - type title: ValidationError PayoutCreate: properties: to_address: type: string maxLength: 128 minLength: 1 title: To Address description: Destination wallet address amount: type: number exclusiveMinimum: 0.0 title: Amount description: Amount in major currency units, e.g. 9.90 currency: type: string maxLength: 3 minLength: 3 title: Currency description: ISO 4217 — must be USD for now network: type: string title: Network description: Target chain, e.g. algorand_mainnet reference: type: string maxLength: 256 minLength: 1 title: Reference description: Caller idempotency key type: object required: - to_address - amount - currency - network - reference title: PayoutCreate x-discovery: ownershipProofs: - eb10b2d7fb1e2fcbea7a4c5b031e339daacc7cf37d1fb569c58849287c121633 resources: - https://api.algovoi.co.uk/mpp/probe resourcesCatalog: https://api.algovoi.co.uk/discovery/resources