{"name":"StudioMeyer API","version":"1.0.0","baseUrl":"https://studiomeyer.io/api/v1","description":"Public API for AI agents and developers. Browse portfolio, get quotes, check AI-readiness, and more.","endpoints":[{"path":"/api/v1/memory/purchase","method":"GET","description":"Read new Memory Pro or Team subscription purchase information: current price, localized purchase link and account-management link. Account status is unknown; existing paid subscribers should use account management first. This request starts no checkout session or payment. The user starts checkout and confirms payment themselves.","parameters":{"plan":{"type":"string","enum":["pro","team"],"description":"Existing paid Memory plan: pro or team.","required":true},"locale":{"default":"de","description":"Purchase-page language. HTTP defaults to de; browser tools use the current page language when omitted.","type":"string","enum":["de","en","es"],"optional":true}},"responseSchema":{"type":"object","properties":{"product":{"type":"object","properties":{"slug":{"type":"string","const":"memory"},"name":{"type":"string"}},"required":["slug","name"],"additionalProperties":false},"plan":{"type":"object","properties":{"id":{"type":"string","enum":["pro","team"]},"name":{"type":"string"}},"required":["id","name"],"additionalProperties":false},"locale":{"type":"string","enum":["de","en","es"]},"purchaseType":{"type":"string","const":"new_subscription"},"accountStatus":{"type":"string","const":"unknown"},"amountMinor":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991,"description":"Published price in the currency's minor unit, read from the current product catalog."},"currency":{"type":"string","enum":["EUR","USD"]},"interval":{"type":"string","const":"month"},"purchaseUrl":{"type":"string","pattern":"^https:\\/\\/studiomeyer\\.io\\/(?:de|en|es)\\/services\\/memory#memory-(?:pro|team)$","description":"HTTPS StudioMeyer purchase-page URL at the selected plan's real anchor; not a payment-session URL."},"managementUrl":{"type":"string","pattern":"^https:\\/\\/studiomeyer\\.io\\/(?:de|en|es)\\/portal\\/memory$","description":"Localized Memory account-management page for existing paid subscribers. Account status was not checked."},"requiresUserConfirmation":{"type":"boolean","const":true},"paymentInitiated":{"type":"boolean","const":false},"nextStep":{"type":"string","description":"The user reviews the selected plan, starts the existing checkout and confirms payment themselves."}},"required":["product","plan","locale","purchaseType","accountStatus","amountMinor","currency","interval","purchaseUrl","managementUrl","requiresUserConfirmation","paymentInitiated","nextStep"],"additionalProperties":false},"example":"/api/v1/memory/purchase?plan=pro&locale=de"},{"path":"/api/v1/portfolio","method":"GET","description":"Browse the three demo sites (fictional showcase businesses, not customers) filtered by industry and style.","parameters":{"industry":{"type":"string","optional":true,"values":["immobilien","gastronomie","hotellerie","alle"]},"style":{"type":"string","optional":true,"values":["premium","modern","alle"]},"cursor":{"type":"string","optional":true,"description":"Opaque cursor from the previous response's next_cursor. Omit for the first page."},"limit":{"type":"integer","optional":true,"default":"20","minimum":1,"maximum":100,"description":"Page size from 1 to 100."}},"example":"/api/v1/portfolio?industry=immobilien"},{"path":"/api/v1/services","method":"GET","description":"Full service catalog with capabilities and delivery models.","parameters":{},"example":"/api/v1/services"},{"path":"/api/v1/quote","method":"POST","description":"Get the published web design packages, prices, payment terms, scope, StudioMeyer Care and next contact step. Non-binding; project requirements do not calculate a price and there is no fixed page count.","body":{"projectType":{"type":"string","enum":["website","webshop","webapp","redesign"],"description":"Optional project type; does not change package prices.","optional":true},"pages":{"anyOf":[{"type":"string","maxLength":10},{"type":"number"}],"description":"Legacy compatibility field, ignored; no fixed page count.","optional":true},"features":{"type":"string","maxLength":500,"description":"Legacy alias for notes; notes takes precedence.","optional":true},"notes":{"type":"string","maxLength":500,"description":"Optional project context, returned with the request.","optional":true},"lang":{"type":"string","maxLength":5,"description":"Package language: de or es (case-insensitive prefix); otherwise en. Overrides query lang.","optional":true}},"responseSchema":{"type":"object","required":["agency","language","request","packages","payment","scope","care","aiReady","note","nextStep"],"properties":{"agency":{"type":"string"},"language":{"type":"string","enum":["de","en","es"]},"request":{"type":"object","required":["projectType","notes"],"properties":{"projectType":{"type":["string","null"],"enum":["website","webshop","webapp","redesign",null]},"notes":{"type":["string","null"]}}},"packages":{"type":"array","items":{"type":"object","required":["id","name","price","priceType","delivery"],"properties":{"id":{"type":"string","enum":["fundament","wachstum","individuell"]},"name":{"type":"string"},"price":{"type":"string"},"priceType":{"type":"string","enum":["fixed","from"]},"delivery":{"type":"string"},"fixedPrice":{"type":"string"}}}},"payment":{"type":"string"},"scope":{"type":"string"},"care":{"type":"object","required":["name","terms","covers"],"properties":{"name":{"type":"string"},"terms":{"type":"string"},"covers":{"type":"string"}}},"aiReady":{"type":"string"},"note":{"type":"string"},"nextStep":{"type":"object","required":["action","contactPage","email","api","a2aSkill"],"properties":{"action":{"type":"string"},"contactPage":{"type":"string","format":"uri"},"email":{"type":"string","format":"email"},"api":{"type":"string","format":"uri"},"a2aSkill":{"type":"string"}}}}},"example":"POST /api/v1/quote {\"lang\":\"de\",\"notes\":\"New company website\"}"},{"path":"/api/v1/case-study","method":"GET","description":"Write-ups of the three demo sites with challenge, solution and tech stack, each marked as a demo.","parameters":{"industry":{"type":"string","optional":true,"values":["immobilien","gastronomie","hotellerie"]}},"example":"/api/v1/case-study?industry=immobilien"},{"path":"/api/v1/consultation","method":"POST","description":"Request a free introductory consultation. This is a non-binding inquiry; it does not book an appointment.","headers":{"Idempotency-Key":{"type":"string","optional":true,"minLength":16,"maxLength":128,"pattern":"^[A-Za-z0-9_-]{16,128}$","description":"Use a random UUID for one intended inquiry and reuse the same key and JSON body when retrying. Completed results are replayed while their inbox entry is retained. A changed body returns 409 IDEMPOTENCY_CONFLICT. An unfinished request returns 409 IDEMPOTENCY_IN_PROGRESS with Retry-After; retry with the same key and body, and contact support if it remains incomplete. Never automatically switch keys to retry an incomplete inquiry. Requests without a key keep their existing behavior."}},"body":{"name":{"type":"string","required":true,"minLength":1,"maxLength":200},"email":{"type":"string","required":true,"format":"email","maxLength":320,"description":"A real deliverable address; reserved example domains are rejected."},"phone":{"type":"string","optional":true,"maxLength":30},"topic":{"type":"string","optional":true,"maxLength":500},"website":{"type":"string","optional":true,"maxLength":0,"description":"Honeypot; omit or leave empty."}},"example":"POST /api/v1/consultation: supply name and your real email address; reserved example domains are rejected."},{"path":"/api/v1/validate-webmcp","method":"GET","description":"Validate a website's WebMCP and agents.json implementation against the spec.","parameters":{"url":{"type":"string","required":true,"example":"studiomeyer.io"}},"example":"/api/v1/validate-webmcp?url=studiomeyer.io"},{"path":"/api/v1/generate-agents-json","method":"POST","description":"Generate agents.json and agent-card.json for any business. Returns ready-to-deploy files.","body":{"businessName":{"type":"string","required":true,"minLength":1,"maxLength":200,"description":"Public name of the business."},"businessType":{"type":"string","required":true,"values":["restaurant","immobilien","handwerk","corporate","ecommerce"],"description":"Business category used to choose the generated tool template."},"url":{"type":"string","optional":true,"format":"uri","maxLength":500,"description":"Canonical HTTPS website URL to place in the generated files."},"description":{"type":"string","optional":true,"maxLength":1000,"description":"Short factual description of the business and its offer."},"language":{"type":"string","optional":true,"maxLength":5,"default":"de","description":"Language code for generated labels; defaults to de."}},"example":"POST /api/v1/generate-agents-json { businessName: 'Pizzeria Roma', businessType: 'restaurant' }"}],"discovery":{"agentsJson":"https://studiomeyer.io/.well-known/agents.json","agentCard":"https://studiomeyer.io/.well-known/agent-card.json","openApi":"https://studiomeyer.io/api/v1/openapi"},"rateLimit":"60 requests per minute","versioning":{"majorVersion":1,"urlPattern":"/api/v{major}","breakingChanges":"Breaking changes are published under a new major-version URL.","deprecation":"Deprecated endpoints announce their replacement in documentation and response headers. A sunset date is published only when one has been scheduled."},"contact":"hello@studiomeyer.io"}