NAV
Samples

Introduction

sticky.de offers you JSON API access so that you can access your company or user profile to automate calls or processes.

Endpoints

We provide our API in production as well as in a sandbox environment.

Production System

https://app.sticky.de

Sandbox System

https://dvl.sticky.de

Please note:

Authentication

Sample request

curl -X POST https://dvl.sticky.de \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Sticky-Token: 2a3b301d-73c9-e31b-eab4-xxxxxxxxxxxx" \
-H "Sticky-User: 5ef5d753a91766xxxxxxxxxx" \
-H "Sticky-Company: 2f8c1f2bcfa625xxxxxxxxxx" \
-d '{
    ... JSON payload ...
}
'

Authentication on the Sticky API always consists of three different "tokens". These three tokens are specified as HTTP headers with each call. API access is disabled for users by default. You can activate the API for your account in your profile under the API access menu item, where you will also find the three tokens.

Tokens

Title Datatype Length Description
Sticky-Token string 36-digits This token is your personal secret
Sticky-User string 24-digits This token identifies the user context
Sticky-Company string 24-digits This token identifies the company context

In Sticky, it is of course possible for you as a user to have access to multiple companies with a single account. For this reason, you specify both your user context (which user rights you want to act with) and a company context (which company you want to act in) in an API call.

Logging

All API calls (including all parameters) are logged in your company log.

Encoding

We expect RAW data without any HTML entity masking or similar.

Characters such as &, <, >, ”, ' are processed without any corresponding HTML masking. Responses also contain the RAW version.

Request

Sample cURL request

curl -X POST https://dvl.sticky.de \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Sticky-Token: 2a3b301d-73c9-e31b-eab4-xxxxxxxxxxxx" \
-H "Sticky-User: 5ef5d753a91766xxxxxxxxxx" \
-H "Sticky-Company: 2f8c1f2bcfa625xxxxxxxxxx" \
-d '{
    "m": "articles",
    "method": "create_article",
    "msg": {
        "title": "Reifen",
        "type": "product",
        "unit_name": "Stück",
        "price_net": 16.99,
        "tax_rate": 19
    }
}
'

Sample PHP request

$ch = curl_init();
curl_setopt_array($ch, [
    CURLOPT_URL => 'https://dvl.sticky.de',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT => 10,
    CURLOPT_POST => true,
    CURLOPT_HTTPHEADER => [
        "Content-Type: application/json",
        "Accept: application/json",
        "Sticky-Token: 2a3b301d-73c9-e31b-eab4-xxxxxxxxxxxx",
        "Sticky-User: 5ef5d753a91766xxxxxxxxxx",
        "Sticky-Company: 2f8c1f2bcfa625xxxxxxxxxx",
    ],
    CURLOPT_POSTFIELDS => json_encode([
        "m" => "articles",
        "method" => "create_article",
        "msg" => [
            'title' => 'Reifen',
            'type' => 'product',
            'unit_name' => 'Stück',
            'price_net' => 16.99,
            'tax_rate' => 19
        ]
    ]),
]);

$response = json_decode(curl_exec($ch), true);
print_r($response);

Sample Javascript request

"use strict";

let api_request = await fetch("https://dvl.sticky.de", {
    method: "POST",
    headers: {
        "Content-Type": "application/json",
        "Accept": "application/json",
        "Sticky-Token": '2a3b301d-73c9-e31b-eab4-xxxxxxxxxxxx',
        "Sticky-User": '5ef5d753a91766xxxxxxxxxx',
        "Sticky-Company": '2f8c1f2bcfa625xxxxxxxxxx'
    },
    body: JSON.stringify({
        m: "articles",
        method: "create_article",
        "msg": {
            "title": "Reifen",
            "type": "product",
            "unit_name": "Stück",
            "price_net": 16.99,
            "tax_rate": 19
        }
    })
});

let response = await api_request.json();
console.log(response);

Our API expects basic POST requests with a JSON payload and the following properties.

Property Datatype Required Description
m string Yes used "module"
method string Yes used "method"
msg string / object / bool No depend on method
id string No depend on method

Response

Sample response payload

{
    "src": "server",
    "time": 1656960905,
    "module": "articles",               
    "method": "create_article",
    "msg": "ok",
    "id": "103ed61f-2b76-4780-a0a0-8421750a7b15",
}

Sample response payload with an array as payload

{
    "src": "server",
    "time": 1656960905,
    "module": "articles",
    "method": "get_all",
    "msg": [
        { "id": 1234, "title": "Datensatz Titel 1", ... },
        { "id": 1235, "title": "Datensatz Titel 2", ... }
    ],
    "id": ""
}

