Log work on an engagement
Needs a token with the write:engagements scope. Authentication
Try in Playground sends a real request to app.helvetly.com with a token you paste. It stays in this browser tab only (session storage) and goes to no one else.
Adds an entry (quantity, date, note, who did it) and answers it with its recomputed period. The date picks the period; 422 validation_failed when it is outside every period, in the future or outside the engagement. Not idempotent: a retry logs the work twice.
bearerAuthAuthorizationBearer <token>A personal API token, hvt_…, with scopes such as read:* or write:invoices
id*stringThe engagement's id.
application/json- body
date?stringDefault today. Not before the engagement starts, not in the future, not after it ends.
datequantity?|Above 0 up to 10000, up to 3 decimals. Required on create.
note?|length <= 500performed_by?|A member's user id. Default on create: the caller.
Created
application/json- response
data*The saved entry and its period, recomputed.
curl -X POST 'https://app.helvetly.com/api/v1/engagements/string/entries' \ -H 'Content-Type: application/json' \ -d '{ "date": "2026-03-14", "quantity": "1.5", "note": "Server migration"}'{ "data": { "entry": { "id": "string", "period_id": "string", "date": "2019-08-24", "quantity": "string", "note": "string", "performed_by": { "id": "string", "name": "string" }, "invoice": { "id": "string", "number": "string", "status": "string", "kind": "string" }, "created_at": "2019-08-24T14:15:22Z", "created_by": { "id": "string", "name": "string" } }, "period": { "id": "string", "index": 0, "starts_on": "2019-08-24", "ends_on": "2019-08-24", "natural_ends_on": "2019-08-24", "full_quantity": "string", "quantity_manual": true, "quantity": "string", "unit_price": "1234.50", "overage_unit_price": "1234.50", "used": "string", "invoiced_quantity": "string", "advance_invoice": { "id": "string", "number": "string", "status": "string", "kind": "string" }, "unearned": "string", "carried_in": "string", "available": "string", "remaining": "string", "overage": "string", "expected": "string", "state": "string", "uninvoiced_quantity": "string", "invoices": [ { "id": "string", "number": "string", "status": "string", "kind": "string" } ] } }}