apigetproposals JSON request body proposals and templates
POST /api/getproposals lists proposals, filters them, or returns one proposal by id or url. POST /api/getproposal remains available for detailed legacy single lookup.
Fields
keyYour API key.
id, urlWhen provided, returns one proposal instead of a paginated list.
templates_onlyWhen true, filters to proposal templates where type == 4.
deleted, type, status, author, owner, client, code, searchSearch checks proposal name, client, code, contact person, and URL.
date_from, date_toFilter by the proposal created field.
include or expandSupported values: client, entries, views, or all. Client data is included by default. You can also use include_entries and include_views booleans. Display settings such as showgroup and selectoff are returned in a settings object (showgroup also at top level). selectoff: 1 means parent SELECT! buttons are hidden. Entry selectable on a parent row does not mean SELECT! is hidden. tunc is a company setting and is not a proposal settings key. There is no showvat / showtax field; the public VAT line is omitted when all rates are 0%.
page, step, orderby, orderstep is capped at 100. Allowed order fields include id, nr, name, client, status, type, created, deadline, created_at, and updated_at.
List example
{
"key": "YOUR_API_KEY",
"status": 2,
"include": "client",
"page": 1,
"step": 20
}
Templates-only example
{
"key": "YOUR_API_KEY",
"templates_only": true,
"orderby": "name",
"order": "asc"
}
Single expanded example
{
"key": "YOUR_API_KEY",
"id": 456,
"expand": "client,entries,views"
}
Response shape
{
"status": "ok",
"data": [
{
"id": 456,
"name": "Example proposal",
"type": 0,
"public_url": "https://example.com/offer/generated-url",
"showgroup": 1,
"settings": { "showgroup": 1, "selectoff": 0 },
"client_data": { "id": 123, "name": "Example UAB", "meta": {} }
}
],
"page": 1,
"pages": 1,
"count": 1
}
/api/createproposalfromtemplate to create a proposal from a template id with client/contact data.