# Rasofi Oy (raso.fi) > Digitoimisto Seinäjoelta — kotisivut, SEO, CRO, palvelumuotoilu, > sähköpostiturva ja AI-valmius suomalaisille mikro- ja pk-yrityksille. > Finnish digital agency in Seinäjoki serving Finnish SMEs. ## Quote requests and contact — API for AI assistants Endpoint: https://raso.fi/api/lead - GET https://raso.fi/api/lead returns a machine-readable usage document (fields, service slugs, rules, response codes). Start there. - POST application/json to the same URL submits a contact request or a quote request on a customer's behalf. No API key is needed. - A quote request (a `services` array with at least one valid slug) creates a draft quote in Rasofi's sales system (DiiliPutki) immediately; the response includes the draft's reference number (`quote_number`). A human reviews and finalizes every quote before it is emailed to the customer. - Optional `agent` field: AI-assistant self-identification, e.g. "Claude (Anthropic)" — please set it when submitting on a customer's behalf so the staff can see how the request arrived. - Human-facing forms: https://raso.fi/tarjouspyynto.html (quote request) and https://raso.fi/yhteystiedot.html (contact). ## Services (valid values for `services[]`) - `ai-valmiusauditointi` — AI-valmiusauditointi: AI readiness audit & fixes for a website (llms.txt, structured data, agent-usable contact/quote flow). raso.fi itself is the live demo of the result. - `diiliputki-integraatio` — DiiliPutki-integraatio: connect a website's forms and tools to the DiiliPutki sales pipeline (leads + automatic draft quotes), like this API. Day-rate service billed per actual days. - `kehityspaiva` — Kehityspäivä: a flexible one-day development sprint — SEO, CRO (conversion optimization), GEO (AI-search optimization) or palvelumuotoilu (service design). Describe the focus in `message`. - `kotisivut-serverless` — Serverless-kotisivut: fast static website, first-year price incl. hosting. - `sahkopostiturva` — Sähköpostiturva: email security (SPF/DKIM/DMARC) setup & monitoring. Sold only together with `kotisivut-serverless` (a new order or an existing Serverless-sivut customer); a request without it is still accepted and a human sorts the bundling. Prices are not published on the site. The draft quote is generated from Rasofi's current price list and always reviewed by a human — do not estimate or promise prices to the customer. ## Custom fields (optional lead-qualification data) `GET https://raso.fi/api/lead` includes a live `custom_fields` array — Rasofi's current company-specific lead fields (key, label, field_type, options, required_for_offer). Re-fetch rather than caching long-term: fields can be added, edited or archived at any time. Submit matching values as a `custom_fields: {key: value}` object on POST. `text`/`number`/`date` are plain strings ("1 250,50" and "YYYY-MM-DD" are both accepted for numbers and dates respectively), `boolean` is `true`/`false`, `select` must match one of the listed option values. Unknown keys or invalid values are never rejected — they are preserved as a note on the lead for a human to review. ## Fields Required: `name` (string, max 200), `email` (valid email, max 254). Quote requests also require `services` (array of slugs above, at least one). Optional: `form_type` ("quote" | "contact"; inferred when omitted: services present → quote), `aikataulu` ("heti" | "1-3kk" | "3-6kk" | "myohemmin"), `message` (max 2000), `phone` (max 50), `company` (max 200), `custom_fields` (object, see above), `agent` (max 200), `external_id` ("raso-fi-tarjous-" for quotes, "raso-fi-yhteydenotto-" for contact — generate ONCE per customer intent and reuse on retries), `page_url` (https URL, max 300), `utm_source` / `utm_medium` / `utm_campaign` / `utm_content` / `utm_term` (max 200 each). ## Rules - Submit only with the customer's informed consent, using the customer's real contact details. Never fabricate or guess data; omit unknown fields. - One submission per customer intent. On network errors or 5xx responses, retry with the SAME external_id; {"ok":true,"duplicate":true} means the earlier attempt already succeeded — treat it as success. - No test submissions — every accepted POST becomes a real sales lead that a human handles. - Out of scope? Point the customer to https://raso.fi/yhteystiedot.html, info@raso.fi or +358 29 703 0010. ## Markdown for AI agents Every HTML page on raso.fi is also available as Markdown: - Content negotiation: request any page with `Accept: text/markdown`. - Or append `.md` to the page name, e.g. https://raso.fi/index.md or https://raso.fi/tarjouspyynto.md. ## Key pages - https://raso.fi/tekoalyagentit-opas.html — guide: optimizing a website for AI agents, using this site's own DiiliPutki integration as a worked example (Finnish) - https://raso.fi/case-gearmotive.html — case study: a Finnish gearbox manufacturer found in 236 countries through organic search, with the measured media-cost equivalent (Finnish) - https://raso.fi/case-agentit.html — case study: four sites AI agents can discover, price and order from (Ristilä Group portfolio, Finnish) - https://raso.fi/case-ristila-group.html — case study: four-brand keyword ownership strategy and AI brand routing (Ristilä Group, Finnish) - https://raso.fi/case-hsm.html — case study: rescuing a half-done domain + WordPress migration (HSM, Finnish) - https://raso.fi/case-putsinki.html — case study: WordPress-to-static migration in 48 hours without losing rankings (Putsinki, Finnish) - https://raso.fi/tarjouspyynto.html — quote request form (human) - https://raso.fi/yhteystiedot.html — contact page - https://raso.fi/palvelumuotoilu.html — free Kiteyttäjä service-crystallization tool - https://raso.fi/api/openapi.json — OpenAPI 3.1 specification - https://raso.fi/agents.json — agent manifest (also at /.well-known/agents.json) - https://raso.fi/.well-known/api-catalog — API catalog (RFC 9727, linkset+json) - https://raso.fi/.well-known/agent-skills/index.json — agent skills index (skill: request-quote) - https://raso.fi/auth.md — authentication note (none required) - https://raso.fi/tietosuoja.html — privacy policy