{"openapi":"3.1.0","info":{"title":"Fluxus payments API","version":"1.0.0","description":"Stablecoin payment endpoints on Tempo. /api/v1/send authenticates with a bearer token; the /api/mpp/* routes negotiate payment over HTTP 402 (Machine Payments Protocol) and settle in pathUSD."},"servers":[{"url":"https://fluxuspay.app"}],"x-service-info":{"name":"Fluxus","chain":{"name":"Tempo","chainId":4217},"settlementCurrency":"pathUSD","settlementAsset":"0x20c0000000000000000000000000000000000000","paymentProtocol":"mpp/http-402","documentation":"https://fluxuspay.app/docs/developer-api","proof":"https://fluxuspay.app/proof"},"paths":{"/api/v1/send":{"post":{"summary":"Execute a stablecoin transfer (bearer authenticated)","operationId":"sendPayment","security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["to","amount"],"properties":{"to":{"type":"string","description":"Recipient address"},"amount":{"type":"string","description":"Decimal token amount"},"token":{"type":"string","default":"pathUSD"},"memo":{"type":"string","description":"Optional memo, max 32 bytes once encoded"}}}}}},"responses":{"200":{"description":"Transfer mined","content":{"application/json":{"schema":{"type":"object","properties":{"amount":{"type":"string"},"amountUnits":{"type":"string"},"explorerUrl":{"type":"string","format":"uri"},"hash":{"type":"string"},"memo":{"type":"string","nullable":true},"to":{"type":"string"},"token":{"type":"string"}}}}}},"400":{"description":"Invalid request body, address, amount or token"},"401":{"description":"Missing or wrong bearer token"},"429":{"description":"Rate limited"},"503":{"description":"Sender wallet not configured"}}}},"/api/mpp/send":{"post":{"summary":"Execute a stablecoin transfer (paid, HTTP 402)","operationId":"mppSendPayment","x-payment-info":{"method":"tempo-charge","amount":"0.01","currency":"pathUSD","asset":"0x20c0000000000000000000000000000000000000","decimals":6,"chainId":4217,"scheme":"http-402"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["to","amount"],"properties":{"to":{"type":"string","description":"Recipient address"},"amount":{"type":"string","description":"Decimal token amount"},"token":{"type":"string","default":"pathUSD"},"memo":{"type":"string","description":"Optional memo, max 32 bytes once encoded"}}}}}},"responses":{"200":{"description":"Charge settled and transfer mined","headers":{"Payment-Receipt":{"description":"Signed MPP receipt for the settled charge","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"amount":{"type":"string"},"amountUnits":{"type":"string"},"explorerUrl":{"type":"string","format":"uri"},"hash":{"type":"string"},"memo":{"type":"string","nullable":true},"to":{"type":"string"},"token":{"type":"string"}}}}}},"400":{"description":"Invalid request body, address, amount or token"},"402":{"description":"Payment required. The challenge is in the WWW-Authenticate: Payment header; retry with Authorization: Payment <credential>.","headers":{"WWW-Authenticate":{"description":"Payment challenge","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"amount":{"type":"string"},"currency":{"type":"string"},"recipient":{"type":"string"}}}}}},"429":{"description":"Rate limited"},"503":{"description":"MPP or sender wallet not configured"}}}},"/api/mpp/stream":{"post":{"summary":"Buy a streaming-payment intent link (paid, HTTP 402)","description":"Settles a charge and returns a deep link that a human completes in the Fluxus app. This endpoint does not open a payment channel or stream funds.","operationId":"mppStreamIntent","x-payment-info":{"method":"tempo-charge","amount":"0.02","currency":"pathUSD","asset":"0x20c0000000000000000000000000000000000000","decimals":6,"chainId":4217,"scheme":"http-402"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["to","amount","duration_minutes"],"properties":{"to":{"type":"string"},"amount":{"type":"string"},"duration_minutes":{"type":"integer","minimum":1}}}}}},"responses":{"200":{"description":"Charge settled, intent link returned","headers":{"Payment-Receipt":{"description":"Signed MPP receipt for the settled charge","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","description":"Intent handoff: the charge settles and the caller receives a deep link for a human to complete in the Fluxus app. No streaming or scheduling is executed server-side.","properties":{"intentUrl":{"type":"string","format":"uri"},"note":{"type":"string"},"paymentMethod":{"type":"string"}}}}}},"400":{"description":"Invalid request body, address, amount or duration"},"402":{"description":"Payment required. The challenge is in the WWW-Authenticate: Payment header; retry with Authorization: Payment <credential>.","headers":{"WWW-Authenticate":{"description":"Payment challenge","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"amount":{"type":"string"},"currency":{"type":"string"},"recipient":{"type":"string"}}}}}},"429":{"description":"Rate limited"},"503":{"description":"MPP not configured"}}}},"/api/mpp/scheduled":{"post":{"summary":"Buy a scheduled-payment intent link (paid, HTTP 402)","description":"Settles a charge and returns a deep link that a human completes in the Fluxus app. The payment itself is scheduled in the app, not by this endpoint.","operationId":"mppScheduledIntent","x-payment-info":{"method":"tempo-charge","amount":"0.02","currency":"pathUSD","asset":"0x20c0000000000000000000000000000000000000","decimals":6,"chainId":4217,"scheme":"http-402"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["to","amount","delay_minutes","window_minutes"],"properties":{"to":{"type":"string"},"amount":{"type":"string"},"delay_minutes":{"type":"integer","minimum":1},"window_minutes":{"type":"integer","minimum":1}}}}}},"responses":{"200":{"description":"Charge settled, intent link returned","headers":{"Payment-Receipt":{"description":"Signed MPP receipt for the settled charge","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","description":"Intent handoff: the charge settles and the caller receives a deep link for a human to complete in the Fluxus app. No streaming or scheduling is executed server-side.","properties":{"intentUrl":{"type":"string","format":"uri"},"note":{"type":"string"},"paymentMethod":{"type":"string"}}}}}},"400":{"description":"Invalid request body, address, amount or window"},"402":{"description":"Payment required. The challenge is in the WWW-Authenticate: Payment header; retry with Authorization: Payment <credential>.","headers":{"WWW-Authenticate":{"description":"Payment challenge","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"amount":{"type":"string"},"currency":{"type":"string"},"recipient":{"type":"string"}}}}}},"429":{"description":"Rate limited"},"503":{"description":"MPP not configured"}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer"}}}}