Offeris API
Integrate quotes, orders, invoices, stock levels, products, and contacts directly into your systems. REST-based, JSON responses, API key authentication.
The Offeris API lets you create and manage price quotes, received orders, and received invoices; export stock levels; look up companies and contacts; and read your product catalogue.
There are two endpoint patterns:
- Legacy GET endpoints use the
/OOApath with anactionquery parameter (products, catalogue, reference data, company/contact lookup). - REST endpoints under
/v23/open-api/support full CRUD for quotes, orders, invoices, stock, and company/contact management.
Each Offeris customer has their own tenant subdomain. Most Slovak customers use sk001.offeris.com, Czech customers cz001.offeris.com. Larger customers have a dedicated subdomain (e.g. yourcompany.offeris.com). If unsure, check your Offeris login URL.
Authentication & permissions
Every request must include a valid API key passed as the key query parameter.
Generate an API key
In Offeris go to Settings → General settings → Communication with external systems → API keys. Create a key, set the associated user, and configure permissions per resource.
Include the key in requests
Append ?key=YOUR_API_KEY to every URL. For POST/PUT/DELETE the key is a URL query parameter.
GET https://sk001.offeris.com/OOA?action=PRODUCT_LIST&lang=sk&page=1&key=YOUR_API_KEY
POST https://sk001.offeris.com/v23/open-api/quotation?key=YOUR_API_KEY
Content-Type: application/json
{ ... body ... }
Permission model
Each API key has independent permissions per resource type. Permissions are a combination of Read, Write, and Delete. The user whose identity the key acts as is set when creating the key — the "Issued by" field on created documents comes from this user.
| Resource | Read | Write | Delete | Covers |
|---|---|---|---|---|
| quotation | ✓ | ✓ | ✓ | GET list, GET detail, POST, PUT state, DELETE |
| orderin | ✓ | ✓ | ✓ | GET list, GET detail, POST, PUT state, DELETE (soft) |
| invoicein | ✓ | ✓ | ✓ | Received invoices POST |
| stock | ✓ | – | – | Stock export generate & read |
| PRODUCT | ✓ | – | – | Legacy product & catalogue endpoints |
| CATALOGUE | ✓ | – | – | Legacy catalogue endpoints |
| HEUREKA | ✓ | – | – | Heureka XML feed |
Company and contact lookup endpoints (GET_COMPANY, GET_CONTACT, COMPANY_LIST, CONTACT_LIST) do not require a specific permission — a valid key is sufficient.
Errors
The API uses standard HTTP status codes. Error responses include a JSON body where possible.
| HTTP status | Meaning |
|---|---|
| 400 Bad Request | Invalid or missing parameters. |
| 401 Unauthorized | API key missing or invalid. |
| 403 Forbidden | Key exists but lacks the required permission for this operation. |
| 404 Not Found | The requested resource does not exist. |
| 500 Internal Server Error | Server-side error (e.g. stock export generation failed). |
Pagination
REST endpoints under /v23/open-api/ use Spring-style pagination with query parameters page (0-indexed), size, and sort. The response is a standard Page object.
GET /v23/open-api/quotation?key=...&page=0&size=20&sort=date,desc
{
"content": [ ... ],
"totalElements": 142,
"totalPages": 8,
"size": 20,
"number": 0
}
Legacy /OOA endpoints use fixed page sizes (500 for products, 100 for contacts) with a 1-indexed page parameter, except contacts which are 0-indexed.
Quotes
Full CRUD for price quotes. Requires quotation permission on the API key.
Returns a paginated list of quotes. Requires quotation / Read.
| Parameter | Type | Required | Description |
|---|---|---|---|
| key | string | required | Your API key. |
| page | integer | optional | Page index, 0-based. Default: 0. |
| size | integer | optional | Records per page. Default: 20. |
| sort | string | optional | Sort field and direction, e.g. date,desc or number,asc. |
GET https://sk001.offeris.com/v23/open-api/quotation?key=YOUR_API_KEY&page=0&size=20&sort=date,desc
Response: Page<QuotationOA> — see the QuotationOA object below for field reference.
Returns the full detail of a single quote. Requires quotation / Read.
GET https://sk001.offeris.com/v23/open-api/quotation/123?key=YOUR_API_KEY
Response: QuotationOA object.
Creates a new quote. Pass an existing id to update it. Requires quotation / Write.
If a matching company or contact already exists (matched by ID, then ICO/email), their record is updated. Transport and payment are matched by name and created if not found. Item prices are required — only the purchase price is pulled from the product automatically. The quote total is the sum of line items.
Request body
| Field | Type | Required | Description |
|---|---|---|---|
| id | integer | optional | null to create; existing ID to update. |
| number | string | optional | Quote number. null to auto-generate. |
| description | string | optional | Description. |
| note | string | optional | Additional notes. |
| date | string | optional | Date, format YYYY-MM-DD. |
| dealer | object | optional | id + name. Matched by ID first, then name. |
| currency | object | optional | id + code (e.g. "€"). |
| language | object | optional | id + iso (e.g. "sk"). |
| state | object | optional | id + name. Use GET_ORDERIN_STATE for valid values. |
| company | object | optional | Company. ico is required if id is not provided. See company fields below. |
| contact | object | optional | Contact person. Matched by id then email. |
| transport | object | optional | id, name, price (double), vat (double). |
| paymentOA | object | optional | id + name. |
| items | array | optional | Line items. price, vat, amount required per item. |
Company fields
| Field | Type | Required | Description |
|---|---|---|---|
| id | integer | optional | Internal company ID. |
| name | string | optional | Company name. |
| ico | string | required* | Registration number (IČO). Required if id is not provided. Used for matching. |
| dic | string | optional | Tax ID (DIČ). |
| icdph | string | optional | VAT number (IČDPH), e.g. "SK1234567890". |
| billing | object | optional | city, street, zip, country (ISO code). |
| shipping | object | optional | Same structure as billing. |
Contact fields
| Field | Type | Description |
|---|---|---|
| id | integer | Internal contact ID. |
| firstname | string | First name. |
| middlename | string | Middle name. |
| surname | string | Last name. |
| titleBefore / titleAfter | string | Academic titles. |
| string | Email. Used for matching if id not provided. | |
| mobile | string | Mobile number. |
| billing / shipping | object | Address objects: city, street, zip, country (ISO). |
Line item fields
| Field | Type | Required | Description |
|---|---|---|---|
| id / productId | integer | optional | Product ID (either field accepted). Matched by orderNumber if neither is set. |
| orderNumber | string | optional | Product SKU. |
| name | string | optional | Item name. Defaults to product name. |
| model | string | optional | Model. |
| description | string | optional | Item description. |
| note | string | optional | Note. |
| delivery | string | optional | Delivery method name for this item. |
| price | double | required | Unit selling price, excl. VAT. |
| vat | double | required | VAT rate as percent (e.g. 20). |
| amount | double | required | Quantity. |
Example request
{
"id": null,
"number": null,
"description": "Quote for Acme",
"date": "2024-03-01",
"dealer": { "id": null, "name": "John Smith" },
"currency": { "id": "", "code": "€" },
"language": { "id": "", "iso": "sk" },
"state": { "id": "", "name": "Nevybavená" },
"company": {
"id": "", "name": "Acme s.r.o.", "ico": "12345678",
"dic": "1234567890", "icdph": "SK1234567890",
"billing": { "city": "Bratislava", "street": "Hlavná 1", "zip": "81101", "country": "SK" }
},
"contact": {
"id": "", "firstname": "Ján", "surname": "Novák",
"email": "jan.novak@acme.sk", "mobile": "0900123456"
},
"transport": { "id": "", "name": "Predvolený", "price": "5", "vat": "20" },
"paymentOA": { "id": "", "name": "Dobierka" },
"items": [
{ "orderNumber": "SKU-001", "name": "Product A", "price": 15.50, "vat": 20, "amount": 3 }
]
}
Response
Returns the created or updated QuotationOA object.
{
"id": 123,
"number": "Q-2024-001",
"description": "Quote for Acme",
"note": "Valid 30 days",
"date": "2024-03-01",
"dealer": { "id": 1, "name": "John Smith" },
"currency": { "id": 1, "code": "€" },
"language": { "iso": "sk" },
"state": { "id": 1, "name": "Nevybavená" },
"company": { "id": 55, "name": "Acme s.r.o.", "ico": "12345678", ... },
"contact": { "id": 88, "firstname": "Ján", "surname": "Novák", "email": "jan.novak@acme.sk" },
"transport": { "name": "Predvolený", "price": 5, "vat": 20 },
"paymentOA": { "name": "Dobierka" },
"items": [
{ "orderNumber": "SKU-001", "name": "Product A", "price": 15.5, "vat": 20, "amount": 3 }
]
}
Updates the state of an existing quote. Requires quotation / Write. Use GET_ORDERIN_STATE to get available state IDs.
PUT https://sk001.offeris.com/v23/open-api/quotation/123/state/2?key=YOUR_API_KEY
Response: 204 No Content
Deletes a quote by ID. Requires quotation / Delete.
DELETE https://sk001.offeris.com/v23/open-api/quotation/123?key=YOUR_API_KEY
Response: 204 No Content
Received orders (orderin)
Full CRUD for received orders. The request and response structure mirrors quotes, with a few order-specific fields (customerNumber, promisedDeliveryFrom, promisedDeliveryTo, per-item delivered). Requires orderin permission on the API key.
Returns a paginated list of received orders. Requires orderin / Read.
| Parameter | Type | Required | Description |
|---|---|---|---|
| key | string | required | Your API key. |
| page | integer | optional | Page index, 0-based. Default: 0. |
| size | integer | optional | Records per page. Default: 20. |
| sort | string | optional | Sort field and direction, e.g. date,desc or number,asc. |
GET https://sk001.offeris.com/v23/open-api/orderin?key=YOUR_API_KEY&page=0&size=20&sort=date,desc
Response: Page<OrderinOA> — see the OrderinOA object below for field reference.
Returns the full detail of a single received order. Requires orderin / Read.
GET https://sk001.offeris.com/v23/open-api/orderin/123?key=YOUR_API_KEY
Response: OrderinOA object.
Creates a new received order. Pass an existing id to update it. Requires orderin / Write.
If a matching company or contact already exists (matched by ID, then ICO/email), their record is updated. Transport and payment are matched by name and created if not found. Item prices are required — only the purchase price is pulled from the product automatically. The order total is the sum of line items.
Request body
Same structure as Create / update quote, plus the order-specific fields marked below. Company, contact and line item sub-objects are identical to the quote ones.
| Field | Type | Required | Description |
|---|---|---|---|
| id | integer | optional | null to create; existing ID to update. |
| number | string | optional | Order number. null to auto-generate. |
| description | string | optional | Description. |
| note | string | optional | Additional notes. |
| date | string | optional | Order date, format YYYY-MM-DD. Ignored on create — Offeris sets the date itself. |
| customerNumber | string | optional | Customer's own order / PO number (e.g. "PO-99887"). Order-specific. |
| promisedDeliveryFrom | string | optional | Promised delivery start, format YYYY-MM-DD. Order-specific. |
| promisedDeliveryTo | string | optional | Promised delivery end, format YYYY-MM-DD. Order-specific. |
| dealer | object | optional | id + name. Matched by ID first, then name. |
| currency | object | optional | id + code (e.g. "€"). Matched by ID, then code. |
| language | object | optional | id + iso (e.g. "sk"). Matched by ID, then ISO code. |
| state | object | optional | id + name. Matched by ID, then name. Use GET_ORDERIN_STATE for valid values. |
| company | object | optional | Company. ico is required if id is not provided; a new company is created when no match is found. See company fields. |
| contact | object | optional | Contact person. Matched by id then email. See contact fields. |
| transport | object | optional | id, name, price (double), vat (double). Matched by ID, then name; created if not found. |
| paymentOA | object | optional | id + name. Matched by ID, then name; created if not found. |
| items | array | optional | Line items. price, vat, amount required per item. See line item fields. |
Dates must be valid YYYY-MM-DD values — an unparseable date is rejected with 400 Bad Request. The per-item delivery field is free text (e.g. "2 týždne", "skladom"), not a date, and is truncated to 50 characters — the same limit as in the Offeris UI.
Example request
{
"id": null,
"number": null,
"description": "Order for Acme",
"note": "Deliver in one shipment",
"customerNumber": "PO-99887",
"promisedDeliveryFrom": "2025-08-01",
"promisedDeliveryTo": "2025-08-15",
"dealer": { "id": null, "name": "John Smith" },
"currency": { "id": "", "code": "€" },
"language": { "id": "", "iso": "sk" },
"state": { "id": "", "name": "Nevybavená" },
"company": {
"id": "", "name": "Acme s.r.o.", "ico": "12345678",
"dic": "1234567890", "icdph": "SK1234567890",
"billing": { "city": "Bratislava", "street": "Hlavná 1", "zip": "81101", "country": "SK" },
"shipping": { "city": "Bratislava", "street": "Hlavná 1", "zip": "81101", "country": "SK" }
},
"contact": {
"id": "", "firstname": "Ján", "surname": "Novák",
"email": "jan.novak@acme.sk", "mobile": "0900123456"
},
"transport": { "id": "", "name": "Predvolený", "price": "5", "vat": "20" },
"paymentOA": { "id": "", "name": "Dobierka" },
"items": [
{ "orderNumber": "SKU-001", "name": "Product A", "delivery": "2 týždne", "price": 15.50, "vat": 20, "amount": 3 }
]
}
Response
Returns the created or updated OrderinOA object.
{
"id": 123,
"number": "OB-2025-001",
"customerNumber": "PO-99887",
"description": "Order for Acme",
"note": "Deliver in one shipment",
"date": "2025-07-19T22:00:00.000+00:00",
"promisedDeliveryFrom": "2025-07-31T22:00:00.000+00:00",
"promisedDeliveryTo": "2025-08-14T22:00:00.000+00:00",
"dealer": { "id": 1, "name": "John Smith" },
"currency": { "id": 1, "code": "€" },
"language": { "iso": "sk" },
"state": { "id": 1, "name": "Nevybavená" },
"company": {
"id": 55, "name": "Acme s.r.o.", "ico": "12345678",
"dic": "1234567890", "icdph": "SK1234567890",
"billing": { "city": "Bratislava", "street": "Hlavná 1", "zip": "81101", "country": "SK" },
"shipping": { "city": "Bratislava", "street": "Hlavná 1", "zip": "81101", "country": "SK" }
},
"contact": { "id": 88, "firstname": "Ján", "surname": "Novák", "email": "jan.novak@acme.sk", "mobile": "0900123456" },
"transport": { "name": "Predvolený", "price": 5, "vat": 20 },
"paymentOA": { "name": "Dobierka" },
"items": [
{ "id": 901, "productId": 41, "orderNumber": "P001", "name": "Product A",
"delivery": "2 týždne", "price": 10.0, "vat": 20, "amount": 2, "delivered": true },
{ "id": 902, "productId": 42, "orderNumber": "P002", "name": "Product B",
"delivery": "skladom", "price": 5.5, "vat": 10, "amount": 1, "delivered": false }
]
}
Fields specific to received orders
Compared to QuotationOA, the order object carries these extra fields:
| Field | Location | Type | Description |
|---|---|---|---|
| customerNumber | header | string | Customer's own order / PO number. |
| promisedDeliveryFrom | header | date | Promised delivery start. Same format as date in responses. |
| promisedDeliveryTo | header | date | Promised delivery end. Same format as date in responses. |
| delivered | line item | boolean | null | Read-only. true once the full ordered quantity has been dispatched — i.e. the linked stock issues and issued delivery notes reach the ordered amount. Reservations are not counted. null for rows without a quantity (sections, text rows). |
Updates the state of an existing received order to the state with ID {idState}. Requires orderin / Write. Use GET_ORDERIN_STATE to get available state IDs.
PUT https://sk001.offeris.com/v23/open-api/orderin/123/state/2?key=YOUR_API_KEY
Response: 204 No Content
Deletes a received order by ID. Requires orderin / Delete.
This is a soft delete — the order is marked inactive and disappears from Offeris, but the record is not physically removed from the database.
DELETE https://sk001.offeris.com/v23/open-api/orderin/123?key=YOUR_API_KEY
Response: 204 No Content
Received invoices (invoicein)
Received invoices have a different structure from quotes and orders — they include payment banking details, per-VAT-rate price breakdown, and support for attachments. Requires invoicein permission.
Creates or updates a received invoice. Requires invoicein / Write. The "Issued by" user is taken from the API key configuration.
If a matching company already exists (by ID or ICO), its record is updated. Payment methods are matched by name and created if not found. If the company's bank account cannot be matched by IBAN or account number, a new bank account record is created.
Request body
| Field | Type | Required | Description |
|---|---|---|---|
| id | integer | optional | null to create; existing ID to update. |
| number | string | optional | Invoice number (supplier's number). null to auto-generate. |
| evidenceNumber | string | optional | Internal evidence number. |
| description | string | optional | Description. |
| note | string | optional | Notes. |
| date | string | optional | Issue date, YYYY-MM-DD. |
| dueDate | string | optional | Due date, YYYY-MM-DD. |
| dateOfTaxableSupply | string | optional | Date of taxable supply, YYYY-MM-DD. |
| variableSymbol | string | optional | Variable symbol. |
| constantSymbol | string | optional | Constant symbol. |
| specificSymbol | string | optional | Specific symbol. |
| salesOrderNumber | string | optional | Reference to an issued order number. |
| currency | object | optional | id, code (e.g. "CZK"), rate (exchange rate; auto-fetched from NBS/CNB if omitted). |
| company | object | optional | Supplier company. Includes standard fields plus bankAccount object (see below). |
| payment | object | optional | id + name. Payment method matched by name; created if not found. |
| documentType | string | optional | Document type name. Created if not found. |
| vatType | object | optional | VAT type: code (e.g. "01D") + name. Matched by code or name; created if not found. |
| prices | array | optional | Price breakdown per VAT rate. Up to 3 entries. See below. |
| items | array | optional | Line items. Matched by product ID or order number; saved as free-text item if no product match. |
| attachmentsUrls | string[] | optional | Array of URLs to attach to the invoice (e.g. scanned PDF). |
| aliceDocumentId | string | optional | Document ID from the Alice/Redque integration. Requires Alice to be enabled on the API key. |
Bank account fields (inside company)
| Field | Type | Description |
|---|---|---|
| iban | string | IBAN. Used for matching existing bank accounts. |
| number | string | Account number. Used for matching if IBAN is not provided. |
| bankName | string | Bank name. |
| bicSwift | string | BIC / SWIFT code. |
| note | string | Note on the bank account. |
Prices array fields (per VAT rate)
| Field | Type | Description |
|---|---|---|
| price | decimal | Price excl. VAT. |
| priceInclVat | decimal | Price incl. VAT. |
| vat | decimal | VAT amount. Calculated automatically if omitted. |
| vatRate | decimal | VAT rate as percent (e.g. 20). |
Line item fields
| Field | Type | Required | Description |
|---|---|---|---|
| id | integer | optional | Product ID. |
| orderNumber | string | optional | Product SKU. Item saved as free-text if product not found. |
| name | string | optional | Item name. |
| note | string | optional | Note. |
| price | decimal | required | Unit price excl. VAT. |
| vatRate | decimal | required | VAT rate as percent. |
| amount | decimal | required | Quantity. |
Example request
{
"id": null,
"number": "FA001",
"evidenceNumber": null,
"date": "2024-07-20",
"dueDate": "2024-08-03",
"dateOfTaxableSupply": "2024-07-20",
"variableSymbol": "123456789",
"currency": { "id": "", "code": "CZK", "rate": 25.00 },
"company": {
"id": "", "name": "Supplier s.r.o.", "ico": "99999999",
"billing": { "city": "Praha", "street": "Náměstí 1", "zip": "11000", "country": "CZ" },
"bankAccount": {
"iban": "CZ6508000000192000145399",
"bankName": "Česká spořitelna",
"bicSwift": "GIBACZPX"
}
},
"payment": { "id": "", "name": "Prevodom" },
"documentType": "Faktúra",
"prices": [
{ "price": 100, "priceInclVat": 121, "vatRate": 21 }
],
"items": [
{ "orderNumber": "SKU-001", "name": "Item A", "price": 100, "vatRate": 21, "amount": 1 }
],
"attachmentsUrls": ["https://example.com/invoice.pdf"]
}
Stock export
Stock data is served as a pre-generated JSON file. You first trigger generation, then retrieve the result. Requires stock / Read permission.
The export file is regenerated periodically on the server for all API keys that have stock read permission. You can also trigger it manually on demand via the POST endpoint.
Generates a fresh stock export file for your tenant. No request body required.
POST https://sk001.offeris.com/v23/open-api/stock/export/generate?key=YOUR_API_KEY
| Response | Meaning |
|---|---|
| 200 OK | Export generated successfully. |
| 401 Unauthorized | Invalid API key. |
| 500 Internal Server Error | Export generation failed. |
Returns the previously generated stock export. If no export exists yet, generate one first using the POST endpoint above.
GET https://sk001.offeris.com/v23/open-api/stock/export?key=YOUR_API_KEY
Response
[
{
"id": 1,
"orderOur": "P123",
"recordactive": 1,
"stock": 10.5,
"productTypes": [
{
"id": 2,
"orderOur": "PT456",
"recordactive": 1,
"stock": 5.0
}
]
}
]
Response fields
| Field | Type | Description |
|---|---|---|
| id | integer | Product ID. |
| orderOur | string | Product order number (SKU). |
| recordactive | integer | 1 = active, 0 = inactive. |
| stock | decimal | Available stock quantity. |
| productTypes | array | Product variants, each with id, orderOur, recordactive, stock. |
Companies & contacts
Creates a new company or updates an existing one. Matched by ICO if id is not provided. Returns the saved company object.
| Field | Type | Required | Description |
|---|---|---|---|
| id | integer | optional | Internal company ID for update. |
| name | string | required* | Company name. Required if ico is not provided. |
| ico | string | required* | Registration number. Required if name is not provided. Used for matching. |
| dic | string | optional | Tax ID. |
| icdph | string | optional | VAT number. |
| billing | object | optional | city, street, zip, country (ISO). |
POST https://sk001.offeris.com/v23/open-api/company?key=YOUR_API_KEY
Content-Type: application/json
{
"name": "Acme s.r.o.", "ico": "12345678",
"dic": "1234567890", "icdph": "SK1234567890",
"billing": { "city": "Bratislava", "street": "Hlavná 1", "zip": "81101", "country": "SK" }
}
Response: the saved CompanyOA object with id, name, ico, dic, icdph, billing, shipping.
Creates a new contact or updates an existing one matched by email. Returns the saved contact object.
| Field | Type | Required | Description |
|---|---|---|---|
| string | required | Email address. Used to match existing contacts. | |
| firstname | string | optional | First name. |
| middlename | string | optional | Middle name. |
| surname | string | optional | Last name. |
| titleBefore / titleAfter | string | optional | Academic titles. |
| mobile | string | optional | Mobile number (also saved as phone). |
| billing | object | optional | city, street, zip, country (ISO). |
| shipping | object | optional | Same structure. |
POST https://sk001.offeris.com/v23/open-api/contact?key=YOUR_API_KEY
Content-Type: application/json
{
"firstname": "Ján", "surname": "Novák",
"email": "jan.novak@acme.sk", "mobile": "0900123456",
"billing": { "city": "Bratislava", "street": "Hlavná 1", "zip": "81101", "country": "SK" }
}
Response: the saved ContactOA object with id, name fields, email, mobile, billing, shipping.
Returns a company record. Provide at least one of ico, id, or email.
| Parameter | Type | Required | Description |
|---|---|---|---|
| action | string | required | GET_COMPANY |
| ico | string | optional | Registration number. |
| id | integer | optional | Internal company ID. |
| string | optional | Company email. | |
| key | string | required | Your API key. |
GET https://sk001.offeris.com/OOA?action=GET_COMPANY&ico=12345678&key=YOUR_API_KEY
| Parameter | Type | Required | Description |
|---|---|---|---|
| action | string | required | COMPANY_LIST |
| name | string | optional | Filter by name (partial match). |
| page | integer | optional | Page number (1-indexed). |
| key | string | required | Your API key. |
GET https://sk001.offeris.com/OOA?action=COMPANY_LIST&name=Acme&page=1&key=YOUR_API_KEY
| Parameter | Type | Required | Description |
|---|---|---|---|
| action | string | required | GET_CONTACT |
| string | required | Contact email. | |
| key | string | required | Your API key. |
GET https://sk001.offeris.com/OOA?action=GET_CONTACT&email=jan.novak@firma.sk&key=YOUR_API_KEY
{
"id": 101, "name": "Ján Novák", "email": "jan.novak@firma.sk",
"delivery_address": { "city": "Bratislava", "zip": "81101", "street": "Hlavná 1", "country_id": 1, "country_iso_code": "SK" },
"invoice_address": { "city": "Bratislava", "zip": "81101", "street": "Fakturačná 2", "country_id": 1, "country_iso_code": "SK" }
}Page numbering is 0-indexed. Requesting page=0 also returns records and pages totals. Use these to plan subsequent requests.
| Parameter | Type | Required | Description |
|---|---|---|---|
| action | string | required | CONTACT_LIST |
| page | integer | optional | Page index, 0-based. Default: 0. |
| key | string | required | Your API key. |
GET https://sk001.offeris.com/OOA?action=CONTACT_LIST&page=0&key=YOUR_API_KEY
{ "records": 235, "pages": 3, "items": [ { "id": 101, "name": "Ján Novák", ... } ] }Products & catalogue
Read-only. Requires PRODUCT or CATALOGUE read permission (legacy permission model).
| Parameter | Type | Required | Description |
|---|---|---|---|
| action | string | required | PRODUCT |
| id | integer | required | Product ID. |
| lang | string | required | Language ISO code (e.g. sk). |
| key | string | required | Your API key. |
GET https://sk001.offeris.com/OOA?action=PRODUCT&id=123&lang=sk&key=YOUR_API_KEY
| Parameter | Type | Required | Description |
|---|---|---|---|
| action | string | required | PRODUCT_LIST |
| lang | string | required | Language ISO code. |
| page | integer | optional | Page number (1-indexed). Default: 1. |
| key | string | required | Your API key. |
GET https://sk001.offeris.com/OOA?action=PRODUCT_LIST&lang=sk&page=1&key=YOUR_API_KEY
{ "data": [...], "page": 1, "pages": 5, "product_show": 500, "product_count": 2340 }Returns a flat list of categories. All descendants are always included. Omit id or pass 0 for root level.
| Parameter | Type | Required | Description |
|---|---|---|---|
| action | string | required | CATALOGUE_LIST |
| lang | string | required | Language ISO code. |
| id | integer | optional | Parent category ID. Default: root (0). |
| key | string | required | Your API key. |
GET https://sk001.offeris.com/OOA?action=CATALOGUE_LIST&lang=sk&id=0&key=YOUR_API_KEY
{ "data": [{ "id": "5", "name": "Electronics", "parent_id": "0" }, ...] }| Parameter | Type | Required | Description |
|---|---|---|---|
| action | string | required | CATALOGUE |
| id | integer | required | Catalogue category ID. |
| lang | string | required | Language ISO code. |
| detailedProducts | boolean | optional | true = full product details; default false. |
| key | string | required | Your API key. |
GET https://sk001.offeris.com/OOA?action=CATALOGUE&id=5&lang=sk&detailedProducts=true&key=YOUR_API_KEY
Reference data
Use these endpoints to look up valid IDs and names for languages, currencies, transport methods, and payment forms. All values are tenant-specific. A valid API key is sufficient — no specific permission required.
GET https://sk001.offeris.com/OOA?action=GET_LANGUAGES&key=YOUR_API_KEY
{ "data": [{ "id": "1", "name": "Slovenčina", "iso_code": "sk" }] }GET https://sk001.offeris.com/OOA?action=GET_CURRENCIES&key=YOUR_API_KEY
{ "data": [{ "id": "1", "iso_code": "€", "name": "Euro" }] }GET https://sk001.offeris.com/OOA?action=GET_COUNTRIES&key=YOUR_API_KEY
{ "data": [{ "id": "1", "iso_code": "SK", "name": "Slovakia" }] }Use returned name values in transport.name when creating quotes/orders.
| Parameter | Type | Required | Description |
|---|---|---|---|
| action | string | required | GET_TRANSPORTS |
| idLanguage | integer | optional | Language ID. Defaults to tenant default. |
| key | string | required | Your API key. |
GET https://sk001.offeris.com/OOA?action=GET_TRANSPORTS&key=YOUR_API_KEY
{ "data": [{ "id": "1", "name": "Predvolený", "price_absolute": "5.00", "vat": "20", "free_from_price": "none" }] }Use returned name values in paymentOA.name or payment.name.
GET https://sk001.offeris.com/OOA?action=GET_PAYMENT_FORMS&key=YOUR_API_KEY
{ "data": [{ "id": "1", "name": "Dobierka" }, { "id": "2", "name": "Prevodom" }] }GET https://sk001.offeris.com/OOA?action=GET_PRICE_LEVELS&key=YOUR_API_KEY
{ "data": [{ "id": 1, "name": "Retail" }, { "id": 2, "name": "Wholesale" }] }Returns available states for quotes and received orders. Requires ORDERIN / Read (legacy permission).
GET https://sk001.offeris.com/OOA?action=GET_ORDERIN_STATE&key=YOUR_API_KEY
{ "data": [{ "id": "1", "name": "Nevybavená" }, { "id": "2", "name": "Vybavená" }] }