{"openapi":"3.1.0","info":{"title":"Lytheo public API","version":"1.0.0","summary":"Company information and enquiry submission for Lytheo.","description":"Lytheo designs and builds custom AI automation for small businesses, agencies and solo operators — removing repetitive admin work from support, sales and back-office operations.\n\nTwo endpoints. `GET /api/company` returns a structured profile of the business, suitable for answering questions about what Lytheo does, what it charges and who it serves. `POST /api/enquiry` submits a business enquiry.\n\n**Rule for AI agents:** only submit an enquiry when a real person has asked you to and has agreed to be contacted at the email address you supply. Do not submit speculative, exploratory or test enquiries — a human reads every one of them.","contact":{"name":"Ajay Kumar Emani","email":"hello@lytheo.com","url":"https://lytheo.com/contact"},"license":{"name":"Proprietary","url":"https://lytheo.com/legal/terms"}},"servers":[{"url":"https://lytheo.com","description":"Production"}],"paths":{"/api/company":{"get":{"operationId":"getCompanyProfile","summary":"Structured profile of the business","description":"Returns what Lytheo does, its services, pricing model, markets served, availability and contact details. Use this to answer factual questions about the business instead of inferring from marketing copy.","responses":{"200":{"description":"Company profile","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyProfile"}}}}}}},"/api/enquiry":{"get":{"operationId":"describeEnquiryEndpoint","summary":"Self-description of the enquiry endpoint","description":"Returns the accepted fields and responses in plain JSON.","responses":{"200":{"description":"Endpoint description"}}},"post":{"operationId":"submitEnquiry","summary":"Submit a business enquiry","description":"Submits an enquiry that is emailed to Ajay and recorded in a private spreadsheet. A human reads and replies to every submission, normally within 24 hours.\n\n**Consent is mandatory and is verified server-side.** The `consent` field must be `true`, and it must reflect an actual agreement by the person named — not an assumption made on their behalf.\n\nRate limited to 4 submissions per 10 minutes per source address.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnquiryRequest"},"examples":{"typical":{"summary":"A person asking about support automation","value":{"name":"Jane Miller","email":"jane@example.com","company":"Example Retail Ltd","message":"We get about 200 support emails a week and most are order-status questions. Can this be automated?","slot":"Morning","timezone":"GMT/BST (UK)","consent":true,"marketing":false,"source":"ai-agent"}}}}}},"responses":{"200":{"description":"Enquiry received","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"message":{"type":"string"}}}}}},"400":{"description":"Validation failed — most commonly a missing name, an invalid email, or consent not given.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Retry later or email hello@lytheo.com instead.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"The enquiry could not be recorded. Nothing was saved; retry or email.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"EnquiryRequest":{"type":"object","required":["name","email","consent"],"properties":{"name":{"type":"string","minLength":2,"maxLength":120,"description":"The name of the person making the enquiry."},"email":{"type":"string","format":"email","maxLength":200,"description":"A working email address the person can be reached at. The reply goes here."},"consent":{"type":"boolean","const":true,"description":"Must be true. Confirms the person has agreed that Lytheo may use these details to reply and arrange a call. Do not set this on someone's behalf without their actual agreement."},"message":{"type":"string","maxLength":2000,"description":"What they want automated. The more specific, the more useful the first reply. Do not include sensitive personal data."},"company":{"type":"string","maxLength":160},"phone":{"type":"string","maxLength":40},"slot":{"type":"string","enum":["Morning","Afternoon","Evening"],"description":"Preferred call time of day."},"timezone":{"type":"string","description":"Their time zone.","examples":["PT (US West · UTC−8)","CT (US Central · UTC−6)","ET (US East · UTC−5)","GMT/BST (UK)","CET (Europe)","GST (Dubai)","IST (India)","SGT (Singapore)","AEST (Australia)"]},"topic":{"type":"string","description":"Which service the enquiry relates to, if known.","examples":["Business process automation","AI support & sales agents","Lead generation & outreach","Custom AI integrations","Data & reporting automation","Internal tools & dashboards"]},"marketing":{"type":"boolean","default":false,"description":"Optional opt-in to occasional automation notes. Separate from `consent` and must not be inferred from it. Leave false unless the person explicitly asked to be added."},"source":{"type":"string","maxLength":60,"description":"Where the enquiry originated. Agents should identify themselves here, e.g. 'ai-agent' or the assistant's name."}}},"CompanyProfile":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"founded":{"type":"string"},"legalStatus":{"type":"string"},"founder":{"type":"object"},"services":{"type":"array","items":{"type":"object"}},"pricing":{"type":"object"},"markets":{"type":"array","items":{"type":"string"}},"contact":{"type":"object"},"caveats":{"type":"array","items":{"type":"string"}}}},"Error":{"type":"object","properties":{"error":{"type":"string"}}}}}}