API reference
Offers
The records that have been quoted, with their line items and the article number each line carries in your ERP.
GET/offers
scopeoffers:readEvery record that has reached the offer stage.
Parameters
status
string
Exact match.
updated_since
ISO 8601
Only records changed at or after this instant.
limit
integer, 1–100
Defaults to 25.
cursor
string
From
meta.next_cursor.Request
curl "https://api.zinevu.com/api/public/v1/offers?updated_since=2026-09-01T00:00:00Z" \ -H "Authorization: Bearer $ZINEVU_API_KEY"GET/offers/{id}
scopeoffers:readOne offer, with its lines.
Response
{ "data": { "id": 14868, "uuid": "0f2a…", "number": "2026-0412", "status": "sent", "source": "form", "customer_id": 9931, "language": "nl", "currency": "eur", "total": 8420.5, "total_includes_vat": true, "discount_rate": 10, "created_at": "2026-09-12T10:02:00+00:00", "sent_at": "2026-09-12T10:14:51+00:00", "signed_at": null, "rejected_at": null, "rejected_reason": null, "measurement_accepted_at": null, "invoice": { "number": null, "status": null, "paid_at": null }, "lines": [ { "id": 90211, "position": 3, "name": "Solarmodule", "description": null, "quantity": 12, "unit_price": 180, "base_price": 180, "vat_rate": 0, "source": "auto", "offer_item_id": 1341, "article_number": "vk-solar-01" } ], "record_created_at": "2026-09-11T19:41:22+00:00", "updated_at": "2026-09-12T10:14:51+00:00" }}Lines#
| Field | Notes |
|---|---|
position | The order the line appears in on the PDF. |
unit_price | What the line charges per unit. base_price is what it cost before a discount or a negotiated rate moved it. |
vat_rate | A percentage on the line, because one offer can carry lines at different rates. |
source | auto when a rule wrote the line, otherwise it was typed by hand. |
offer_item_id | The rule that wrote it — see offer items. A hand-typed line has none. |
article_number | Copied onto the line when it was written, so the offer keeps its articles even if the item is later changed or deleted. |
The timestamps are the lifecycle#
created_at is when the offer was built, sent_at when it was e-mailed, signed_at / rejected_at what the customer did with it, and measurement_accepted_at the one in between: the customer accepted the price and asked to be measured on site. record_created_at is the lead's own creation — the moment the enquiry arrived, which is usually earlier.
Each of those transitions also has a webhook event, which is a better way to hear about them than polling this list.