Sample response payload with an error

{
    "src": "server",
    "time": 1656960905,
    "module": "system",
    "method": "access",
    "msg": "ERROR_API_INVALID_USER",
    "id": "",
    "error": 1
}

Endpoints return JSON formated responses with the following properties.

Property Datatype Required Description
src string Yes source of this packet. Here it is "server" every time
time int Yes serverside timestamp at packet creation
module string Yes used module
method string Yes used method
msg string / array / object Yes the response to your request
id string Yes if a new resource has been created, its ID is returned.
error bool No true if an error occurs, otherwise this property did not exists

Scope: Modules

Here you will find a list of all documented endpoints. If you find something missing, just let us know or send us an email at support@sticky.de.

We are sure that the endpoint you are looking for already exists, but it has not yet anybody wrote it into the documentation ;-}

Articles

Create article

Sample request

{
    "m": "articles",               
    "method": "create_article",
    "msg": {
        "title": "Reifen",
        "type": "product",
        "unit_name": "Stück",
        "price_net": 16.99,
        "tax_rate": 19
    }
}

Sample response

{
    "src": "server",
    "time": 1757673247,
    "module": "articles",
    "method": "create_article",
    "msg": "ok",
    "id": "103ed61f-2b76-4780-a0a0-8421750a7b15"
}
Property Datatype Required Description
m string Yes static: articles
method string Yes static: create_article
msg object Yes see article - msg object

Article - msg object

Property Datatype Required Description
title string Yes
description string No
type string Yes service or product
article_number string No has to be unique. Maximum length is 18 chars.
gtin string No GTIN (Global Trade Item Number)
note string No
unit_name string Yes if the unit does not yet exist, it will be created automatically.
price_net float Yes
tax_rate int Yes 0, 7 or 19

Possible error messages

Contacts

Create contact

Sample request

{
    "m": "contacts",
    "method": "create_contact",
    "msg": {
        "type": "Kunde & Lieferant",
        "title": "First Firma GmBH",
        "tax_id": "78549327754",
        "vat_id": "DE999999999",
        "street": "Blumenstraße 67",
        "zip_code": "43584",
        "city": "Blumenstadt",
        "country": "Deutschland",
        "email": "test@gmail.com",
        "phone": "673434",
        "mobile": "8735645",
        "note": "Mitarbeiter",
        "contact_person": {
            "salutation": "Herr",
            "firstname": "Dorian",
            "lastname": "Gray",
            "email": "dor@gmail.com",
            "phone": "654788342"
        }
    }
}

Sample response

{
    "src": "server",
    "time": 1709019163,
    "module": "contacts",
    "method": "create_contact",
    "msg": "ok",
    "id": "ee7f5cb2-c5b1-4bcb-9985-c18bf66162b5"
}

Create new contact

Property Datatype Required Description
m string Yes static: contacts
method string Yes static: create_contact
msg object Yes see contact - msg object

Contact - msg object

Property Datatype Required Description
type string Yes Kunde, Lieferant, Kunde & Lieferant
title string Yes
tax_id string No Steuernummer
vat_id string No Umsatzsteuer-ID / Wirtschafts-ID
street string Yes
street_additional string No
zip_code string Yes
city string Yes
country string Yes
email string No If this field is missing or blank, but there is a contact person with an email address, the contact person's email address is set as the primary address.
phone string No
mobile string No
note string No
contact_person object No see contact person - msg object

Contact person - msg object

Property Datatype Required Description
salutation string No
firstname string Yes
lastname string Yes
email string No
phone string No

Possible error messages

Update SEPA mandate

Sample request

{
    "m": "contacts",
    "method": "set_sepa_debit_data",
    "id": "40490b91-9016-45de-ba4a-a506285064a0",
    "msg": {
        "source": "lexoffice",
        "sepa_name": "Baebeca Solutions GmbH",
        "sepa_iban": "DE02120300000000202051",
        "sepa_bic": "BYLADEM1001",
        "sepa_id": "10005",
        "sepa_date": "10.03.2021",
        "sepa_last_used": "10.03.2021",
        "sepa_type": "SEPA Basis-Lastschrift"
    }
}

Sample response

{
    "src": "server",
    "time": 1656968326,
    "module": "contacts",
    "method": "set_sepa_debit_data",
    "msg": "ok",
    "id": ""
}

A customers SEPA mandate is stored or updated.

