public

POST /v1/public/quotes

Ask us to price a project — no account.

모든 public 엔드포인트

모든 개발자 문서

인증

이 엔드포인트는 공개되어 있습니다. 자격 증명이나 조직 정보가 필요하지 않으며, 당사의 마케팅 사이트와 AI 답변 엔진이 읽는 것과 동일합니다.

이 엔드포인트는 조직 ID를 받지 않습니다. 사용자의 키가 이미 속한 조직을 식별하며, 응답은 해당 조직으로 한정됩니다.

무료 체험하기

대괄호 안에 있는 모든 내용을 사용자 지정 값으로 바꾸고, 키 플레이스홀더는 대시보드의 키로 바꾸세요.

curl -X POST https://api.zinndigital.com/v1/public/quotes \
  -H "Content-Type: application/json" \
  -d '{ "name": <string>, "email": <string>, "description": <string>, "project_type": <string> }'

로그인하셨나요? 대시보드의 API 콘솔이 실제 조직 ID와 본인의 키를 자동으로 채우고 라이브 API를 대상으로 요청을 실행하므로 실제 응답을 확인할 수 있습니다. API 콘솔에서 이 엔드포인트를 여세요

상세 정보

Anonymous — no credential, no tenant, and the only route into paid development work (development services are quote-only, owner ruling 2026-09-11). Three spam controls fire in order: a fail-closed per-IP and global budget charged before the body is parsed, a honeypot field, then Cloudflare Turnstile. The cheapest first, and the one that makes a vendor call last — so a flood cannot turn our anti-abuse check into an outbound traffic amplifier. ⛔ multipart/form-data accepts attachments (a brief, a spec, a screenshot of the error). They are magic-byte verified against an allow-list and are not servable to anybody until a malware scan returns clean. ⛔⛔ An attachment refused after the enquiry is written does not fail the request. The reply is still 201 with attachments_refused set: throwing away a description somebody spent ten minutes on because a file was the wrong type loses the customer and reads, to them, as the form being broken.

요청 본문

이름유형필수설명
namestring
emailstring
descriptionstringWhat they need doing — the thing we actually price. ⛔ Bounded here as well as in the engine: a TextField has no length, and an operator has to READ this.
project_typestringThe shape of the work, from project_types. Deliberately not the technology — a WordPress build and a bespoke application are quoted by different people on different lead times;…
companystring아니요
phonestring아니요
countrystring아니요ISO 3166-1 alpha-2.
stackstring아니요
budget_bandstring아니요A RANGE, never a figure. Somebody who has not been quoted does not have a number, and storing one invents a precision they never gave — which an operator then anchors their quote…
timelinestring아니요
website_urlstring아니요The site the job is about. ⛔ Optional and may be blank: a broken site is one of the commonest reasons to be here, and refusing the enquiry over a URL loses exactly the customer in…
localestring아니요The language the form was filled in. ⛔ The confirmation is sent in it — without this a platform sold in 58 languages answers every enquiry in English, and nothing looks broken.
source_pagestring아니요Which page the form was submitted from — how we learn what converts.
turnstile_tokenstring아니요Cloudflare's token. ⛔ Not marked required: whether it is needed is the engine's answer (is a secret configured?), not the schema's — hard-coding required would make an…
website_confirmstring아니요⛔ Leave this empty. It is a honeypot, and it is documented rather than hidden because an SDK consumer that populated every string field would otherwise be refused with no way to…

응답

이름유형필수설명
referencestringThe short handle a human quotes back at us, e.g. QR-2609-K7M3PX. ⛔ Not sequential: a running number published to strangers leaks how much work we are winning, and nothing here…
statusstring
attachments_storedinteger
attachments_refusedstringCopy for the visitor when a file could not be attached, or null. ⛔ The enquiry was still accepted — see the endpoint description.

이 엔드포인트가 반환할 수 있는 오류

422 · 429