agency-time

POST /v1/agency/time/billing-runs

Bill now — turn unbilled time into a draft invoice.

모든 agency-time 엔드포인트

인증

Bearer 토큰으로 API 키를 전송하세요. 이 엔드포인트는 명세에 특정 권한을 명시하지 않으므로, 가정하기보다는 키에 필요한 최소한의 권한을 부여하고 응답을 확인하세요.

조직 ID가 들어가는 위치

이 엔드포인트는 JSON 본문의 필드로 org_id을(를) 받습니다.

조직 ID는 대시보드의 API 키 화면에서 키 바로 옆에 있습니다. 이는 실행하는 모든 호출에서 동일한 ID입니다.

무료 체험하기

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

curl -X POST https://api.zinndigital.com/v1/agency/time/billing-runs \
  -H "Authorization: Bearer zdk_live_…" \
  -H "Content-Type: application/json" \
  -d '{ "client_id": <string>, "currency": <string> }'

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

상세 정보

The owner's *"as well as sending on demand invoices"*. Claims the client's unbilled, priced work, hands it to the agency invoicing suite as a **draft**, and records what came back. ⛔ The entries are claimed in a committed transaction **before** the invoicing suite is called, so no other trigger can select them while the call is in flight. The idempotency key handed to the suite is derived from the sorted entry ids rather than minted, so a retry after a crash is given back the invoice that already exists instead of raising a second one for the same hours. `reconcile_state` is `ok` only when the invoice's total for these lines equals our own exact arithmetic. `mismatch` means do not send it.

요청 본문

이름유형필수설명
client_idstring
currencystring
untilstring아니요Bill work up to and including this date — "everything to the end of last month".
notesstring아니요
org_idstring아니요

응답

이름유형필수설명
idstring
client_idstring아니요
currencystring
period_startstring아니요
period_endstring아니요
triggerstring<manual, on_log, day_of_month, threshold>
statusstring<claimed, invoiced, failed, released>`claimed` is the state between claiming the time and the invoicing suite's reply — a process that dies there leaves one, and the recovery pass finishes it with the same derived…
subtotal_minorintegerOur own exact arithmetic, before tax. What the invoice is reconciled against.
minutes_totalinteger
duration_labelstring아니요
entry_countinteger아니요
fixed_line_countinteger아니요
invoice_idstring아니요
invoice_numberstring아니요
invoice_createdboolean아니요FALSE means the invoicing suite's idempotency key fired and handed back an invoice an earlier attempt had already raised. Surfaced rather than hidden: it is the observable that…
reconcile_statestring<pending, ok, mismatch, unavailable>아니요Whether the invoice's total for these lines equals our own arithmetic **exactly**. There is no "close enough": both sides compute from the same two integers, so any difference i…
reconcile_detailstring아니요
invoiced_atstring아니요
released_atstring아니요
last_errorstring아니요
created_atstring
actualobject아니요What this run actually consumed, derived from the time entries rather than read off the run's stored columns — so a divergence is visible on the screen.

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

401 · 403 · 422