KlockworkKlockworkAPI
Solo

Solo payments

Solo payment request and response fields.

Base URL https://api.klockwork.org. Send the agency key and X-Klockwork-Talent (or talentId). The call acts as that active talent. /api/public/solo/public returns 404.

Proof uploads are multipart, not JSON. The file field name is file. Allowed types are PDF, JPEG, PNG, and WebP, up to 5 MB, with at most 3 files on a payment.

List payments

GET /api/public/solo/payments

Response 200: { payments: Payment[] }

FieldTypeRequired
idstring (uuid)yes
clerkUserIdstring, min 1yes
invoiceIdstring (uuid)yes
clientIdstring (uuid)yes
currencystring, min 1, max 8yes
grossCentsinteger, min 0yes
platformFeeCentsinteger, min 0yes
netCentsinteger, min 0yes
method"wise" or "bank" or "gcash" or "maya" or "card" or "other"yes
notesstring or nullyes
paidAtstringyes
createdAtstringyes
updatedAtstringyes
attachmentsarray of objectyes
clientNamestringyes
invoicePrefixstringyes
invoiceNumberintegeryes

attachments items:

FieldTypeRequired
idstring (uuid)yes
paymentIdstring (uuid)yes
clerkUserIdstring, min 1yes
storageBucketstring, min 1yes
storagePathstring, min 1yes
fileNamestring, min 1yes
contentTypestring, min 1yes
sizeBytesintegeryes
createdAtstringyes

Record a payment

POST /api/public/solo/payments

Request body:

FieldTypeRequired
invoiceIdstring (uuid)yes
method"wise" or "bank" or "gcash" or "maya" or "card" or "other"yes
notesstring, max 4000no
paidAtstringno

Response 201: { payment: Payment }

FieldTypeRequired
idstring (uuid)yes
clerkUserIdstring, min 1yes
invoiceIdstring (uuid)yes
clientIdstring (uuid)yes
currencystring, min 1, max 8yes
grossCentsinteger, min 0yes
platformFeeCentsinteger, min 0yes
netCentsinteger, min 0yes
method"wise" or "bank" or "gcash" or "maya" or "card" or "other"yes
notesstring or nullyes
paidAtstringyes
createdAtstringyes
updatedAtstringyes
attachmentsarray of objectyes

attachments items:

FieldTypeRequired
idstring (uuid)yes
paymentIdstring (uuid)yes
clerkUserIdstring, min 1yes
storageBucketstring, min 1yes
storagePathstring, min 1yes
fileNamestring, min 1yes
contentTypestring, min 1yes
sizeBytesintegeryes
createdAtstringyes

Get a payment

GET /api/public/solo/payments/{id}

Response 200: { payment: Payment }

FieldTypeRequired
idstring (uuid)yes
clerkUserIdstring, min 1yes
invoiceIdstring (uuid)yes
clientIdstring (uuid)yes
currencystring, min 1, max 8yes
grossCentsinteger, min 0yes
platformFeeCentsinteger, min 0yes
netCentsinteger, min 0yes
method"wise" or "bank" or "gcash" or "maya" or "card" or "other"yes
notesstring or nullyes
paidAtstringyes
createdAtstringyes
updatedAtstringyes
attachmentsarray of objectyes

attachments items:

FieldTypeRequired
idstring (uuid)yes
paymentIdstring (uuid)yes
clerkUserIdstring, min 1yes
storageBucketstring, min 1yes
storagePathstring, min 1yes
fileNamestring, min 1yes
contentTypestring, min 1yes
sizeBytesintegeryes
createdAtstringyes

Upload proof

POST /api/public/solo/payments/{id}/attachments

Send multipart/form-data with a file part. There is no JSON body.

No request body.

Response 201: { attachment: Attachment }

FieldTypeRequired
idstring (uuid)yes
paymentIdstring (uuid)yes
clerkUserIdstring, min 1yes
storageBucketstring, min 1yes
storagePathstring, min 1yes
fileNamestring, min 1yes
contentTypestring, min 1yes
sizeBytesintegeryes
createdAtstringyes

Delete proof

DELETE /api/public/solo/payments/{id}/attachments/{attachmentId}

Response 200: { ok: true }

Get a proof URL

GET /api/public/solo/payments/{id}/attachments/{attachmentId}/url

Response 200: { url: string, expiresInSeconds: number }

On this page