Download OpenAPI specification:
Documentation OpenAPI Hiflow for interaction with the Hiflow modules and access to data. Before using our API, you have to create an API key. This can be done in the « Parameters » module. Documentation can be found here (in French): Créer une clé d'API
All API requests require a Bearer token for authentication. Include the token in the Authorization header:
Authorization: Bearer <your_token>
Most list endpoints support pagination with the following parameters:
page: Page number (1-based)items_per_page: Number of items per page (default: 10)Paginated responses return:
{
"items": [...],
"total": 100,
"itemsPerPage": 10
}
The API uses standard HTTP status codes:
200: Success201: Resource created204: Resource deleted (no content)400: Bad request401: Unauthorized403: Forbidden404: Not found406: Invalid parameters500: Server errorAuthenticates a user with login and password credentials. Returns user information and permissions on success.
| login required | string |
| password required | string |
{- "login": "string",
- "password": "string"
}{- "success": true,
- "lang": "string",
- "id": 0,
- "firstname": "string",
- "name": "string",
- "displayname": "string",
- "permissions": { }
}Returns a list of all customers with their contacts. Results are sorted by name.
| search | string Search string applied on the name field |
| include_coord | boolean Include GPS coordinates (lat/lng) for each customer |
[- {
- "id": 0,
- "name": "string",
- "address": "string",
- "postal_code": "string",
- "city": "string",
- "id_country": "string",
- "vat_number": "string",
- "phone": "string",
- "email": "user@example.com",
- "id_tracker": 0,
- "id_legal_form": 0,
- "due_date_formatted": 0,
- "creation_date": "2019-08-24T14:15:22Z",
- "contacts": [
- {
- "id": 0,
- "name": "string",
- "firstname": "string",
- "title": "string",
- "company": "string",
- "job_title": "string",
- "id_type": 0,
- "email": "user@example.com",
- "phone": "string",
- "gsm": "string",
- "birthdate": "2019-08-24",
- "address": "string",
- "cp": "string",
- "city": "string",
- "id_country": "string",
- "vat": "string",
- "natnum": "string",
- "peppol_id": "string",
- "id_lang": "string",
- "id_owner": 0,
- "mailing_list": true,
- "description": "string"
}
], - "coord": {
- "lat": 0.1,
- "lng": 0.1
}
}
]Creates a new customer with the provided information.
| name required | string Customer name |
| address | string |
| postal_code | string |
| city | string |
| id_country | string |
| vat_number | string |
| phone | string |
string <email> | |
| website | string |
| id_tracker | integer |
| id_legal_form | integer |
| due_date_formatted | integer Payment terms in days |
{- "name": "string",
- "address": "string",
- "postal_code": "string",
- "city": "string",
- "id_country": "string",
- "vat_number": "string",
- "phone": "string",
- "email": "user@example.com",
- "website": "string",
- "id_tracker": 0,
- "id_legal_form": 0,
- "due_date_formatted": 0
}"customer/123"Updates an existing customer.
| id required | integer |
| name required | string Customer name |
| address | string |
| postal_code | string |
| city | string |
| id_country | string |
| vat_number | string |
| phone | string |
string <email> | |
| website | string |
| id_tracker | integer |
| id_legal_form | integer |
| due_date_formatted | integer Payment terms in days |
{- "id": 0,
- "name": "string",
- "address": "string",
- "postal_code": "string",
- "city": "string",
- "id_country": "string",
- "vat_number": "string",
- "phone": "string",
- "email": "user@example.com",
- "website": "string",
- "id_tracker": 0,
- "id_legal_form": 0,
- "due_date_formatted": 0
}Returns detailed information about a customer including:
| id required | integer Resource ID |
{- "id": 0,
- "name": "string",
- "address": "string",
- "postal_code": "string",
- "city": "string",
- "id_country": "string",
- "vat_number": "string",
- "phone": "string",
- "email": "user@example.com",
- "id_tracker": 0,
- "id_legal_form": 0,
- "due_date_formatted": 0,
- "creation_date": "2019-08-24T14:15:22Z",
- "contacts": [
- {
- "id": 0,
- "name": "string",
- "firstname": "string",
- "title": "string",
- "company": "string",
- "job_title": "string",
- "id_type": 0,
- "email": "user@example.com",
- "phone": "string",
- "gsm": "string",
- "birthdate": "2019-08-24",
- "address": "string",
- "cp": "string",
- "city": "string",
- "id_country": "string",
- "vat": "string",
- "natnum": "string",
- "peppol_id": "string",
- "id_lang": "string",
- "id_owner": 0,
- "mailing_list": true,
- "description": "string"
}
], - "coord": {
- "lat": 0.1,
- "lng": 0.1
}, - "chart_amount_by_year": {
- "property1": 0,
- "property2": 0
}
}Returns all contacts associated with a specific customer.
| id required | integer Resource ID |
[- {
- "id": 0,
- "name": "string",
- "firstname": "string",
- "title": "string",
- "company": "string",
- "job_title": "string",
- "id_type": 0,
- "email": "user@example.com",
- "phone": "string",
- "gsm": "string",
- "birthdate": "2019-08-24",
- "address": "string",
- "cp": "string",
- "city": "string",
- "id_country": "string",
- "vat": "string",
- "natnum": "string",
- "peppol_id": "string",
- "id_lang": "string",
- "id_owner": 0,
- "mailing_list": true,
- "description": "string"
}
]Identifies a customer using their authentication key. Requires customer authentication to be enabled in account settings.
| auth_key required | string Customer authentication key |
{- "auth_key": "string"
}{- "id": 0,
- "name": "string",
- "address": "string",
- "postal_code": "string",
- "city": "string",
- "id_country": "string",
- "vat_number": "string",
- "phone": "string",
- "email": "user@example.com",
- "id_tracker": 0,
- "id_legal_form": 0,
- "due_date_formatted": 0,
- "creation_date": "2019-08-24T14:15:22Z",
- "contacts": [
- {
- "id": 0,
- "name": "string",
- "firstname": "string",
- "title": "string",
- "company": "string",
- "job_title": "string",
- "id_type": 0,
- "email": "user@example.com",
- "phone": "string",
- "gsm": "string",
- "birthdate": "2019-08-24",
- "address": "string",
- "cp": "string",
- "city": "string",
- "id_country": "string",
- "vat": "string",
- "natnum": "string",
- "peppol_id": "string",
- "id_lang": "string",
- "id_owner": 0,
- "mailing_list": true,
- "description": "string"
}
], - "coord": {
- "lat": 0.1,
- "lng": 0.1
}
}Returns the contacts, optionally restricted to a single customer, supplier or job.
Without the page parameter the whole list is returned, otherwise the paginated form is used.
| page | integer >= 1 Page number for pagination (1-based) |
| items_per_page | integer [ 1 .. 100 ] Default: 10 Number of items per page |
| search | string Search string applied on name, firstname, phone, mobile, address, city, zip, email, tags and events |
| id_customer | integer Only the contacts of this customer |
| id_supplier | integer Only the contacts of this supplier |
| id_job | integer Only the contacts of this job |
| id_types | Array of integers Only the contacts having one of these types, see /contact/types |
| id_tags | Array of integers Only the contacts having one of these tags. An empty value also matches the contacts with no tag. |
| id_events | Array of integers Only the contacts linked to one of these events. An empty value also matches the contacts with no event. |
| mailing_list | boolean Only the contacts flagged as part of the mailing list |
| sort | string Enum: "name" "firstname" "company" "job_title" "email" "phone" "gsm" "city" "cp" "id_type" "birthdate" "id_owner" Sort field |
| sortAscending | boolean Default: true Sort direction, ascending by default |
[ ]Creates a contact, along with its tags, events and its links to customers, suppliers and jobs.
| name required | string |
| firstname | string |
| title | string |
| company | string |
| job_title | string |
| id_type | integer Contact type, see /contact/types. Defaults to the first type when omitted. |
string <email> | |
| phone | string |
| gsm | string |
| birthdate | string <date> |
| address | string |
| cp | string |
| city | string |
| id_country | string Two letters country code. Defaults to the account country. |
| vat | string |
| natnum | string |
| peppol_id | string |
| id_lang | string |
| id_owner | integer |
| mailing_list | boolean |
| description | string |
| id_tags | Array of integers Tags of the contact. When given, replaces all existing tags. |
| id_events | Array of integers Events of the contact. When given, replaces all existing events. |
| id_customers | Array of integers Customers the contact is linked to. When given, replaces all existing customer links. |
| id_suppliers | Array of integers Suppliers the contact is linked to. When given, replaces all existing supplier links. |
| id_jobs | Array of integers Jobs the contact is linked to. When given, replaces all existing job links. |
| id_role | integer Function held by the contact in the linked customers, suppliers and jobs. See /contact/roles. |
{- "name": "string",
- "firstname": "string",
- "title": "string",
- "company": "string",
- "job_title": "string",
- "id_type": 0,
- "email": "user@example.com",
- "phone": "string",
- "gsm": "string",
- "birthdate": "2019-08-24",
- "address": "string",
- "cp": "string",
- "city": "string",
- "id_country": "string",
- "vat": "string",
- "natnum": "string",
- "peppol_id": "string",
- "id_lang": "string",
- "id_owner": 0,
- "mailing_list": true,
- "description": "string",
- "id_tags": [
- 0
], - "id_events": [
- 0
], - "id_customers": [
- 0
], - "id_suppliers": [
- 0
], - "id_jobs": [
- 0
], - "id_role": 0
}"contact/123"Returns the contact together with its tags (tags, id_tags), its events (id_events) and the
customers, suppliers and jobs it is linked to (id_customers, id_suppliers, id_jobs).
When id_customer, id_supplier or id_job is given, the function (id_role) and the note held by
the contact in that customer, supplier or job are added to the answer.
| id required | integer Resource ID |
| id_customer | integer |
| id_supplier | integer |
| id_job | integer |
{- "id": 0,
- "name": "string",
- "firstname": "string",
- "title": "string",
- "company": "string",
- "job_title": "string",
- "id_type": 0,
- "email": "user@example.com",
- "phone": "string",
- "gsm": "string",
- "birthdate": "2019-08-24",
- "address": "string",
- "cp": "string",
- "city": "string",
- "id_country": "string",
- "vat": "string",
- "natnum": "string",
- "peppol_id": "string",
- "id_lang": "string",
- "id_owner": 0,
- "mailing_list": true,
- "description": "string",
- "tags": [
- {
- "id": 0,
- "name": "string"
}
], - "id_tags": [
- 0
], - "id_events": [
- 0
], - "id_customers": [
- 0
], - "id_suppliers": [
- 0
], - "id_jobs": [
- 0
], - "id_role": 0,
- "note": "string"
}Updates the given fields. Tags, events and links are only touched when the matching field is present in the body, and are then entirely replaced by the given list.
| id required | integer Resource ID |
| name required | string |
| firstname | string |
| title | string |
| company | string |
| job_title | string |
| id_type | integer Contact type, see /contact/types. Defaults to the first type when omitted. |
string <email> | |
| phone | string |
| gsm | string |
| birthdate | string <date> |
| address | string |
| cp | string |
| city | string |
| id_country | string Two letters country code. Defaults to the account country. |
| vat | string |
| natnum | string |
| peppol_id | string |
| id_lang | string |
| id_owner | integer |
| mailing_list | boolean |
| description | string |
| id_tags | Array of integers Tags of the contact. When given, replaces all existing tags. |
| id_events | Array of integers Events of the contact. When given, replaces all existing events. |
| id_customers | Array of integers Customers the contact is linked to. When given, replaces all existing customer links. |
| id_suppliers | Array of integers Suppliers the contact is linked to. When given, replaces all existing supplier links. |
| id_jobs | Array of integers Jobs the contact is linked to. When given, replaces all existing job links. |
| id_role | integer Function held by the contact in the linked customers, suppliers and jobs. See /contact/roles. |
{- "name": "string",
- "firstname": "string",
- "title": "string",
- "company": "string",
- "job_title": "string",
- "id_type": 0,
- "email": "user@example.com",
- "phone": "string",
- "gsm": "string",
- "birthdate": "2019-08-24",
- "address": "string",
- "cp": "string",
- "city": "string",
- "id_country": "string",
- "vat": "string",
- "natnum": "string",
- "peppol_id": "string",
- "id_lang": "string",
- "id_owner": 0,
- "mailing_list": true,
- "description": "string",
- "id_tags": [
- 0
], - "id_events": [
- 0
], - "id_customers": [
- 0
], - "id_suppliers": [
- 0
], - "id_jobs": [
- 0
], - "id_role": 0
}Creates the link if needed, and sets the function and the note held by the contact there.
| id required | integer Resource ID |
| entity_type required | string Enum: "customer" "supplier" "job" |
| id_entity required | integer ID of the customer, supplier or job |
| id_role | integer Function held by the contact in this customer, supplier or job. See /contact/roles. |
| note | string |
{- "entity_type": "customer",
- "id_entity": 0,
- "id_role": 0,
- "note": "string"
}Removes the link. The contact itself is not deleted.
| id required | integer Resource ID |
| entity_type required | string Enum: "customer" "supplier" "job" |
| id_entity required | integer |
{- "entity_type": "customer",
- "id_entity": 0
}Returns a list of estimates with optional filtering and pagination.
| search | string Search string applied on the name field |
| page | integer >= 1 Page number for pagination (1-based) |
| items_per_page | integer [ 1 .. 100 ] Default: 10 Number of items per page |
| id_statuses | Array of integers Filter by status IDs |
| id_customers | Array of integers Filter by customer IDs |
[ ]Creates a new estimate with entries. If id_item is specified in an entry, the entry data will be populated from the catalog item. If id_status is provided and corresponds to an ACCEPTED status, a job will be automatically created.
| id_customer required | integer Customer ID (mandatory) |
| description | string |
| customer_ref | string |
| id_status | integer |
required | Array of objects |
{- "id_customer": 0,
- "description": "string",
- "customer_ref": "string",
- "id_status": 0,
- "entries": [
- {
- "id_item": 0,
- "label": "string",
- "description": "string",
- "quantity": 0.1,
- "id_unit": 0,
- "unitary_price": 0.1,
- "id_vat_type": 0
}
]
}"estimate/123"Updates an existing estimate. All existing entries are replaced with the new entries. If id_status changes to ACCEPTED, a job will be automatically created.
| id required | integer |
| id_customer required | integer Customer ID (mandatory) |
| description | string |
| customer_ref | string |
| id_status | integer |
required | Array of objects |
{- "id": 0,
- "id_customer": 0,
- "description": "string",
- "customer_ref": "string",
- "id_status": 0,
- "entries": [
- {
- "id_item": 0,
- "label": "string",
- "description": "string",
- "quantity": 0.1,
- "id_unit": 0,
- "unitary_price": 0.1,
- "id_vat_type": 0
}
]
}Returns detailed information about an estimate including all entries.
| id required | integer Resource ID |
{- "id": 0,
- "id_customer": 0,
- "customer_name": "string",
- "description": "string",
- "customer_ref": "string",
- "id_status": 0,
- "status": "string",
- "status_color": "string",
- "amount": 0.1,
- "entries": [
- {
- "id": 0,
- "label": "string",
- "description": "string",
- "quantity": 0.1,
- "id_unit": 0,
- "unit_name": "string",
- "unitary_price": 0.1,
- "unitary_price_formatted": "string",
- "amount": 0.1,
- "amount_formatted": "string",
- "id_vat_type": 0,
- "vat_pct": 0.1,
- "amount_vat_incl": 0.1,
- "unitary_price_vat_incl": 0.1,
- "id_item": 0
}
]
}Returns delivery notes with optional filtering and pagination. Without page, the whole filtered list is returned.
Each item carries a signed flag telling whether the customer signature has been captured.
| search | string Search string applied on the name field |
| page | integer >= 1 Page number for pagination (1-based) |
| items_per_page | integer [ 1 .. 100 ] Default: 10 Number of items per page |
| id_statuses | Array of integers Filter by status IDs (array or comma separated) |
| id_customers | Array of integers Filter by customer IDs (array or comma separated) |
| id_users | Array of integers Filter by owner IDs (array or comma separated) |
| id_tracker | integer Only the delivery notes attached to this tracker (job) |
| date_from | string <date> Delivery notes dated on or after this date |
| date_to | string <date> Delivery notes dated on or before this date |
[ ]Creates a delivery note, in the draft status by default, with its entries.
id_customer is mandatory unless id_tracker is given, in which case the customer of the tracker is used.
Entries can be typed in (label, quantity, unitary_price...), copied from the catalog (id_item)
or copied from items already sold on the job (id_item_entries).
A signature can be given right away with the same fields as /deliverynote/{id}/sign.
The reference is generated according to the account configuration.
| id_customer | integer Mandatory on creation unless id_tracker is given (the customer is then derived from the tracker) |
| id_tracker | integer Tracker (job or sub-project) to attach the delivery note to |
| id_customer_contact | integer or null Contact of the customer, reset when the customer changes |
| customer_ref | string Title |
| description | string HTML note printed on the PDF |
| additional_text | string Text printed below the totals |
| deliverynote_date | string <date> Defaults to the configured default date (today) |
| deliverynote_ref | string Reference; normally left empty and generated by the application |
| id_status | integer See /deliverynote/status |
| id_owner | integer |
| id_signer | integer |
Array of objects (DeliverynoteEntryInput) On update, the given entries replace all existing ones. Refused (406) once the delivery note is signed. | |
| id_item_entries | Array of integers Ids of items already sold on the job (item_entry) to copy as entries |
| signature | string Customer signature, same as /deliverynote/{id}/sign (signer_name, lat, lng, worker_signature and worker_name are accepted too) |
{- "id_customer": 0,
- "id_tracker": 0,
- "id_customer_contact": 0,
- "customer_ref": "string",
- "description": "string",
- "additional_text": "string",
- "deliverynote_date": "2019-08-24",
- "deliverynote_ref": "string",
- "id_status": 0,
- "id_owner": 0,
- "id_signer": 0,
- "entries": [
- {
- "id_item": 0,
- "label": "string",
- "description": "string",
- "type": "normal",
- "quantity": 1,
- "id_unit": 0,
- "unitary_price": 0,
- "id_vat_type": 0,
- "unitary_cost": 0.1,
- "id_supplier": 0,
- "sort": 0
}
], - "id_item_entries": [
- 0
], - "signature": "string"
}Updates the given fields of an existing delivery note (the id can be given in the body or in the URL as /deliverynote/{id}).
When entries is given, it replaces all existing entries; this is refused once the delivery note is signed.
| id required | integer |
| id_customer | integer Mandatory on creation unless id_tracker is given (the customer is then derived from the tracker) |
| id_tracker | integer Tracker (job or sub-project) to attach the delivery note to |
| id_customer_contact | integer or null Contact of the customer, reset when the customer changes |
| customer_ref | string Title |
| description | string HTML note printed on the PDF |
| additional_text | string Text printed below the totals |
| deliverynote_date | string <date> Defaults to the configured default date (today) |
| deliverynote_ref | string Reference; normally left empty and generated by the application |
| id_status | integer See /deliverynote/status |
| id_owner | integer |
| id_signer | integer |
Array of objects (DeliverynoteEntryInput) On update, the given entries replace all existing ones. Refused (406) once the delivery note is signed. | |
| id_item_entries | Array of integers Ids of items already sold on the job (item_entry) to copy as entries |
| signature | string Customer signature, same as /deliverynote/{id}/sign (signer_name, lat, lng, worker_signature and worker_name are accepted too) |
{- "id": 0,
- "id_customer": 0,
- "id_tracker": 0,
- "id_customer_contact": 0,
- "customer_ref": "string",
- "description": "string",
- "additional_text": "string",
- "deliverynote_date": "2019-08-24",
- "deliverynote_ref": "string",
- "id_status": 0,
- "id_owner": 0,
- "id_signer": 0,
- "entries": [
- {
- "id_item": 0,
- "label": "string",
- "description": "string",
- "type": "normal",
- "quantity": 1,
- "id_unit": 0,
- "unitary_price": 0,
- "id_vat_type": 0,
- "unitary_cost": 0.1,
- "id_supplier": 0,
- "sort": 0
}
], - "id_item_entries": [
- 0
], - "signature": "string"
}Returns the delivery note with its entries, signature (when signed) and attached files.
| id required | integer Resource ID |
{- "id": 0,
- "id_customer": 0,
- "customer_name": "string",
- "id_customer_contact": 0,
- "contact_name": "string",
- "id_tracker": 0,
- "tracker_name": "string",
- "id_job": 0,
- "id_owner": 0,
- "id_signer": 0,
- "deliverynote_ref": "string",
- "ref_display": "string",
- "customer_ref": "string",
- "description": "string",
- "additional_text": "string",
- "deliverynote_date": "2019-08-24",
- "creation_date": "2019-08-24T14:15:22Z",
- "amount": 0.1,
- "amount_formatted": "string",
- "vat": 0.1,
- "vatincl": 0.1,
- "vatincl_formatted": "string",
- "id_status": 0,
- "status": "string",
- "status_color": "string",
- "status_type": 0,
- "entries": [
- {
- "id": 0,
- "id_deliverynote": 0,
- "label": "string",
- "description": "string",
- "type": "normal",
- "quantity": 0.1,
- "id_unit": 0,
- "unit_name": "string",
- "unitary_price": 0.1,
- "unitary_price_formatted": "string",
- "amount": 0.1,
- "amount_formatted": "string",
- "id_vat_type": 0,
- "vat_pct": 0.1,
- "amount_vat_incl": 0.1,
- "unitary_price_vat_incl": 0.1,
- "unitary_cost": 0.1,
- "id_supplier": 0,
- "sort": 0
}
], - "signed": true,
- "signature": {
- "signer_name": "string",
- "image": "string",
- "worker_name": "string",
- "worker_image": "string",
- "signed_at": "2019-08-24T14:15:22Z",
- "lat": 0.1,
- "lng": 0.1
}, - "files": [
- {
- "id": 0,
- "name": "string"
}
]
}Same as PUT /deliverynote, with the id in the URL.
| id required | integer Resource ID |
| id_customer | integer Mandatory on creation unless id_tracker is given (the customer is then derived from the tracker) |
| id_tracker | integer Tracker (job or sub-project) to attach the delivery note to |
| id_customer_contact | integer or null Contact of the customer, reset when the customer changes |
| customer_ref | string Title |
| description | string HTML note printed on the PDF |
| additional_text | string Text printed below the totals |
| deliverynote_date | string <date> Defaults to the configured default date (today) |
| deliverynote_ref | string Reference; normally left empty and generated by the application |
| id_status | integer See /deliverynote/status |
| id_owner | integer |
| id_signer | integer |
Array of objects (DeliverynoteEntryInput) On update, the given entries replace all existing ones. Refused (406) once the delivery note is signed. | |
| id_item_entries | Array of integers Ids of items already sold on the job (item_entry) to copy as entries |
| signature | string Customer signature, same as /deliverynote/{id}/sign (signer_name, lat, lng, worker_signature and worker_name are accepted too) |
{- "id_customer": 0,
- "id_tracker": 0,
- "id_customer_contact": 0,
- "customer_ref": "string",
- "description": "string",
- "additional_text": "string",
- "deliverynote_date": "2019-08-24",
- "deliverynote_ref": "string",
- "id_status": 0,
- "id_owner": 0,
- "id_signer": 0,
- "entries": [
- {
- "id_item": 0,
- "label": "string",
- "description": "string",
- "type": "normal",
- "quantity": 1,
- "id_unit": 0,
- "unitary_price": 0,
- "id_vat_type": 0,
- "unitary_cost": 0.1,
- "id_supplier": 0,
- "sort": 0
}
], - "id_item_entries": [
- 0
], - "signature": "string"
}Returns all delivery note statuses, ordered as in the application. The type tells the meaning of the status (1 = draft, 2 = ready, 3 = sent, 4 = delivered).
[- {
- "id": 0,
- "type": 0,
- "name": "string",
- "sort": 0,
- "color": "string"
}
]Stores the customer signature captured on site (typically from the mobile app), with the name of the signer, the GPS position and optionally the signature of the person who delivered.
Signing a delivery note:
PUT with entries is refused afterwards),Signing again replaces the previous signature. The delivery note is returned as GET /deliverynote/{id} does.
| id required | integer Resource ID |
| signature required | string Customer signature image, base64 encoded PNG (a data URI such as |
| signer_name | string Name of the person who signed for the customer |
| worker_signature | string Signature of the person who delivered, same format as signature |
| worker_name | string |
| lat | number <float> Latitude where the signature was captured |
| lng | number <float> Longitude where the signature was captured |
| sign_date | string <date-time> When the signature was captured, defaults to now |
{- "signature": "string",
- "signer_name": "string",
- "worker_signature": "string",
- "worker_name": "string",
- "lat": 0.1,
- "lng": 0.1,
- "sign_date": "2019-08-24T14:15:22Z"
}{- "id": 0,
- "id_customer": 0,
- "customer_name": "string",
- "id_customer_contact": 0,
- "contact_name": "string",
- "id_tracker": 0,
- "tracker_name": "string",
- "id_job": 0,
- "id_owner": 0,
- "id_signer": 0,
- "deliverynote_ref": "string",
- "ref_display": "string",
- "customer_ref": "string",
- "description": "string",
- "additional_text": "string",
- "deliverynote_date": "2019-08-24",
- "creation_date": "2019-08-24T14:15:22Z",
- "amount": 0.1,
- "amount_formatted": "string",
- "vat": 0.1,
- "vatincl": 0.1,
- "vatincl_formatted": "string",
- "id_status": 0,
- "status": "string",
- "status_color": "string",
- "status_type": 0,
- "entries": [
- {
- "id": 0,
- "id_deliverynote": 0,
- "label": "string",
- "description": "string",
- "type": "normal",
- "quantity": 0.1,
- "id_unit": 0,
- "unit_name": "string",
- "unitary_price": 0.1,
- "unitary_price_formatted": "string",
- "amount": 0.1,
- "amount_formatted": "string",
- "id_vat_type": 0,
- "vat_pct": 0.1,
- "amount_vat_incl": 0.1,
- "unitary_price_vat_incl": 0.1,
- "unitary_cost": 0.1,
- "id_supplier": 0,
- "sort": 0
}
], - "signed": true,
- "signature": {
- "signer_name": "string",
- "image": "string",
- "worker_name": "string",
- "worker_image": "string",
- "signed_at": "2019-08-24T14:15:22Z",
- "lat": 0.1,
- "lng": 0.1
}, - "files": [
- {
- "id": 0,
- "name": "string"
}
]
}Returns the recipients, subject, body and attachments the application would propose for this delivery note,
so they can be reviewed or overridden before calling /deliverynote/{id}/send.
A reference is assigned to the delivery note if it does not have one yet.
| id required | integer Resource ID |
{- "email": "string",
- "subject": "string",
- "body": "string",
- "ref_display": "string",
- "deliverynote_date": "string",
- "files": [
- {
- "id": 0,
- "name": "string"
}
]
}Sends the delivery note PDF (with its signature when signed) by email, on behalf of the logged user, together with the files attached to the delivery note.
A reference is assigned to the delivery note if it does not have one yet, and the status moves on to the next "sent" status when there is one after the current status. A delivery note cannot be sent more than 10 times.
| id required | integer Resource ID |
| to | string Comma separated recipients, defaults to the contact then to the customer email |
| cc | string Comma separated recipients in copy |
| copy | boolean Default: false Send a blind copy to the logged user |
| subject | string Defaults to the reference as displayed in the application (%tokens are replaced) |
| message | string HTML body, defaults to the configured template (%tokens are replaced) |
{- "to": "string",
- "cc": "string",
- "copy": false,
- "subject": "string",
- "message": "string"
}{- "id": 0,
- "id_customer": 0,
- "customer_name": "string",
- "id_customer_contact": 0,
- "contact_name": "string",
- "id_tracker": 0,
- "tracker_name": "string",
- "id_job": 0,
- "id_owner": 0,
- "id_signer": 0,
- "deliverynote_ref": "string",
- "ref_display": "string",
- "customer_ref": "string",
- "description": "string",
- "additional_text": "string",
- "deliverynote_date": "2019-08-24",
- "creation_date": "2019-08-24T14:15:22Z",
- "amount": 0.1,
- "amount_formatted": "string",
- "vat": 0.1,
- "vatincl": 0.1,
- "vatincl_formatted": "string",
- "id_status": 0,
- "status": "string",
- "status_color": "string",
- "status_type": 0,
- "entries": [
- {
- "id": 0,
- "id_deliverynote": 0,
- "label": "string",
- "description": "string",
- "type": "normal",
- "quantity": 0.1,
- "id_unit": 0,
- "unit_name": "string",
- "unitary_price": 0.1,
- "unitary_price_formatted": "string",
- "amount": 0.1,
- "amount_formatted": "string",
- "id_vat_type": 0,
- "vat_pct": 0.1,
- "amount_vat_incl": 0.1,
- "unitary_price_vat_incl": 0.1,
- "unitary_cost": 0.1,
- "id_supplier": 0,
- "sort": 0
}
], - "signed": true,
- "signature": {
- "signer_name": "string",
- "image": "string",
- "worker_name": "string",
- "worker_image": "string",
- "signed_at": "2019-08-24T14:15:22Z",
- "lat": 0.1,
- "lng": 0.1
}, - "files": [
- {
- "id": 0,
- "name": "string"
}
]
}Returns a list of invoices with optional filtering and pagination.
| search | string Search string applied on the name field |
| page | integer >= 1 Page number for pagination (1-based) |
| items_per_page | integer [ 1 .. 100 ] Default: 10 Number of items per page |
| id_customers | Array of integers Filter by customer IDs |
| id_statuses | Array of integers Filter by status IDs |
| id_tracker | integer Filter by tracker ID |
| id_tags | Array of integers Filter on tags with no group: invoices having at least one of these tags. Accepts |
| dateFrom | string <date> Filter invoices from this date |
| dateTo | string <date> Filter invoices until this date |
[ ]Creates a new invoice. Can be created:
| id_customer required | integer |
| id_estimate | integer If specified, creates invoice from an existing estimate |
required | Array of objects |
| id_tags | Array of integers Tags to set on the new invoice (see |
{- "id_customer": 0,
- "id_estimate": 0,
- "entries": [
- {
- "label": "string",
- "description": "string",
- "quantity": 0.1,
- "unitary_price": 0.1,
- "id_tracker": 0,
- "id_vat_type": 0,
- "pct_vat": 0
}
], - "id_tags": [
- 0
]
}"invoice/123"Returns detailed information about an invoice including all entries.
| id required | integer Resource ID |
{- "id": 0,
- "id_customer": 0,
- "invoice_date": "2019-08-24",
- "invoice_duedate": "2019-08-24",
- "invoice_type": "invoice",
- "amount": 0.1,
- "id_status": 0,
- "reference": "string",
- "entries": [
- {
- "id": 0,
- "label": "string",
- "description": "string",
- "quantity": 0.1,
- "id_unit": 0,
- "unit_name": "string",
- "unitary_price": 0.1,
- "unitary_price_formatted": "string",
- "amount": 0.1,
- "amount_formatted": "string",
- "id_vat_type": 0
}
], - "tags": [
- {
- "id": 0,
- "name": "string",
- "color": "string",
- "id_group": 0
}
], - "id_tags": [
- 0
], - "items": [
- {
- "id": 0,
- "label": "string"
}
]
}Updates invoice fields and/or its tags. Typical use: tag an invoice without changing anything else
with {"add_id_tags": [12]}.
| id required | integer Resource ID |
| id_tags | Array of integers Replaces every tag of the invoice. An empty array removes them all. |
| add_id_tags | Array of integers Tags to add, existing tags are kept |
| remove_id_tags | Array of integers Tags to remove, other tags are kept |
| property name* additional property | any |
{- "add_id_tags": [
- 12
]
}Returns the recipients, subject, body and attachments the application would propose for this invoice,
so they can be reviewed or overridden before calling /invoice/{id}/send.
A reference is assigned to the invoice if it does not have one yet.
| id required | integer Resource ID |
| reminder | boolean Default: false Return the reminder subject and body instead of the regular ones |
{- "email": "string",
- "subject": "string",
- "body": "string",
- "ref_display": "string",
- "activity_report_format": "string",
- "timesheet_format": "string",
- "files": [
- { }
], - "invoice_date": "string"
}Sends the invoice PDF by email, on behalf of the logged user, together with the files attached to the invoice and, when requested, the timesheet and activity reports.
A reference is assigned to the invoice if it does not have one yet, and the invoice status moves on to the next "sent" status. An invoice cannot be sent more than 10 times.
| id required | integer Resource ID |
| to | string Comma separated recipients. Defaults to the invoice contact, then to the customer email. |
| cc | string Comma separated carbon copy recipients. |
| copy | boolean Default: false Send a blind copy to the logged user. |
| subject | string Defaults to " |
| message | string HTML body. Defaults to the invoice default mail body configured on the account. Tokens such as %ref and %sender are replaced. |
| reminder | boolean Default: false Use the reminder subject and body instead of the regular ones. |
| timesheet | string Format of the timesheet report to attach ("pdf", "xls", ...), or false to attach none. Defaults to the account configuration. Ignored for credit notes. |
| activity_report | string Format of the activity report to attach ("pdf", "xls", ...), or false to attach none. Defaults to the account configuration. Ignored for credit notes. |
{- "to": "string",
- "cc": "string",
- "copy": false,
- "subject": "string",
- "message": "string",
- "reminder": false,
- "timesheet": "string",
- "activity_report": "string"
}{- "id": 0,
- "id_customer": 0,
- "invoice_date": "2019-08-24",
- "invoice_duedate": "2019-08-24",
- "invoice_type": "invoice",
- "amount": 0.1,
- "id_status": 0,
- "reference": "string",
- "entries": [
- {
- "id": 0,
- "label": "string",
- "description": "string",
- "quantity": 0.1,
- "id_unit": 0,
- "unit_name": "string",
- "unitary_price": 0.1,
- "unitary_price_formatted": "string",
- "amount": 0.1,
- "amount_formatted": "string",
- "id_vat_type": 0
}
], - "tags": [
- {
- "id": 0,
- "name": "string",
- "color": "string",
- "id_group": 0
}
], - "id_tags": [
- 0
], - "items": [
- {
- "id": 0,
- "label": "string"
}
]
}Exports the invoice as an EFFF XML document embedding its attachments and submits it to the Peppol network. Requires a Peppol ID on the account and on the customer.
A reference is assigned to the invoice if it does not have one yet, and the invoice status moves on to the next "sent" status. An invoice cannot be sent more than 10 times.
| id required | integer Resource ID |
| timesheet | string Format of the timesheet report to embed ("pdf", "xls", ...), or false to embed none. Defaults to the account configuration. |
| activity_report | string Format of the activity report to embed ("pdf", "xls", ...), or false to embed none. Defaults to the account configuration. |
{- "timesheet": "string",
- "activity_report": "string"
}{- "id": 0,
- "id_customer": 0,
- "invoice_date": "2019-08-24",
- "invoice_duedate": "2019-08-24",
- "invoice_type": "invoice",
- "amount": 0.1,
- "id_status": 0,
- "reference": "string",
- "entries": [
- {
- "id": 0,
- "label": "string",
- "description": "string",
- "quantity": 0.1,
- "id_unit": 0,
- "unit_name": "string",
- "unitary_price": 0.1,
- "unitary_price_formatted": "string",
- "amount": 0.1,
- "amount_formatted": "string",
- "id_vat_type": 0
}
], - "tags": [
- {
- "id": 0,
- "name": "string",
- "color": "string",
- "id_group": 0
}
], - "id_tags": [
- 0
], - "items": [
- {
- "id": 0,
- "label": "string"
}
]
}Returns a list of catalog items with optional filtering.
| search | string Search string applied on the name field |
| id_folder | integer Filter by folder ID |
[- {
- "id": 0,
- "label": "string",
- "description": "string",
- "id_folder": 0,
- "id_unit": 0,
- "unitary_price": 0.1,
- "unitary_cost": 0.1,
- "id_vat_type": 0,
- "id_supplier": 0
}
]Creates a new catalog item or folder. Set type='folder' to create a folder instead of an item.
| label | string |
| description | string |
| id_folder | integer |
| id_unit | integer |
| unitary_price | number <float> |
| unitary_cost | number <float> |
| id_vat_type | integer |
| id_supplier | integer |
| type | string Enum: "item" "folder" Set to 'folder' to create a folder instead of an item |
| id_parent | integer Parent folder ID (when creating a folder) |
| name | string Folder name (when creating a folder) |
{- "label": "string",
- "description": "string",
- "id_folder": 0,
- "id_unit": 0,
- "unitary_price": 0.1,
- "unitary_cost": 0.1,
- "id_vat_type": 0,
- "id_supplier": 0,
- "type": "item",
- "id_parent": 0,
- "name": "string"
}"item/123"Returns a list of jobs (projects) with optional filtering and pagination.
| search | string Search string applied on the name field |
| page | integer >= 1 Page number for pagination (1-based) |
| items_per_page | integer [ 1 .. 100 ] Default: 10 Number of items per page |
| id_statuses | Array of integers Filter by project status IDs |
| id_customers | Array of integers Filter by customer IDs |
| from | string <date> Start date filter |
| to | string <date> End date filter |
[ ]Creates a new job (project).
| name required | string |
| title | string |
| description | string |
| id_customer required | integer |
| id_status | integer |
{- "name": "string",
- "title": "string",
- "description": "string",
- "id_customer": 0,
- "id_status": 0
}"job/123"| id required | integer |
| name required | string |
| title | string |
| description | string |
| id_customer required | integer |
| id_status | integer |
{- "id": 0,
- "name": "string",
- "title": "string",
- "description": "string",
- "id_customer": 0,
- "id_status": 0
}Returns detailed information about a job including:
| id required | integer Resource ID |
{- "id": 0,
- "name": "string",
- "title": "string",
- "description": "string",
- "id_tracker": 0,
- "id_status": 0,
- "customer": {
- "id": 0,
- "name": "string",
- "address": "string",
- "postal_code": "string",
- "city": "string",
- "id_country": "string",
- "vat_number": "string",
- "phone": "string",
- "email": "user@example.com",
- "id_tracker": 0,
- "id_legal_form": 0,
- "due_date_formatted": 0,
- "creation_date": "2019-08-24T14:15:22Z",
- "contacts": [
- {
- "id": 0,
- "name": "string",
- "firstname": "string",
- "title": "string",
- "company": "string",
- "job_title": "string",
- "id_type": 0,
- "email": "user@example.com",
- "phone": "string",
- "gsm": "string",
- "birthdate": "2019-08-24",
- "address": "string",
- "cp": "string",
- "city": "string",
- "id_country": "string",
- "vat": "string",
- "natnum": "string",
- "peppol_id": "string",
- "id_lang": "string",
- "id_owner": 0,
- "mailing_list": true,
- "description": "string"
}
], - "coord": {
- "lat": 0.1,
- "lng": 0.1
}
}, - "tracker": { },
- "consumed": { },
- "top_trackers": [ ],
- "workers": [ ],
- "details": { }
}Returns a list of tasks with optional filtering, sorting, and pagination. Supports both singular and plural parameter names for compatibility.
| search | string Search string applied on the name field |
| page | integer >= 1 Page number for pagination (1-based) |
| items_per_page | integer [ 1 .. 100 ] Default: 10 Number of items per page |
integer or Array of integers Filter by customer ID (can be array) | |
integer or Array of integers Filter by customer IDs (alias for id_customer) | |
integer or Array of integers Filter by status ID (can be array) | |
integer or Array of integers Filter by status IDs (alias for id_status) | |
integer or Array of integers Filter by assigned user ID (can be array) | |
integer or Array of integers Filter by assigned user IDs (alias for id_user) | |
| date_start | string <date> Filter tasks starting from this date |
| date_end | string <date> Filter tasks ending before this date |
| created_from | string <date> Filter tasks created from this date |
| created_to | string <date> Filter tasks created until this date |
| sort | string Field to sort by (must be in allowed sort fields) |
| sortAscending | boolean Sort in ascending order (presence of parameter enables ascending) |
| only_open | boolean Deprecated Only return open tasks (deprecated, use id_status instead) |
[ ]Creates a new task with optional user assignments and tags.
| name | string |
| description | string |
| id_tracker | integer |
| id_status | integer |
| id_priority | integer |
| date_start | string <date> |
| date_end | string <date> |
| users | Array of integers List of user IDs to assign |
| tags | Array of integers List of tag IDs |
{- "name": "string",
- "description": "string",
- "id_tracker": 0,
- "id_status": 0,
- "id_priority": 0,
- "date_start": "2019-08-24",
- "date_end": "2019-08-24",
- "users": [
- 0
], - "tags": [
- 0
]
}"task/123"Updates an existing task including user assignments and tags.
| id required | integer |
| name | string |
| description | string |
| id_tracker | integer |
| id_status | integer |
| id_priority | integer |
| date_start | string <date> |
| date_end | string <date> |
| users | Array of integers List of user IDs to assign |
| tags | Array of integers List of tag IDs |
{- "id": 0,
- "name": "string",
- "description": "string",
- "id_tracker": 0,
- "id_status": 0,
- "id_priority": 0,
- "date_start": "2019-08-24",
- "date_end": "2019-08-24",
- "users": [
- 0
], - "tags": [
- 0
]
}Returns detailed information about a task.
| id required | integer Resource ID |
{- "id": 0,
- "name": "string",
- "description": "string",
- "id_tracker": 0,
- "id_status": 0,
- "id_priority": 0,
- "date_start": "2019-08-24",
- "date_end": "2019-08-24",
- "users": [
- 0
], - "tags": [
- 0
]
}Returns timesheet entries (time blocks) with optional filtering. If no user filter is provided, returns entries for the logged-in user only. Use all_users parameter to retrieve entries for all users.
| date_start | string <date> Start date for selection (defaults to 1970-01-01) |
| date_end | string <date> End date for selection (defaults to 2037-01-01) |
integer or Array of integers Filter by customer ID (can be array) | |
integer or Array of integers Filter by user ID (can be array, defaults to logged user) | |
integer or Array of integers Filter by tracker ID (can be array) | |
integer or Array of integers Filter by task ID (can be array) | |
integer or Array of integers Filter by tracker type ID (can be array) | |
| all_users | boolean Include entries from all users (ignores id_user filter) |
| summary | boolean Return only total time summary instead of individual entries |
[ ]Creates a new timesheet entry (time block). Validates for overlapping entries and other constraints.
| id_tracker required | integer Tracker ID (mandatory) |
| date_start required | string <date-time> Start datetime (mandatory) |
| date_end required | string <date-time> End datetime (mandatory) |
| id_user | integer User ID (defaults to logged user) |
| comment | string |
| quantity | number <float> |
| location | string |
| signature | string Base64 encoded customer signature |
| lat | number <float> Latitude |
| lng | number <float> Longitude |
| signer_name | string Name of the person who signed |
Array of objects |
{- "id_tracker": 0,
- "date_start": "2019-08-24T14:15:22Z",
- "date_end": "2019-08-24T14:15:22Z",
- "id_user": 0,
- "comment": "string",
- "quantity": 0.1,
- "location": "string",
- "signature": "string",
- "lat": 0.1,
- "lng": 0.1,
- "signer_name": "string",
- "items": [
- {
- "id": 0,
- "quantity": 0.1
}
]
}"timesheet/123"Updates an existing timesheet entry.
| id required | integer |
| from_app | boolean Set to true when updating from mobile app (affects item handling) |
| id_tracker required | integer Tracker ID (mandatory) |
| date_start required | string <date-time> Start datetime (mandatory) |
| date_end required | string <date-time> End datetime (mandatory) |
| id_user | integer User ID (defaults to logged user) |
| comment | string |
| quantity | number <float> |
| location | string |
| signature | string Base64 encoded customer signature |
| lat | number <float> Latitude |
| lng | number <float> Longitude |
| signer_name | string Name of the person who signed |
Array of objects |
{- "id": 0,
- "from_app": true,
- "id_tracker": 0,
- "date_start": "2019-08-24T14:15:22Z",
- "date_end": "2019-08-24T14:15:22Z",
- "id_user": 0,
- "comment": "string",
- "quantity": 0.1,
- "location": "string",
- "signature": "string",
- "lat": 0.1,
- "lng": 0.1,
- "signer_name": "string",
- "items": [
- {
- "id": 0,
- "quantity": 0.1
}
]
}Returns detailed information about a timesheet entry including metadata and items.
| id required | integer Resource ID |
{- "id": 0,
- "id_user": 0,
- "id_tracker": 0,
- "date_start": "2019-08-24T14:15:22Z",
- "date_end": "2019-08-24T14:15:22Z",
- "comment": "string",
- "quantity": 0.1,
- "location": "string",
- "meta": {
- "sign_customer_image": "string",
- "lat": 0.1,
- "lng": 0.1,
- "sign_customer_name": "string"
}, - "items": [
- {
- "id": 0,
- "id_item": 0,
- "quantity": 0
}
]
}Returns a list of trackers with optional filtering. Can return flat list or tree structure depending on parameters.
| id_customer | integer Filter by customer ID |
| level | integer Filter by hierarchy level |
| id_parent | integer Filter by parent tracker ID (also returns children as tree) |
| search | string Search trackers by name (returns tree structure, max 100 results) |
| mostused | boolean Return most used trackers for the current user (returns tree structure, max 15 results) |
[ ]Creates a new tracker under a customer or job.
| name | string |
| note | string |
| id_parent | integer |
| id_type | integer |
| id_tracker_root | integer Root tracker ID for creating under a job |
{- "name": "string",
- "note": "string",
- "id_parent": 0,
- "id_type": 0,
- "id_tracker_root": 0
}Returns detailed information about a tracker.
| id required | integer Resource ID |
| show_details | boolean Include time consumption details |
| from | string <date> Start date for consumption calculation |
| to | string <date> End date for consumption calculation |
{- "id": 0,
- "name": "string",
- "note": "string",
- "id_parent": 0,
- "id_type": 0,
- "id_customer": 0,
- "level": 0,
- "path": "string",
- "consumed": { }
}Returns a list of users (excluding sensitive fields like password).
[- {
- "id": 0,
- "login": "string",
- "firstname": "string",
- "name": "string",
- "email": "user@example.com",
- "phone": "string",
- "mobile": "string",
- "active": true
}
]Creates a new user with optional customer access assignments.
| login required | string |
| firstname required | string |
| name required | string |
string <email> | |
| phone | string |
| mobile | string |
| customers | Array of integers List of customer IDs to grant access to |
{- "login": "string",
- "firstname": "string",
- "name": "string",
- "email": "user@example.com",
- "phone": "string",
- "mobile": "string",
- "customers": [
- 0
]
}"user/123"Returns user information (excluding sensitive fields).
| id required | integer Resource ID |
{- "id": 0,
- "login": "string",
- "firstname": "string",
- "name": "string",
- "email": "user@example.com",
- "phone": "string",
- "mobile": "string",
- "active": true
}Executes a saved report bookmark and returns the results. Only GenericReport-based reports are supported via API.
Example request with custom parameters:
/report/11?rawmode=1&custom_parameters={"from": "2024-01-01", "to": "2024-12-31"}
| id required | integer Resource ID |
| rawmode | integer Enum: 0 1 Set to 1 to return raw data without formatting |
| custom_parameters | string Example: custom_parameters={"from": "2024-01-01", "to": "2024-12-31"} JSON-encoded custom parameters to override report defaults |
{- "meta": { },
- "data": { },
- "level": 0,
- "entries": { }
}Returns the activity dashboard with:
{- "timeline": [
- {
- "id": 0,
- "type": "string",
- "description": "string",
- "date": "2019-08-24T14:15:22Z",
- "avatar": "string"
}
], - "metrics": {
- "timethismonth": "string",
- "timethismonth_all": "string",
- "billedthismonth": "string",
- "nbinvoicelate": 0,
- "nbinvoiceready": 0,
- "nbinvoiceapproved": 0
}
}Returns a list of incoming invoices (purchase invoices) with optional filtering and pagination.
| search | string Search string applied on the name field |
| page | integer >= 1 Page number for pagination (1-based) |
| items_per_page | integer [ 1 .. 100 ] Default: 10 Number of items per page |
| id_supplier | integer Filter by supplier ID |
| payment_status | string Enum: "new" "rejected" "topay" "paid" Filter by payment status |
| dateFrom | string <date> Filter invoices from this date |
| dateTo | string <date> Filter invoices until this date |
| dueFrom | string <date> Filter by due date from |
| dueTo | string <date> Filter by due date until |
[ ]Creates a new incoming invoice.
When image and extension are given (a scanned receipt or invoice, as an image or a PDF), the file is
attached to the invoice and, if an AI provider is configured on the account (ai.ocr_provider: Claude vision
or Mistral OCR), its content is extracted: supplier, document number, dates, totals and line items.
The extracted values are used as defaults for every field not explicitly given in the request, the supplier
being matched on its VAT number then on its name. The extraction is returned in ocr so the caller can review it.
If no entries are provided and nothing could be extracted, a default entry with zero amounts is created.
| docno | string |
| cost_date | string <date> |
| tmonth | integer Accounting month |
| tyear | integer Accounting year |
| id_supplier | integer |
| supplier_ref | string |
| internal_ref | string |
| payment_status | string Enum: "new" "rejected" "topay" "paid" |
| due_date | string <date> |
| image | string Base64 encoded image data |
| extension | string File extension (e.g., 'jpg', 'png', 'pdf') |
| mark_po_entries_booked | boolean |
Array of objects |
{- "docno": "string",
- "cost_date": "2019-08-24",
- "tmonth": 0,
- "tyear": 0,
- "id_supplier": 0,
- "supplier_ref": "string",
- "internal_ref": "string",
- "payment_status": "new",
- "due_date": "2019-08-24",
- "image": "string",
- "extension": "string",
- "mark_po_entries_booked": true,
- "entries": [
- {
- "amount": 0.1,
- "id_vat_type": 0,
- "vat": 0.1,
- "vatincl": 0.1,
- "pctprivate": 0,
- "id_type": 0,
- "description": "string",
- "id_tracker": 0,
- "id_po_entries": [
- 0
]
}
]
}{- "url": "incominginvoice/123",
- "id": 0,
- "ocr": {
- "provider": "claude",
- "model": "string",
- "confidence": 0,
- "supplier_name": "string",
- "supplier_vat": "string",
- "docno": "string",
- "cost_date": "2019-08-24",
- "due_date": "2019-08-24",
- "total_amount": 0.1,
- "total_vat": 0.1,
- "total_vatincl": 0.1,
- "entries_count": 0,
- "raw_text": "string"
}
}Returns detailed information about an incoming invoice including entries and files.
| id required | integer Resource ID |
{- "id": 0,
- "docno": "string",
- "cost_date": "2019-08-24",
- "tmonth": 0,
- "tyear": 0,
- "id_supplier": 0,
- "supplier_name": "string",
- "supplier_ref": "string",
- "internal_ref": "string",
- "payment_status": "new",
- "due_date": "2019-08-24",
- "entries": [
- {
- "id": 0,
- "amount": 0.1,
- "amount_formatted": "string",
- "vat": 0.1,
- "vat_formatted": "string",
- "vatincl": 0.1,
- "vatincl_formatted": "string",
- "id_vat_type": 0,
- "vat_type_name": "string",
- "vat_percentage": 0,
- "id_type": 0,
- "type_name": "string",
- "description": "string",
- "pctprivate": 0,
- "id_tracker": 0
}
], - "files": [
- {
- "id_file": 0,
- "file_name": "string",
- "date": "string",
- "type": "string",
- "size": 0
}
]
}Returns the opportunities of the sales pipeline.
Without the page parameter the whole list is returned, otherwise the paginated form is used.
| page | integer >= 1 Page number for pagination (1-based) |
| items_per_page | integer [ 1 .. 100 ] Default: 10 Number of items per page |
| search | string Search string applied on title, company, contact, description, next action, owner, stage, source, team, country and tags |
| id_customer | integer Only the opportunities linked to this client |
| id_stages | Array of integers Only the opportunities in one of these stages, see /opportunity/stages |
| id_owners | Array of integers Only the opportunities owned by one of these users. An empty value also matches the opportunities with no owner. |
| id_teams | Array of integers Only the opportunities of one of these teams. An empty value also matches the opportunities with no team. |
| id_sources | Array of integers Only the opportunities coming from one of these sources, see /opportunity/sources |
| id_tags | Array of integers Only the opportunities having one of these tags. An empty value also matches the opportunities with no tag. |
| hide_archived | boolean Exclude the archived opportunities |
| only_open | boolean Only the opportunities still running, i.e. neither won nor lost |
| sort | string Enum: "title" "company" "amount" "probability" "weighted_amount" "expected_close_date" "next_action_date" "id_stage" "id_owner" "id_team" "id_source" "created" Sort field |
| sortAscending | boolean Default: true Sort direction, ascending by default |
[ ]Creates an opportunity, along with its tags.
When id_stage is omitted the first running stage of the pipeline is used, and the
probability defaults to the one configured on that stage.
| title required | string |
| company | string |
| id_customer | integer or null Set it to attach the opportunity to an existing client (upsell) |
| id_contact | integer or null |
| id_stage | integer Defaults to the first running stage of the pipeline |
| id_source | integer or null |
| id_owner | integer or null Defaults to the authenticated user |
| id_team | integer or null |
| id_country | string or null Defaults to the country of the account |
| amount | number <float> |
| probability | integer Defaults to the probability configured on the stage |
| expected_close_date | string Account date format, e.g. 31/12/2026 |
| next_action | string |
| next_action_date | string |
| description | string |
| archived | boolean |
| id_tags | Array of integers |
{- "title": "string",
- "company": "string",
- "id_customer": 0,
- "id_contact": 0,
- "id_stage": 0,
- "id_source": 0,
- "id_owner": 0,
- "id_team": 0,
- "id_country": "string",
- "amount": 0.1,
- "probability": 0,
- "expected_close_date": "string",
- "next_action": "string",
- "next_action_date": "string",
- "description": "string",
- "archived": true,
- "id_tags": [
- 0
]
}"opportunity/123"Returns the opportunity together with its tags (id_tags), its stage history (history)
and the estimates generated from it (estimates).
| id required | integer Resource ID |
{- "id": 0,
- "title": "string",
- "company": "string",
- "company_name": "string",
- "id_customer": 0,
- "customer_name": "string",
- "id_contact": 0,
- "contact_name": "string",
- "contact_email": "string",
- "contact_phone": "string",
- "id_stage": 0,
- "stage": "string",
- "stage_color": "string",
- "stage_type": 0,
- "id_source": 0,
- "source": "string",
- "id_owner": 0,
- "owner_name": "string",
- "id_team": 0,
- "team_name": "string",
- "id_country": "string",
- "country": "string",
- "amount": 0.1,
- "probability": 0,
- "weighted_amount": 0.1,
- "expected_close_date": "string",
- "next_action": "string",
- "next_action_date": "string",
- "description": "string",
- "closed_date": "string",
- "lost_reason": "string",
- "archived": true,
- "days_since_move": 0,
- "note_count": 0,
- "estimate_count": 0,
- "id_tags": [
- 0
], - "history": [
- {
- "id": 0,
- "stage": "string",
- "stage_color": "string",
- "logdate": "string",
- "message": "string",
- "user_name": "string"
}
], - "estimates": [
- {
- "id": 0,
- "estimate_ref": "string",
- "amount": 0.1,
- "estimate_date": "string",
- "status": "string",
- "status_color": "string"
}
]
}| id required | integer Resource ID |
| title required | string |
| company | string |
| id_customer | integer or null Set it to attach the opportunity to an existing client (upsell) |
| id_contact | integer or null |
| id_stage | integer Defaults to the first running stage of the pipeline |
| id_source | integer or null |
| id_owner | integer or null Defaults to the authenticated user |
| id_team | integer or null |
| id_country | string or null Defaults to the country of the account |
| amount | number <float> |
| probability | integer Defaults to the probability configured on the stage |
| expected_close_date | string Account date format, e.g. 31/12/2026 |
| next_action | string |
| next_action_date | string |
| description | string |
| archived | boolean |
| id_tags | Array of integers |
{- "title": "string",
- "company": "string",
- "id_customer": 0,
- "id_contact": 0,
- "id_stage": 0,
- "id_source": 0,
- "id_owner": 0,
- "id_team": 0,
- "id_country": "string",
- "amount": 0.1,
- "probability": 0,
- "expected_close_date": "string",
- "next_action": "string",
- "next_action_date": "string",
- "description": "string",
- "archived": true,
- "id_tags": [
- 0
]
}Moves the opportunity to the given stage. The probability configured on the target stage is applied, the change is recorded in the stage history, and entering a won or lost stage stamps the closing date.
sort optionally holds the ids of the target column in their new order, to persist a
manual ordering inside the stage.
| id required | integer Resource ID |
| id_stage required | integer Target stage, see /opportunity/stages |
| sort | Array of integers Ids of the opportunities of the target stage, in their new order |
| lost_reason | string Only kept when the target stage is a lost one |
{- "id_stage": 0,
- "sort": [
- 0
], - "lost_reason": "string"
}Creates the client record from the opportunity (unless it is already linked to one), attaches its main contact, carries its tags and notes over, and closes the opportunity on the won stage.
Every field of the body is optional and overrides the value deduced from the opportunity.
| id required | integer Resource ID |
| name | string |
| code | string |
| vat | string |
| adress | string |
| cp | string |
| city | string |
| id_country | string |
string | |
| phone | string |
{- "name": "string",
- "code": "string",
- "vat": "string",
- "adress": "string",
- "cp": "string",
- "city": "string",
- "id_country": "string",
- "email": "string",
- "phone": "string"
}{- "id_customer": 0
}Returns the stages of the pipeline, each holding its cards and its totals.
| hide_archived | boolean Exclude the archived opportunities |
[- {
- "id": 0,
- "type": 0,
- "name": "string",
- "sort": 0,
- "color": "string",
- "probability": 0,
- "disabled": true,
- "count": 0,
- "amount": "string",
- "weighted_amount": "string",
- "cards": [
- {
- "id": 0,
- "title": "string",
- "company": "string",
- "company_name": "string",
- "id_customer": 0,
- "customer_name": "string",
- "id_contact": 0,
- "contact_name": "string",
- "contact_email": "string",
- "contact_phone": "string",
- "id_stage": 0,
- "stage": "string",
- "stage_color": "string",
- "stage_type": 0,
- "id_source": 0,
- "source": "string",
- "id_owner": 0,
- "owner_name": "string",
- "id_team": 0,
- "team_name": "string",
- "id_country": "string",
- "country": "string",
- "amount": 0.1,
- "probability": 0,
- "weighted_amount": 0.1,
- "expected_close_date": "string",
- "next_action": "string",
- "next_action_date": "string",
- "description": "string",
- "closed_date": "string",
- "lost_reason": "string",
- "archived": true,
- "days_since_move": 0,
- "note_count": 0,
- "estimate_count": 0,
- "id_tags": [
- 0
], - "history": [
- {
- "id": 0,
- "stage": "string",
- "stage_color": "string",
- "logdate": "string",
- "message": "string",
- "user_name": "string"
}
], - "estimates": [
- {
- "id": 0,
- "estimate_ref": "string",
- "amount": 0.1,
- "estimate_date": "string",
- "status": "string",
- "status_color": "string"
}
]
}
]
}
][- {
- "id": 0,
- "type": 0,
- "name": "string",
- "sort": 0,
- "color": "string",
- "probability": 0,
- "disabled": true,
- "count": 0,
- "amount": "string",
- "weighted_amount": "string",
- "cards": [
- {
- "id": 0,
- "title": "string",
- "company": "string",
- "company_name": "string",
- "id_customer": 0,
- "customer_name": "string",
- "id_contact": 0,
- "contact_name": "string",
- "contact_email": "string",
- "contact_phone": "string",
- "id_stage": 0,
- "stage": "string",
- "stage_color": "string",
- "stage_type": 0,
- "id_source": 0,
- "source": "string",
- "id_owner": 0,
- "owner_name": "string",
- "id_team": 0,
- "team_name": "string",
- "id_country": "string",
- "country": "string",
- "amount": 0.1,
- "probability": 0,
- "weighted_amount": 0.1,
- "expected_close_date": "string",
- "next_action": "string",
- "next_action_date": "string",
- "description": "string",
- "closed_date": "string",
- "lost_reason": "string",
- "archived": true,
- "days_since_move": 0,
- "note_count": 0,
- "estimate_count": 0,
- "id_tags": [
- 0
], - "history": [
- {
- "id": 0,
- "stage": "string",
- "stage_color": "string",
- "logdate": "string",
- "message": "string",
- "user_name": "string"
}
], - "estimates": [
- {
- "id": 0,
- "estimate_ref": "string",
- "amount": 0.1,
- "estimate_date": "string",
- "status": "string",
- "status_color": "string"
}
]
}
]
}
]