{"openapi":"3.1.0","info":{"title":"html.contact API","version":"0.1.0","description":"Form backend for static and AI-generated websites."},"servers":[{"url":"https://html.contact"}],"x-agent-notes":["Never expose hc_live API keys in frontend code.","Use hc_pub public form keys only in HTML.","Every input needs a name attribute.","Use method=\"POST\"."],"components":{"securitySchemes":{"bearerApiKey":{"type":"http","scheme":"bearer"},"sessionCookie":{"type":"apiKey","in":"cookie","name":"better-auth.session_token"}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"DynamicFormSubmit":{"type":"object","additionalProperties":true,"examples":[{"name":"Jane Doe","email":"jane@example.com","message":"Can you help?"}]}}},"paths":{"/f/{formKey}":{"post":{"summary":"Submit a public form","parameters":[{"name":"formKey","in":"path","required":true,"schema":{"type":"string","pattern":"^hc_pub_"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/DynamicFormSubmit"}}}},"responses":{"200":{"description":"Submission accepted"},"400":{"description":"Validation error"}}}},"/submit":{"post":{"summary":"Submit a public form using hidden form_key","requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/DynamicFormSubmit"}}}},"responses":{"200":{"description":"Submission accepted"}}}},"/api/v1/forms":{"get":{"summary":"List forms","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"responses":{"200":{"description":"Forms"}}},"post":{"summary":"Create form","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"responses":{"200":{"description":"Created form"}}}},"/api/v1/forms/{formId}":{"get":{"summary":"Get form","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"responses":{"200":{"description":"Form"}}},"patch":{"summary":"Update form","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"responses":{"200":{"description":"Updated form"}}},"delete":{"summary":"Delete form","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"responses":{"200":{"description":"Deleted"}}}},"/api/v1/forms/{formId}/submissions":{"get":{"summary":"List form submissions","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"responses":{"200":{"description":"Submissions"}}}},"/api/v1/submissions/{submissionId}":{"get":{"summary":"Get submission detail","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"responses":{"200":{"description":"Submission"}}}},"/api/v1/usage":{"get":{"summary":"Get usage","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"responses":{"200":{"description":"Usage"}}}},"/api/v1/api-keys":{"get":{"summary":"List API keys","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"responses":{"200":{"description":"API keys"}}},"post":{"summary":"Create API key","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"responses":{"200":{"description":"API key, shown once"}}}},"/api/v1/agent/exchange-code":{"post":{"summary":"Exchange setup code","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"responses":{"501":{"description":"Planned"}}}}}}