openapi: 3.2.0 info: title: AlgoVoi Gateway Payment Links 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: Payment Links paths: /v1/payment-links: post: tags: - Payment Links summary: Create a dynamic payment link description: Create a hosted checkout link for a specific fiat amount. The amount is converted to stablecoin (USDC / aUSDC) or native crypto using the tenant's configured network and the live FX rate. The returned `checkout_url` can be sent directly to the buyer. operationId: create_dynamic_payment_link_v1_payment_links_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/DynamicPaymentLinkCreate' responses: '201': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/DynamicPaymentLinkResponse' '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 DynamicPaymentLinkCreate: properties: amount: type: number exclusiveMinimum: 0.0 title: Amount description: Amount in major currency units, e.g. 49.99 for £49.99 currency: type: string maxLength: 3 minLength: 3 title: Currency description: ISO 4217 currency code, e.g. GBP label: type: string maxLength: 255 minLength: 1 title: Label description: Item / order description shown on the checkout page preferred_network: anyOf: - type: string - type: 'null' title: Preferred Network description: Force a specific network, e.g. 'algorand_mainnet'. Defaults to the tenant's first configured network. redirect_url: anyOf: - type: string maxLength: 2048 - type: 'null' title: Redirect Url description: URL to redirect the buyer to after payment is confirmed expires_in_seconds: type: integer maximum: 86400.0 minimum: 60.0 title: Expires In Seconds description: 'Link lifetime in seconds (60–86400). Default: 86400 (24 h).' default: 86400 type: object required: - amount - currency - label title: DynamicPaymentLinkCreate 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 DynamicPaymentLinkResponse: properties: id: type: string title: Id token: type: string title: Token checkout_url: type: string title: Checkout Url amount_microunits: type: integer title: Amount Microunits asset_id: type: string title: Asset Id chain: type: string title: Chain label: anyOf: - type: string - type: 'null' title: Label expires_at: type: string format: date-time title: Expires At created_at: type: string format: date-time title: Created At type: object required: - id - token - checkout_url - amount_microunits - asset_id - chain - label - expires_at - created_at title: DynamicPaymentLinkResponse x-discovery: ownershipProofs: - eb10b2d7fb1e2fcbea7a4c5b031e339daacc7cf37d1fb569c58849287c121633 resources: - https://api.algovoi.co.uk/mpp/probe resourcesCatalog: https://api.algovoi.co.uk/discovery/resources