Property Datatype Required Description
m string Yes static: contacts
method string Yes static: set_sepa_debit_data
id string Yes Contact id
msg object Yes see contact sepa mandate - msg object

Contact sepa mandate - msg object

Property Datatype Required Description
source string No Module name of the contact source and reference to “id”. Example: For a Lexware Office contact, the module name ‘lexoffice’ is used as “source”. If not specified or empty, the ID of a sticky contact is expected.
sepa_name string Yes Name of the account holder
sepa_iban string Yes IBAN is checked for validity
sepa_bic string No If BIC is not empty, its format is checked. We recommend leaving this field empty, as it is no longer required throughout the EU.
sepa_id string Yes Unique mandate reference (usually the same as the customer number)
sepa_date string Yes Date of the SEPA mandate in the format dd.mm.yyyy
sepa_last_used string Yes Date of last use for SEPA direct debit in the format dd.mm.yyyy. Empty if never used.
sepa_type string Yes SEPA Basis-Lastschrift, SEPA Firmen-Lastschrift, SEPA Mandat deaktiviert

Possible error messages

Update data field(s)

Sample request - Two default fields

{
    "m": "contacts",
    "method": "set_fields",
    "id": "f8559d8b-52d1-4393-a101-f48f72a177a8",
    "msg": {
        "source":"lexoffice",
        "fields": [
            { "field": "billing_time", "value": "Vorkasse" },
            { "field": "postal_delivery", "value": true }
        ]
    }
}

Sample request - One custom field

{
    "m": "contacts",
    "method": "set_fields",
    "id":"f8559d8b-52d1-4393-a101-f48f72a177a8",
    "msg": {
        "source":"lexoffice",
        "fields": [
            { "field":"62cfbf6559d989666f237d72", "value": "Mein eigener Wert" }
        ]
    }
}

Sample response

{
    "src": "server",
    "time": 1656968326,
    "module": "contacts",
    "method": "set_fields",
    "msg": "ok",
    "id": ""
}

Individual or multiple data fields are updated for a contact.

All predefined fields for a contact are supported. Examples:

In addition, all fields additionally generated via data structures are also supported. Self-generated fields have a unique ID as their field name (example: 62cfbf6559d989666f237d72), which can be read in the UI on the HTML element.

Property Datatype Required Description
m string Yes static: contacts
method string Yes static: set_fields
id string Yes Contact id
msg object Yes see contact fields - msg object

Contact fields - msg object

Property Datatype Required Description
source string No Module name of the contact source and reference to “id”. Example: For a Lexware Office contact, the module name ‘lexoffice’ is used as “source”. If not specified or empty, the ID of a sticky contact is expected.
fields array Yes Array of objects in Format { "field":"field-id", "value": "value" }

Possible error messages

Update customer number

Updates the customer number for a contact who has not been booked.

Vouchers

Create offer

Sample request

{
    "m": "vouchers",
    "method": "create_offer",
    "msg": {
        "date": "05.02.2024",
        "title": "Angebot",
        "header": "Gerne bieten wir Ihnen an:",
        "footer": "Wir freuen uns auf Ihre Auftragserteilung und sichern eine einwandfreie Ausführung zu.",
        "contact": "d5df1f7b-f0c6-4ee1-8f80-7c35ae901472",
        "address": {
            "supplement": "App. 56a",
            "street": "Dorfstraße 12",
            "zip": "11111",
            "city": "Berlin"
        },
        "billing_label": "SEPA Lastschrift",
        "billing_days": 14,
        "date_end": "06.03.2024",
        "items": [ 
            {
                "title": "Artikel 1",
                "description": "Hochwertig",
                "quantity": 13, 
                "unit": "Stück",
                "price": 130.30,
                "taxrate": 19,
                "discount": 10
            }
        ]
    }
}

Sample response

{
    "src": "server",
    "time": 1707123314,
    "module": "vouchers",
    "method": "create_offer",
    "msg": "ok",
    "id": "6c4f0bc6-0f04-462a-a6f1-ede6836461b4"
}

Create a new offer

Property Datatype Required Description
m string Yes static: vouchers
method string Yes static: create_offer
msg object Yes see offer - msg object

Offer - msg object

Property Datatype Required Description
date string Yes (format: dd.mm.yyyy)
date_end string Yes (format: dd.mm.yyyy)
title string Yes
header string Yes
footer string Yes
contact string Yes Id of the customer
address object No see offer - address object. If empty default address from contact will be used
billing_label string Yes
billing_days int Yes
draft bool No default is false
language bool No de, en. default is de
items array Yes see offer - item object

