agency-time

POST /v1/agency/time/projects/from-quote

Start a project from a free-quote request.

All agency-time endpoints

All developer docs

Authentication

Send an API key as a bearer token. The key must carry the agency.time.manage permission; a key without it is refused with 403, not 404.

Where your organisation id goes

This endpoint takes org_id as a field in the JSON body.

Your organisation id is on the API keys screen in your dashboard, beside the key itself. It is the same id in every call you make.

Try it

Replace anything in angle brackets with your own values, and the key placeholder with a key from your dashboard.

curl -X POST https://api.zinndigital.com/v1/agency/time/projects/from-quote \
  -H "Authorization: Bearer zdk_live_…" \
  -H "Content-Type: application/json" \
  -d '{ "quote_id": <string> }'

Signed in? The API console in your dashboard fills in your real organisation id and your own key, and runs the request against the live API so you can see the actual response. Open this endpoint in the API console

Details

Zinn Digital®'s own organisation only (docs/670 §2). In one transaction: the requester becomes a client (found by e-mail, or created, carrying the request's country), a project board is opened with the brief, a time project is linked to both in the quoted currency, the quoted price becomes a fixed-price task, and the request is marked won — which is what stops the admin queue's charge conversion and the draft-from-quote invoice billing the same job again. Requires agency.time.manage in the organisation and the quotes.manage staff permission the admin queue requires. Idempotent per request: a second call returns the project the first one made, with created: false.

Request body

NameTypeRequiredWhat it is
quote_idstringYes
amount_minorintegerNoThe agreed price, NET, in minor units — only for a request that has not been priced. On a priced request omit it; a different figure is refused.
currencystringNo
countrystringNoThe client's ISO-2 country, used only when the request carries none (the public form does not ask). The bill on the checkout needs it; anything but two letters is refused.
org_idstringNo

Response

NameTypeRequiredWhat it is
projectTimeProjectYes
board_idstringYes
client_idstringYes
createdbooleanYesFALSE when a project for this request already existed and was returned.
price_already_billed_onstringNoThe reference of a bill already drafted straight from this request, when there was one — in which case the project carries no fixed price, because that bill charges it.

Errors this endpoint can return

401 · 403 · 422