Quickstart: your first response in five minutes
From sign-up to your first real response in four steps. All you need is an email address and a terminal.
1. Create an account
#On the sign in page, enter your email address and confirm that you are using Quellenkontor for a business, a self-employed activity or a public authority. You get a link that is valid for 20 minutes and works once. Click it, and you are signed in. There is no password.
New accounts start on the Free plan with 500 requests a month. You do not need a credit card for that.
You can also try it with no account at all: minimum wage, public holidays and contribution ceilings answer in a sandbox without a key, limited to 50 requests a day, see Sandbox without an account.
2. Generate a key
#In your account, give the key a name, for example "Development", and click "Generate key". The key starts with qk_live_ and is shown exactly once. Copy it right away; afterward your account only shows the beginning of it.
Store the key as the environment variable QK_KEY. The SDK and CLI read it automatically; with curl you set it in the header.
macOS and Linux
Windows (PowerShell)
In a project
Put the key in a .env file and add that file to .gitignore:
3. Send your first request
#Look up the minimum wage on January 15, 2027. The date is in the format YYYY-MM-DD:
The response comes as JSON; here is the real response for this call:
4. Read the response
#Every response names the dataset, the requested effective date, the value, its validity and the official source. The fields of this dataset:
| Field | Type | Meaning |
|---|---|---|
datensatz | Text | Dataset id |
datum | Date | Requested effective date |
mindestlohn_brutto_stunde | Decimal | Statutory minimum wage in euros per hour |
minijob_grenze_monat | Integer | Mini-job earnings limit (Geringfügigkeitsgrenze) in euros per month |
gueltig_ab | Date | Start of validity of the value |
gueltig_bis | Date or null | End of validity, null until a successor is set |
rechtsgrundlage | Text | Law or ordinance |
quelle | Object | Title and URL of the source the value is based on |
minijob_rechtsgrundlage | Text | Legal basis of the mini-job limit |
minijob_quelle | Object | Source of the mini-job limit |
vorheriger_wert | Object or null | The step before the effective date |
naechster_wert | Object or null | The next adopted step |
hinweise | List | Limits of the values or the calculation, in sentences |
lizenz | Text | Terms of use for the values |
stand | Date | Date of the last check against the source |
zitat | Text | Ready-made sentence for citing, with value, validity, legal basis and source |
datenstand | Text | Id of the data snapshot: date and sequence number of the last changelog entry (/v1/aenderungen) affecting this dataset. The same datenstand means unchanged content, useful for auditors and for comparing two requests |
Every response made with a key also carries two headers about usage: X-Kontingent-Limit and X-Kontingent-Verbraucht. With curl -i you see them above the JSON.
The same request through every access method
#The four tabs show the same call through the REST API, the SDK, the command line and MCP. The response is the same in every case.
If it does not work
#| You see | Cause | Fix |
|---|---|---|
schluessel_fehlt | The Authorization header is missing, or the environment variable is not set in this terminal. | Check with echo $QK_KEY whether the variable has a value, and repeat the call in the same window. |
schluessel_ungueltig | The key was copied incompletely or has been revoked. | Check in your account whether the key is active. Otherwise generate a new one. |
ungueltiger_parameter | A value has the wrong format, for example 15.01.2027 instead of 2027-01-15. | The message names the parameter and the expected format. |
unbekannter_parameter | A typo in a parameter name. | The message lists the allowed names. |
kein_wert | There is no official value for this effective date, for example before 2015 or for a year that has not been set yet. | Check the effective date, see Effective dates and validity. |
kontingent_erreicht | This month's quota is used up. | Wait until the first of the month, or change your plan in your account. |
All codes with their status and fix are listed under Errors and error codes.
Next steps
#- Effective dates and validity: how values apply over time and what happens with future values.
- Reference: parameters and fields of every dataset.
- SDK for JavaScript or SDK for Python, if you would rather work with methods than URLs.
- MCP server, if an AI agent should look up the values.
- Webhooks, if your software should pick up new values automatically.
Something missing or unclear? Write to us and we will extend the docs.