Offer - address object

Property Datatype Required Description
supplement string No
street string Yes
zip string Yes
city string Yes

Offer - item object

Text-position

Property Datatype Required Description
title string Yes
description string No

Article-Position

Property Datatype Required Description
id string No Sticky-articleId
title string Yes
description string No
quantity float Yes
unit string Yes
price int / float Yes net-price
taxrate int / float Yes
discount int / float No default is 0

Possible error messages

Update offer status

Sample request

{
    "m": "vouchers",
    "method": "update_offer_status",
    "id": "729a135e-b3d1-44d6-84e9-0f823de927b6",
    "msg": {
        "status": "accepted"
    }
}

Sample response

{
    "src": "server",
    "time": 1718788070,
    "module": "vouchers",
    "method": "update_offer_status",
    "msg": "ok",
    "id": ""
}

The status of the offer is changed to "Accepted" or "Rejected".

Property Datatype Required Description
m string Yes static: vouchers
method string Yes static: update_offer_status
id string Yes
msg object Yes see update offer status - msg object

Update Offer Status - msg object

Property Datatype Required Description
status string Yes accepted, rejected

Possible error messages

Create invoice

Sample request

{ 
    "m": "vouchers",
    "method": "create_invoice", 
    "msg": { 
        "date": "31.01.2024",
        "title": "Rechnung",
        "header": "Unsere Lieferungen/Leistungen stellen wir Ihnen wie folgt in Rechnung.", 
        "footer": "Vielen Dank für die gute Zusammenarbeit", 
        "contact": "6560566ed737c363eb3ce4d2", 
        "address": {
            "supplement": "2345",
            "street": "Blumenstraße 43", 
            "zip": "77777", 
            "city": "Blumenstadt"
        }, 
        "delivery_type": "serviceperiod", 
        "delivery_date": "31.01.2024", 
        "delivery_date_end": "29.02.2024", 
        "billing_label": "SEPA Lastschrift", 
        "billing_days": 14,
        "language": "de",
        "items": [
            {
                "title": "Textposition", 
                "description": "Description"
            }, 
            {
                "title": "Artikel 1", 
                "description": "Hochwertig", 
                "quantity": 34, 
                "unit": "Stück", 
                "price": 12, 
                "taxrate": 19, 
                "discount": 0
            }
        ]
    }
}

Sample response

{ 
    "src": "server",
    "time": 1706700087,
    "module": "vouchers",
    "method": "create_invoice",
    "msg": "ok",
    "id": "900365ec-25a7-467a-92a8-09d0ac57c0a5"
}

Create a new invoice

Property Datatype Required Description
m string Yes static: vouchers
method string Yes static: create_invoice
msg object Yes see invoice - msg object

Invoice - msg object

Property Datatype Required Description
date string Yes (format: dd.mm.yyyy)
title string Yes
header string Yes
footer string Yes
contact string Yes Id of the customer
address object No see invoice - address object. If empty default address from contact will be used
delivery_type string Yes service, delivery, serviceperiod, deliveryperiod or none
delivery_date string Depends (format: dd.mm.yyyy) required if delivery_type is not equal none
delivery_date_end string Depends (format: dd.mm.yyyy) required if delivery_type is not equal none
billing_label string Yes
billing_days int Yes
draft bool No default is false
language bool No de, en. default is de
items array Yes see invoice - item object

Invoice - address object

Property Datatype Required Description
supplement string No
street string Yes
zip string Yes
city string Yes

Invoice - item object

Text-position

Property Datatype Required Description
title string Yes
description string No

Article-Position

Property Datatype Required Description
id string No Sticky-articleId
title string Yes
description string No
quantity float Yes
unit string Yes
price int / float Yes net-price
taxrate int / float Yes
discount int / float No default is 0

Possible error messages

Create invoice (asynchron)

Sample request

{ 
    "m": "vouchers",
    "method": "create_invoice_async", 
    "msg": { 
        "date": "31.01.2024",
        "title": "Rechnung",
        "header": "Unsere Lieferungen/Leistungen stellen wir Ihnen wie folgt in Rechnung.", 
        "footer": "Vielen Dank für die gute Zusammenarbeit", 
        "contact": "6560566ed737c363eb3ce4d2", 
        "address": {
            "supplement": "2345",
            "street": "Blumenstraße 43", 
            "zip": "77777", 
            "city": "Blumenstadt"
        }, 
        "delivery_type": "serviceperiod", 
        "delivery_date": "31.01.2024", 
        "delivery_date_end": "29.02.2024", 
        "billing_label": "SEPA Lastschrift", 
        "billing_days": "14",
        "language": "de",
        "items": [
            {
                "title": "Textposition", 
                "description": "Description"
            }, 
            {
                "title": "Artikel 1", 
                "description": "Hochwertig", 
                "quantity": 34, 
                "unit": "Stück", 
                "price": 12, 
                "taxrate": 19, 
                "discount": 0
            }
        ]
    }
}

