Skip to main content

API Getting Started

This page shows the shortest useful Integration API flow: create a token, test it with a quick VAT ID lookup, then start a retry-safe VAT validation run.

1. Use The Production Base URL​

The Optimus Integration API is available at:

https://app.optimussoftware.de

The examples below use this production system.

2. Create A Token​

Create a Personal Access Token in the Optimus web app under Settings > API Interface > API Tokens.

Copy the token immediately. The full secret is shown only once.

3. Resolve One VAT ID​

Use the quick lookup endpoint to verify that authentication, networking, and the selected environment are working:

curl -X GET "https://app.optimussoftware.de/api/v1/integration/vat/resolve?vatId=DE329194932" \
-H "Authorization: Bearer <token>"

A successful response returns the VAT ID status and, when available, normalized company data:

{
"vatId": "DE329194932",
"status": "Valid",
"resolvedData": {
"companyName": "TL Digital Solutions GmbH",
"street": "Leopoldstr. 8",
"city": "München",
"zip": "80802"
},
"checkedAt": "2026-04-19T10:17:26.4359867Z"
}

When you need the resolved street split into street name and house number, request those fields with include:

curl -X GET "https://app.optimussoftware.de/api/v1/integration/vat/resolve?vatId=DE329194932&include=addressStreetName,addressHouseNumber" \
-H "Authorization: Bearer <token>"

The additional fields are returned in included only when the data can be resolved:

{
"vatId": "DE329194932",
"status": "Valid",
"resolvedData": {
"companyName": "TL Digital Solutions GmbH",
"street": "Leopoldstr. 8",
"city": "München",
"zip": "80802"
},
"included": {
"addressStreetName": "Leopoldstr.",
"addressHouseNumber": "8"
},
"checkedAt": "2026-04-19T10:17:26.4359867Z"
}

4. Start An Asynchronous Validation​

Use asynchronous validation for imports, larger batches, retry-safe jobs, and PDF-producing workflows.

Create validation-request.json:

{
"records": [
{
"vatId": "DE329194932",
"companyName": "TL Digital Solutions GmbH",
"street": "Leopoldstr. 8",
"zip": "80802",
"city": "München",
"customerNumber": "C-1001"
}
],
"options": {
"checkType": "Standard",
"retryDuration": "None"
}
}

Send the request with an idempotency key from your own system, such as an import job ID:

curl -X POST "https://app.optimussoftware.de/api/v1/integration/vat/validations/async" \
-H "Authorization: Bearer <token>" \
-H "Idempotency-Key: customer-import-2026-05-13-001" \
-H "Content-Type: application/json" \
-d @validation-request.json

The response contains an operationId. If the status is Running, wait for the Retry-After value before polling.

5. Poll The Result​

curl -X GET "https://app.optimussoftware.de/api/v1/integration/vat/validations/{operationId}" \
-H "Authorization: Bearer <token>"

When the run completes, the response includes per-record statuses and field comparison results.