{"path":"/generate-meme","service_name":"Generate Meme","method":"POST","allowed_methods":["POST","GET"],"category":"AI Creative & Tools","class":"compute","summary":"Professional AI image and meme generation via fal.ai (gpt-image-2 or nano-banana-pro), with image editing from a public URL.","description":"AI image generation and editing via fal.ai, including memes. model: gpt-image-2 (default) | nano-banana-pro; anything else -> 400. Flat $0.15 per image. Supports image editing via public image URL.","schema":{"params":null,"body":{"properties":{"prompt":{"type":"string","description":"Description of the image to generate (100+ chars yields best results)"},"model":{"type":"string","enum":["gpt-image-2","nano-banana-pro"],"description":"model: gpt-image-2 (default) | nano-banana-pro; anything else -> 400"},"image_url":{"type":"string","description":"Optional: public HTTPS URL of image to edit/remix"},"aspect_ratio":{"type":"string","enum":["1:1","16:9","9:16"],"description":"Aspect ratio (default: 1:1)"}},"required":["prompt"]},"note":"Request schema derived from the Otto catalog -- not output-measured."},"sample_output":null,"cost":{"price_usd":0.15,"pricing_mode":"fixed","currency":"USDC","pricing_note":"Indicative. The live 402 PAYMENT-REQUIRED header is the single source of truth -- set maxPayment from it, never from this map.","settlement_note":"Settlement is on success only: a 4xx/5xx response is not settled, so a rejected or failed call does not charge you. (A 200 that returns an error body still settles.)"},"auth":{"type":"x402","note":"Pay per call in USDC via x402 V2 (EIP-3009 or Permit2). The networks THIS route accepts are in its own 402 accepts[] (returned in both the PAYMENT-REQUIRED header and the 402 JSON body): USDC on Base is accepted on every route, Solana only where that route lists it."},"signals":[{"id":"otto-money-back-guarantee","type":"guarantee","summary":"Money-back guarantee on Otto's own services: if a paid result misses, request a refund via /feedback with the payment tx_hash ($0.01 per tx, up to 10×/day system cap). Otto's own services and Full Auto only -- not third-party Bazaar picks.","status":"active","last_verified":"2026-07-01"},{"id":"otto-first-party","type":"characteristic","summary":"Served by an Otto-operated agent backend (first-party), not a re-listed third-party marketplace endpoint.","status":"active","last_verified":"2026-07-01"},{"id":"required-param-400","type":"gotcha","summary":"Requires a specific parameter -- omitting it returns HTTP 400. A 4xx is not settled, so a rejected call is not charged; read the request schema before paying.","status":"derived","last_verified":"2026-07-01"},{"id":"dual-method","type":"characteristic","summary":"Accepts both GET and POST. Method-strict endpoints instead return 405 + an Allow header on the wrong method (a 405 is not settled -- not charged).","status":"derived","last_verified":"2026-07-01"}],"patterns":[],"measured":{"quality_score":null,"uptime_pct":null,"measured_at":null,"note":"Not yet measured by the QA crawler -- quality/uptime stay null, never fabricated."},"catalog_hash":"59cee5639558d239baac94b127e7dda3c34970a67a11839de2a58ebf59203db3","snapshot_generated_at":"2026-09-08T08:43:34.873Z","you_were_not_charged":true}