Sample response

{ 
    "src": "server",
    "time": 1752742991,
    "module": "vouchers",
    "method": "create_invoice_async",
    "msg": "ok",
    "id": "68c297a4932f7eab030fe13d"
}

The endpoint immediately returns the Sticky-ID of the new invoice object. The invoice is processed (checked, created, imported into Sticky) in the background. With this endpoint, you can generate many invoices without having to wait for them to be created.

After a while, you can use the returned ID to query the get_voucher endpoint to check whether the job has been completed. You can then retrieve the document ID of the source accounting system from the source_id attribute.

Property Datatype Required Description
m string Yes static: vouchers
method string Yes static: create_invoice_async
msg object Yes see invoice - msg object

Possible error messages

Possible errors generate a log entry of type Error (If email notification is enabled, the administrator will receive information about this)

See details in the endpoint create_invoice

Get voucher

Sample request

{
    "m": "vouchers",
    "method": "get_voucher",
    "id": "6878c2a0c6a82a00ee02b458"
}

Sample response

{
    "src": "server",
    "time": 1752745171,
    "module": "vouchers",
    "method": "get_voucher",
    "msg": "{
        \"_id\": \"6878c2a0c6a82a00ee02b458\",
        \"module\": \"vouchers\",
        \"module_sub\": \"invoices\",
        \"updated\": 1752744691,
        \"created\": 1752744608,
        \"created_by\": \"651d1ed06579733bdb241ce4\",
        \"data\": {
            \"type\": \"Rechnung\",
            \"state\": \"Offen\",
            \"title\": \"RE0587\",
            \"date\": 1706655600,
            \"due_date\": 1707865200,
            \"contact\": \"6852ade205750a6fd90ba47b\",
            \"positions\": [
                {
                    \"type\": \"text\",
                    \"name\": \"Textposition\",
                    \"description\": \"Description\"
                },
                {
                    \"type\": \"custom\",
                    \"name\": \"Artikel 1\",
                    \"description\": \"Hochwertig\",
                    \"quantity\": 34,
                    \"unitName\": \"Stck\",
                    \"unitPrice\": {
                        \"currency\": \"EUR\",
                        \"netAmount\": 12,
                        \"grossAmount\": 14.28,
                        \"taxRatePercentage\": 19
                    },
                    \"discountPercentage\": 0,
                    \"lineItemAmount\": 408
                }
            ],
            \"amount_brutto\": 485.52,
            \"amount_netto\": 408,
            \"amount_tax\": 77.52,
            \"open_amount\": 485.52
        },
        \"source\": \"lexoffice\",
        \"source_id\": \"f203904c-93f6-4e3f-bfa1-6e822eefd918\",
        \"archived\": false,
        \"source_resync_down\": true,
        \"source_updated\": 1752744610,
        \"source_version\": 1
    }",
    "id": ""
}

Sample response (not found)

{
    "src": "server",
    "time": 1752745686,
    "module": "vouchers",
    "method": "get_voucher",
    "msg": false,
    "id": ""
}

Retrieve a specific document using its ID. The full voucher will delivered as JSON String in the msg property.

Property Datatype Required Description
m string Yes static: vouchers
method string Yes static: get_voucher
id string Yes

Possible error messages

Send voucher via E-Mail

Sample request

{
    "m": "vouchers",
    "method": "send_voucher",
    "id": "RE0265"
}

Sample response

{
    "src": "server",
    "time": 1656968326,
    "module": "vouchers",
    "method": "send_voucher",
    "msg": "ok",
    "id": ""
}

Invoices (PDF files) are sent by email to the customer's primary email address using the SMTP data and standard texts stored in the module settings.

Property Datatype Required Description
m string Yes static: vouchers
method string Yes static: send_voucher
id string Yes Invoice number or Sticky ID

Possible error messages

Set payment

Set payments or partial payments for a voucher.

ChatGPT

Simple Prompt

Sample request

{
    "m": "chatGPT",
    "method": "prompt",
    "msg": "Wie groß ist der Umfang der Erde?"
}

