{"openapi":"3.0.3","info":{"title":"SendQuoteNow — AI Quote Engine for Contractors","description":"Instantly generate professional, branded contractor quotes for HVAC, plumbing, electrical, solar, roofing, landscaping, and remodeling. Returns a polished PDF ready to send to customers. Built for AI agents and pay-per-use with x402: generate, preview, email, and share quotes with USDC micropayments on Base — no API key or account required.","version":"1.1.0","contact":{"email":"support@sendquotenow.com"}},"servers":[{"url":"https://sendquotenow.com"}],"paths":{"/v1/x402/quote/generate":{"post":{"operationId":"generateQuoteX402","summary":"Generate a contractor quote (PDF, QR, Stripe payment link)","description":"Creates the quote and returns quote number, totals, hosted quote page, PDF URL, QR code, Stripe payment link, and expiration date in ~1s. x402-protected: unpaid requests receive HTTP 402 with USDC payment requirements on Base. Pay per call, no API key or account required.","security":[],"x-payment-info":{"pricingMode":"fixed","price":"0.10","currency":"USD","protocols":["x402"]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["services"],"properties":{"company":{"type":"object","description":"Optional branding override: name, email, phone, address, terms"},"customer":{"type":"object","description":"Quote recipient: name, email, phone"},"services":{"type":"array","description":"Line items for the quote","items":{"type":"object","required":["name","unit_price"],"properties":{"name":{"type":"string","maxLength":500},"description":{"type":"string","maxLength":1000},"quantity":{"type":"number","default":1},"unit_price":{"type":"number","minimum":0}}}},"tax_rate":{"type":"number","minimum":0,"maximum":1,"description":"Decimal, e.g. 0.08 for 8%"},"discount":{"type":"object","description":"{ type: \"percent\"|\"fixed\", value: n }"},"currency":{"type":"string","enum":["USD","CAD","EUR","GBP","AUD"]},"expiration_days":{"type":"integer","minimum":1,"maximum":365,"default":30},"template":{"type":"string","enum":["standard","slate","emerald","noir","violet"]},"industry":{"type":"string","description":"Styling hint only, e.g. hvac, photography"},"notes":{"type":"string","maxLength":2000},"scope_of_work":{"type":"string","maxLength":5000},"delivery":{"type":"object","description":"{ method: \"email\", to, cc, message }"}}}}}},"responses":{"201":{"description":"Quote created: hosted PDF, QR code, Stripe payment link, expiration","content":{"application/json":{"schema":{"type":"object"}}}},"402":{"description":"Payment required — x402 payment requirements in the Payment-Required header"}}}},"/v1/x402/quotes":{"post":{"operationId":"createQuoteX402","summary":"Generate a quote (legacy alias of /v1/x402/quote/generate)","description":"Legacy path — identical to /v1/x402/quote/generate. x402-protected: unpaid requests receive HTTP 402 with USDC payment requirements on Base. Pay per call, no API key or account required.","security":[],"x-payment-info":{"pricingMode":"fixed","price":"0.10","currency":"USD","protocols":["x402"]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["services"],"properties":{"company":{"type":"object","description":"Optional branding override: name, email, phone, address, terms"},"customer":{"type":"object","description":"Quote recipient: name, email, phone"},"services":{"type":"array","description":"Line items for the quote","items":{"type":"object","required":["name","unit_price"],"properties":{"name":{"type":"string","maxLength":500},"description":{"type":"string","maxLength":1000},"quantity":{"type":"number","default":1},"unit_price":{"type":"number","minimum":0}}}},"tax_rate":{"type":"number","minimum":0,"maximum":1,"description":"Decimal, e.g. 0.08 for 8%"},"discount":{"type":"object","description":"{ type: \"percent\"|\"fixed\", value: n }"},"currency":{"type":"string","enum":["USD","CAD","EUR","GBP","AUD"]},"expiration_days":{"type":"integer","minimum":1,"maximum":365,"default":30},"template":{"type":"string","enum":["standard","slate","emerald","noir","violet"]},"industry":{"type":"string","description":"Styling hint only, e.g. hvac, photography"},"notes":{"type":"string","maxLength":2000},"scope_of_work":{"type":"string","maxLength":5000},"delivery":{"type":"object","description":"{ method: \"email\", to, cc, message }"}}}}}},"responses":{"201":{"description":"Quote created: hosted PDF, QR code, Stripe payment link, expiration","content":{"application/json":{"schema":{"type":"object"}}}},"402":{"description":"Payment required — x402 payment requirements in the Payment-Required header"}}}},"/v1/x402/quote/preview":{"post":{"operationId":"previewQuoteX402","summary":"Preview quote totals before generating","description":"Validates the payload and returns computed line items, subtotal, tax, discount, and total. Nothing is created. x402-protected: unpaid requests receive HTTP 402 with USDC payment requirements on Base. Pay per call, no API key or account required.","security":[],"x-payment-info":{"pricingMode":"fixed","price":"0.02","currency":"USD","protocols":["x402"]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["services"],"properties":{"company":{"type":"object","description":"Optional branding override: name, email, phone, address, terms"},"customer":{"type":"object","description":"Quote recipient: name, email, phone"},"services":{"type":"array","description":"Line items for the quote","items":{"type":"object","required":["name","unit_price"],"properties":{"name":{"type":"string","maxLength":500},"description":{"type":"string","maxLength":1000},"quantity":{"type":"number","default":1},"unit_price":{"type":"number","minimum":0}}}},"tax_rate":{"type":"number","minimum":0,"maximum":1,"description":"Decimal, e.g. 0.08 for 8%"},"discount":{"type":"object","description":"{ type: \"percent\"|\"fixed\", value: n }"},"currency":{"type":"string","enum":["USD","CAD","EUR","GBP","AUD"]},"expiration_days":{"type":"integer","minimum":1,"maximum":365,"default":30},"template":{"type":"string","enum":["standard","slate","emerald","noir","violet"]},"industry":{"type":"string","description":"Styling hint only, e.g. hvac, photography"},"notes":{"type":"string","maxLength":2000},"scope_of_work":{"type":"string","maxLength":5000},"delivery":{"type":"object","description":"{ method: \"email\", to, cc, message }"}}}}}},"responses":{"200":{"description":"Quote created: hosted PDF, QR code, Stripe payment link, expiration","content":{"application/json":{"schema":{"type":"object"}}}},"402":{"description":"Payment required — x402 payment requirements in the Payment-Required header"}}}},"/v1/x402/quote/email":{"post":{"operationId":"emailQuoteX402","summary":"Email a generated quote to the customer","description":"Sends the quote email with an optional personal message. x402-protected: unpaid requests receive HTTP 402 with USDC payment requirements on Base. Pay per call, no API key or account required.","security":[],"x-payment-info":{"pricingMode":"fixed","price":"0.02","currency":"USD","protocols":["x402"]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["id"],"properties":{"id":{"type":"string","format":"uuid","description":"Quote id returned by /v1/x402/quote/generate"},"to":{"type":"string","format":"email","description":"Defaults to customer.email from creation"},"cc":{"type":"string","format":"email"},"message":{"type":"string","description":"Personal message shown in the email"}}}}}},"responses":{"200":{"description":"Quote created: hosted PDF, QR code, Stripe payment link, expiration","content":{"application/json":{"schema":{"type":"object"}}}},"402":{"description":"Payment required — x402 payment requirements in the Payment-Required header"}}}},"/v1/x402/quote/share":{"post":{"operationId":"shareQuoteX402","summary":"Get shareable links for a generated quote","description":"Returns hosted page, PDF URL, QR code (PNG + data URI), and Stripe payment link. x402-protected: unpaid requests receive HTTP 402 with USDC payment requirements on Base. Pay per call, no API key or account required.","security":[],"x-payment-info":{"pricingMode":"fixed","price":"0.01","currency":"USD","protocols":["x402"]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["id"],"properties":{"id":{"type":"string","format":"uuid","description":"Quote id returned by /v1/x402/quote/generate"}}}}}},"responses":{"200":{"description":"Quote created: hosted PDF, QR code, Stripe payment link, expiration","content":{"application/json":{"schema":{"type":"object"}}}},"402":{"description":"Payment required — x402 payment requirements in the Payment-Required header"}}}},"/v1/x402/quote/{id}":{"get":{"operationId":"getQuoteX402","summary":"Fetch a generated quote by id","description":"Returns status, totals, line items, links, and payment status. x402-protected: unpaid requests receive HTTP 402 with USDC payment requirements on Base.","security":[],"x-payment-info":{"pricingMode":"fixed","price":"0.01","currency":"USD","protocols":["x402"]},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Quote created: hosted PDF, QR code, Stripe payment link, expiration","content":{"application/json":{"schema":{"type":"object"}}}},"402":{"description":"Payment required — x402 payment requirements in the Payment-Required header"}}}},"/v1/quotes":{"post":{"operationId":"createQuote","summary":"Generate a quote (API key auth)","security":[{"ApiKeyAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["services"],"properties":{"company":{"type":"object","description":"Optional branding override: name, email, phone, address, terms"},"customer":{"type":"object","description":"Quote recipient: name, email, phone"},"services":{"type":"array","description":"Line items for the quote","items":{"type":"object","required":["name","unit_price"],"properties":{"name":{"type":"string","maxLength":500},"description":{"type":"string","maxLength":1000},"quantity":{"type":"number","default":1},"unit_price":{"type":"number","minimum":0}}}},"tax_rate":{"type":"number","minimum":0,"maximum":1,"description":"Decimal, e.g. 0.08 for 8%"},"discount":{"type":"object","description":"{ type: \"percent\"|\"fixed\", value: n }"},"currency":{"type":"string","enum":["USD","CAD","EUR","GBP","AUD"]},"expiration_days":{"type":"integer","minimum":1,"maximum":365,"default":30},"template":{"type":"string","enum":["standard","slate","emerald","noir","violet"]},"industry":{"type":"string","description":"Styling hint only, e.g. hvac, photography"},"notes":{"type":"string","maxLength":2000},"scope_of_work":{"type":"string","maxLength":5000},"delivery":{"type":"object","description":"{ method: \"email\", to, cc, message }"}}}}}},"responses":{"201":{"description":"Quote created: hosted PDF, QR code, Stripe payment link, expiration","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Missing or invalid API key"}}}}},"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-Key"}}}}