Company
Read-only client portal request and response fields.
Base URL https://api.klockwork.org. Send the agency key and X-Klockwork-Client (a client UUID). The call acts as that linked company. Anything outside the portal returns 404.
List invoices
GET /api/public/company/invoices
Response 200: { invoices: Invoice[] }
| Field | Type | Required |
|---|---|---|
id | string (uuid) | yes |
kind | "studio_talent" or "agency_client" | yes |
talentId | string (uuid) or null | yes |
talentDisplayName | string or null | yes |
clientId | string (uuid) or null | yes |
clientDisplayName | string or null | yes |
fromAt | string | yes |
toAt | string | yes |
currency | string | yes |
status | "draft" or "paid" or "void" | yes |
invoicePrefix | string | yes |
invoiceNumber | integer | yes |
displayNumber | string | yes |
subtotalCents | integer, min 0 | yes |
totalCents | integer, min 0 | yes |
notes | string or null | yes |
createdAt | string | yes |
lineItems | array of object | no |
lineItems items:
| Field | Type | Required |
|---|---|---|
id | string (uuid) | yes |
sourceKind | "timer" or "manual" | yes |
sourceId | string (uuid) or null | yes |
description | string | yes |
talentId | string (uuid) or null | yes |
talentDisplayName | string or null | yes |
quantityHours | number, min 0 | yes |
unitRateCents | integer, min 0 | yes |
amountCents | integer, min 0 | yes |
sortOrder | integer, min 0 | yes |
Get an invoice
GET /api/public/company/invoices/{id}
Response 200: { invoice: Invoice }
| Field | Type | Required |
|---|---|---|
id | string (uuid) | yes |
kind | "studio_talent" or "agency_client" | yes |
talentId | string (uuid) or null | yes |
talentDisplayName | string or null | yes |
clientId | string (uuid) or null | yes |
clientDisplayName | string or null | yes |
fromAt | string | yes |
toAt | string | yes |
currency | string | yes |
status | "draft" or "paid" or "void" | yes |
invoicePrefix | string | yes |
invoiceNumber | integer | yes |
displayNumber | string | yes |
subtotalCents | integer, min 0 | yes |
totalCents | integer, min 0 | yes |
notes | string or null | yes |
createdAt | string | yes |
lineItems | array of object | no |
lineItems items:
| Field | Type | Required |
|---|---|---|
id | string (uuid) | yes |
sourceKind | "timer" or "manual" | yes |
sourceId | string (uuid) or null | yes |
description | string | yes |
talentId | string (uuid) or null | yes |
talentDisplayName | string or null | yes |
quantityHours | number, min 0 | yes |
unitRateCents | integer, min 0 | yes |
amountCents | integer, min 0 | yes |
sortOrder | integer, min 0 | yes |
List talents
GET /api/public/company/talents
Response 200: { talents: Talent[] }
| Field | Type | Required |
|---|---|---|
assignmentId | string (uuid) | yes |
talentId | string (uuid) | yes |
displayName | string, min 1 | yes |
status | "active" or "pending" | yes |
clientDisplayName | string, min 1 | yes |
List time
GET /api/public/company/time
from must be earlier than to.
Query:
| Field | Type | Required |
|---|---|---|
from | string, min 1 | yes |
to | string, min 1 | yes |
Response 200: TimeReport
| Field | Type | Required |
|---|---|---|
summary | object | yes |
byTalent | array of object | yes |
entries | array of object | yes |
summary object:
| Field | Type | Required |
|---|---|---|
finishedHours | number, min 0 | yes |
openTimerCount | integer, min 0 | yes |
estimatedPay | number, min 0 | yes |
currency | string | yes |
byTalent items:
| Field | Type | Required |
|---|---|---|
talentId | string (uuid) | yes |
talentDisplayName | string | yes |
hourlyRate | number, min 0 | yes |
currency | string | yes |
finishedHours | number, min 0 | yes |
estimatedPay | number, min 0 | yes |
openStatus | "working" or "break" or "pending" or null | yes |
entryCount | integer, min 0 | yes |
entries items:
| Field | Type | Required |
|---|---|---|
id | string, min 1 | yes |
source | "timer" or "manual" | yes |
talentId | string (uuid) | yes |
talentDisplayName | string | yes |
clientId | string (uuid) or null | yes |
clientDisplayName | string or null | yes |
startedAt | string | yes |
endedAt | string or null | yes |
billableHours | number, min 0 | yes |
notes | string or null | yes |
breaks | array of object | yes |
openStatus | "working" or "break" or "pending" or null | yes |
entries[].breaks items:
| Field | Type | Required |
|---|---|---|
startedAt | string | yes |
endedAt | string or null | yes |
label | string | yes |