Sample response

{
    "src": "server",
    "time": 1709019163,
    "module": "chatGPT",
    "method": "prompt",
    "msg": "Der Umfang der Erde beträgt etwa 40.075 Kilometer.",
    "id": "6805ea61b089972caa024800"
}

In a simple prompt, you can formulate a question/task and receive a response.

Such a simple prompt has no context. If context is to be set, it must be sent as payload in the prompt.

Property Datatype Required Description
m string Yes static: chatGPT
method string Yes static: prompt
msg object Yes Your prompt

Create dialog

Sample request (1)

{
    "m": "chatGPT",
    "method": "dialog",
    "msg": "Wie ist dein Name?",
    "id": "" // Empty to create new context
}

Sample response (2)

{
    "src": "server",
    "time": 1709019163,
    "module": "chatGPT",
    "method": "dialog",
    "msg": "Ich bin ein KI-gestützter virtueller Assistent und habe keinen eigenen Namen.",
    "id": "680670cb182d5c36b7056be7" // New context id
}

Sample request (3)

{
    "m": "chatGPT",
    "method": "dialog",
    "msg": "Wie war meine vorige Frage?",
    "id": "680670cb182d5c36b7056be7" // Existing context id
}

Sample response (4)

{
    "src": "server",
    "time": 1709019163,
    "module": "chatGPT",
    "method": "dialog",
    "msg": "Deine vorherige Frage an mich war: \"Wie ist dein Name?\"",
    "id": "680670cb182d5c36b7056be7"
}

More complex dialogues, which are given context, can also be created and continued.

Property Datatype Required Description
m string Yes static: chatGPT
method string Yes static: dialog
id string No If empty, a new dialog is created. Otherwise, an existing dialog is continued.
msg object Yes Your prompt

Get dialog

Sample request

{
    "m": "chatGPT",
    "method": "dialogLoadThread",
    "id": "680670cb182d5c36b7056be7"
}

Sample response

{
    "src": "server",
    "time": 1709019163,
    "module": "chatGPT",
    "method": "dialogLoadThread",
    "msg": {
        "title": "Wie ist dein Name?",
        "messages": [
            {"role": "user", "content": "Wie ist dein Name?"},
            {"role": "assistant", "content": "Ich bin ein KI-gestützter virtueller Assistent und habe keinen eigenen Namen."},
            {"role": "user", "content": "Wie war meine vorige Frage"},
            {"role": "assistant", "content": "Deine vorherige Frage an mich war: \"Wie ist dein Name?\""}
        ]
    },
    "id": "680670cb182d5c36b7056be7"
}

Load a dialog with all messages.

Property Datatype Required Description
m string Yes static: chatGPT
method string Yes static: dialogLoadThread
id string Yes

Delete dialog

Sample request

{
    "m": "chatGPT",
    "method": "dialogDeleteThread",
    "id": "680670cb182d5c36b7056be7"
}

Sample response

{
    "src": "server",
    "time": 1709019163,
    "module": "chatGPT",
    "method": "dialogDeleteThread",
    "msg": "ok",
    "id": "680670cb182d5c36b7056be7"
}

Delete a dialog with all messages.

Property Datatype Required Description
m string Yes static: chatGPT
method string Yes static: dialogDeleteThread
id string Yes

Datastructures

Create item

Sample request

{
    "m": "custom",
    "c": "64cf55bda39cd440a9663427",
    "method": "add_item",
    "msg": {
        "title": "Mein Datensatz", // Textfeld
        "64cf5f2b5ccc66298129ef02": "20.10.2010", // Textfeld (Filter: Datum)
        "64cf5f5e986bd015d0528662": true, // Checkbox
        "64cf5f5e986bd015d0528648":"Erdbeere,Apfel,Banane", // Tags
        "6739bc79aec5290fd506c58e": "Morgen, Mittag, Abend" // Liste
        "image": {
            "file": "UEsDBBQABgAIAAAAIQDfpNJsWgEAACAFAAATAAgCW0NvbnRlbnRfVHlwZ....",
            "filename": "test.png"
        }, // Bild
        "67ac4ff22f0e2c6fc707838b": [
            {
                "file": "UEsDBBQABgAIAAAAIQDfpNJsWgEAACAFAAATAAgCW0NvbnRlbnRfVHlwZ....",
                "filename": "test.pdf"
            }
        ] // Dateiupload
    }
}

Sample response

{
    "src": "server",
    "time": 1656968326,
    "module": "64cf55bda39cd440a9663427",
    "method": "add_item",
    "msg": "ok",
    "id": "64cf69b8df3743757552ae83" 
}

A new data record is created in an individually created data structure.

Current limitations: * Multi-tab entries cannot be created within a data record. * The following field types are supported: Text, Number field, Text box, List, Checkbox, Tags, Image, File upload

Fields in data structures each have a unique ID as their field name (example: 62cfbf6559d989666f237d72), which can be read in the UI on the HTML element. The required parameter "c" can be taken from the URL when you open the data structure in the UI.

Property Datatype Required Description
m string Yes static: custom
c string Yes Datastructure id
method string Yes static: add_item
msg object Yes see datastructure item - msg object

Datastructure item - msg object

Property Datatype Required Description
title string Yes
<field-id> depend on field type No see below

Possible error messages

FP Sign

Create signature request

Sample request

{
    "m": "fp_sign",
    "method": "form_sign_request",
    "id": "6752b49ac1df0c267c053e01"
}

Sample response

{
    "src": "server",
    "time": 1733478143,
    "module": "fp_sign",
    "method": "form_sign_request",
    "msg": "ok",
    "id": "06.12.2024 10:44"
}

The request is generated using the settings from the module configuration.

Property Datatype Required Description
m string Yes static: fp_sign
method string Yes static: form_sign_request
id string Yes Sticky voucher id

Possible error messages

IONOS AI

Simple Prompt

Sample request

{
    "m": "ionosAI",
    "method": "prompt",
    "msg": "Wie groß ist der Umfang der Erde?"
}

Sample response

{
    "src": "server",
    "time": 1709019163,
    "module": "ionosAI",
    "method": "prompt",
    "msg": "Der Umfang der Erde beträgt etwa 40.075 Kilometer.",
    "id": "6805ea61b089972caa024800"
}

In a simple prompt, you can formulate a question/task and receive a response.

Such a simple prompt has no context. If context is to be set, it must be sent as payload in the prompt.

Property Datatype Required Description
m string Yes static: ionosAI
method string Yes static: prompt
msg object Yes Your prompt

Create dialog

Sample request (1)

{
    "m": "ionosAI",
    "method": "dialog",
    "msg": "Wie ist dein Name?",
    "id": "" // Empty to create new context
}

Sample response (2)

{
    "src": "server",
    "time": 1709019163,
    "module": "ionosAI",
    "method": "dialog",
    "msg": "Ich bin ein KI-gestützter virtueller Assistent und habe keinen eigenen Namen.",
    "id": "680670cb182d5c36b7056be7" // New context id
}

Sample request (3)

{
    "m": "ionosAI",
    "method": "dialog",
    "msg": "Wie war meine vorige Frage?",
    "id": "680670cb182d5c36b7056be7" // Existing context id
}

Sample response (4)

{
    "src": "server",
    "time": 1709019163,
    "module": "ionosAI",
    "method": "dialog",
    "msg": "Deine vorherige Frage an mich war: \"Wie ist dein Name?\"",
    "id": "680670cb182d5c36b7056be7"
}

More complex dialogues, which are given context, can also be created and continued.

Property Datatype Required Description
m string Yes static: ionosAI
method string Yes static: dialog
id string No If empty, a new dialog is created. Otherwise, an existing dialog is continued.
msg object Yes Your prompt

Get dialog

Sample request

{
    "m": "ionosAI",
    "method": "dialogLoadThread",
    "id": "680670cb182d5c36b7056be7"
}

Sample response

{
    "src": "server",
    "time": 1709019163,
    "module": "ionosAI",
    "method": "dialogLoadThread",
    "msg": {
        "title": "Wie ist dein Name?",
        "messages": [
            {"role": "user", "content": "Wie ist dein Name?"},
            {"role": "assistant", "content": "Ich bin ein KI-gestützter virtueller Assistent und habe keinen eigenen Namen."},
            {"role": "user", "content": "Wie war meine vorige Frage"},
            {"role": "assistant", "content": "Deine vorherige Frage an mich war: \"Wie ist dein Name?\""}
        ]
    },
    "id": "680670cb182d5c36b7056be7"
}

Load a dialog with all messages.

Property Datatype Required Description
m string Yes static: ionosAI
method string Yes static: dialogLoadThread
id string Yes

Delete dialog

Sample request

{
    "m": "ionosAI",
    "method": "dialogDeleteThread",
    "id": "680670cb182d5c36b7056be7"
}

Sample response

{
    "src": "server",
    "time": 1709019163,
    "module": "ionosAI",
    "method": "dialogDeleteThread",
    "msg": "ok",
    "id": "680670cb182d5c36b7056be7"
}

Delete a dialog with all messages.

Property Datatype Required Description
m string Yes static: ionosAI
method string Yes static: dialogDeleteThread
id string Yes

Scope: Company

Here you will find a list of all documented endpoints. If you find something missing, just let us know or send us an email at support@sticky.de.

We are sure that the endpoint you are looking for already exists, but it has not yet anybody wrote it into the documentation ;-}

Module configuration

Set module configuration

Sample request

{
    "m": "vouchers",
    "method": "set_config", 
    "msg": { 
        "CFG_AUTOSEND_INVOICE": true, 
        "CFG_SEND_POSTAL_IF_NO_EMAIL": false
    }
}

Sample response

{
    "src": "server", 
    "time": 1656968326, 
    "module": "vouchers", 
    "method": "set_config", 
    "msg":"ok"
}

The module settings for each module can be updated.

Each configuration in the module settings has a unique ID as the field name, which can be read in the UI on the HTML element.

Property Datatype Required Description
m string Yes module slug
method string Yes static: set_config
msg object Yes List of id: value settings

Possible error messages

Share data set publicly

Create/Get/Revoke shared item

Sample request

{
    "m": "vouchers",
    "method": "shareItem", 
    "msg": "share",
    "id": "67aa50f520a4c96bb408b99c"
}

Sample response

{
    "src": "server", 
    "time": 1656968326, 
    "module": "vouchers", 
    "method": "shareItem", 
    "msg": "6739a4e1aec5290fd506c53d"
}

Sharing permissions for data sets can be created and revoked.

A unique sharing URL can be generated and accessed for each data set.

Property Datatype Required Description
m string Yes module slug
method string Yes static: shareItem
id string Yes
msg object Yes share, getURL, revoke

Possible error messages

Logfiles

Get logfiles

Sample request

{
    "m": "system",
    "method": "get_logfiles", 
    "msg": {
        "n": 10,
        "start": 1692512495
    }
}

Sample response

{
    "src": "server", 
    "time": 1656968326, 
    "module": "system", 
    "method": "get_logfiles",
    "msg": [
        {
            "id": "64e1b0f19950e038b711d8c3",
            "pid": "0x3781a6",
            "account_id": "5ef5d753a9f173334b767334",
            "severity": "notice",
            "created": 1692512497,
            "module": "vouchers",
            "message": "Datei RE0001.jpg wird heruntergeladen"
        },
        {
            "id": "64e1b0f146ed520b1f5b4c62",
            "pid": "0xe01ec2",
            "account_id": "5ef5d753a9f173334b767334",
            "severity": "notice",
            "created": 1692512497,
            "module": "vouchers",
            "message": "Datei RE0004.jpg wird heruntergeladen"
        }
    ]
}

Log files can be retrieved using filters

Property Datatype Required Description
m string Yes static: system
method string Yes static: get_logfiles
msg object Yes see logfiles - msg object

Logfiles - msg object

Property Datatype Required Description
n int No deault 100, maximum 1.000
start int No timetsamp
end int No timetsamp

Scope: User

Here you will find a list of all documented endpoints. If you find something missing, just let us know or send us an email at support@sticky.de.

We are sure that the endpoint you are looking for already exists, but it has not yet anybody wrote it into the documentation ;-}

User configuration

Set user configuration

Sample request

{
    "m": "tasks",
    "method": "set_user_config", 
    "msg": {
        "CFG_USER_NOTIFY_TAGGING_SYSTEM": true, 
        "CFG_USER_NOTIFY_TAGGING_EMAIL": false
    }
}

Sample response

{
    "src": "server", 
    "time": 1656968326, 
    "module": "tasks", 
    "method": "set_user_config", 
    "msg":"ok"
}

The module settings of the respective user (with whom the API login took place) can be updated.

A user-specific module setting has a unique ID as its field name, which can be read in the UI on the HTML element.

Property Datatype Required Description
m string Yes module slug
method string Yes static: set_user_config
msg object Yes List of id: value settings

Possible error messages

Historical information

Name change Lexware Office (formerly lexoffice)

The product "lexoffice" was renamed "Lexware Office" on October 1, 2024. Internally, Sticky continues to refer to the connection as "lexoffice". This means that in all API requests, the string "lexoffice" must continue to be used as the "source" if the connection to "Lexware Office" is to be used as the source.