Diplo APIvidex.diplo.de ↗
Access validation rules and dropdown option lists from the German Federal Foreign Office VIDEX short-term stay visa form via two structured endpoints.
What is the Diplo API?
This API exposes 2 endpoints that return structured metadata from the German Federal Foreign Office VIDEX short-term stay (Schengen) visa application form. The get_validation_rules endpoint delivers field-level constraints — mandatory flags, length bounds, numeric ranges, and regex masks — for every form field identified by dot-notated path. The get_value_lists endpoint returns all dropdown option sets, including countries, Schengen member states, occupations, and travel purposes, in up to 11 languages.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/173d9312-da53-4641-a3cb-0c80f8ca9647/get_validation_rules' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace videx-diplo-de-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: VIDEX visa form metadata — validation rules and dropdown lists."""
from parse_apis.videx_diplo_de_api import Videx, Language, ParseError
client = Videx()
# Fetch the complete validation ruleset for all form fields.
try:
ruleset = client.validation_rulesets.get()
except ParseError as e:
print(f"Could not fetch rules: {e.code}")
raise
print(f"Total validated fields: {ruleset.total_fields}")
# Inspect a specific field's constraints by its dot-notated path.
passport_rule = ruleset.rules.get("antragsteller.pass.passnummer")
if passport_rule is not None:
print(f"Passport number: mandatory={passport_rule.mandatory}, "
f"length=[{passport_rule.min_length}, {passport_rule.max_length}], "
f"pattern={passport_rule.mask_regex}")
# List all dropdown option lists in English, capped at 5 items.
for vl in client.value_lists.list(language=Language.EN, limit=5):
print(f"{vl.name} (v{vl.version}): {vl.item_count} options")
# Show first two items from each list.
for item in vl.items[:2]:
print(f" {item.key} -> {item.value}")
print("exercised: validation_rulesets.get / value_lists.list")
Returns validation metadata for all form fields of the VIDEX short-term stay (Schengen) visa application. Each field entry includes whether it is mandatory, minimum/maximum length constraints, minimum/maximum numeric value constraints, and a regex pattern (maskRegex) that valid input must match. Internal valueListID sub-fields are filtered out. The response is language-independent since validation rules do not vary by display language.
No input parameters required.
{
"type": "object",
"fields": {
"fields": "object mapping dot-notated field paths to their validation rule objects (mandatory, minLength, maxLength, minValue, maxValue, maskRegex, properties)",
"total_fields": "integer count of field entries returned"
},
"sample": {
"data": {
"fields": {
"antragsteller.familienname": {
"maxValue": null,
"minValue": null,
"mandatory": true,
"maskRegex": "^[A-ZÄÖÜß][-A-ZÄÖÜß'/.+? ]*$",
"maxLength": 40,
"minLength": 1,
"properties": null
},
"antragsteller.geburtsdatum": {
"maxValue": null,
"minValue": null,
"mandatory": true,
"maskRegex": "^00\\.00\\.(19|20|21)\\d{2}|00\\.(0\\d|1[0-2])\\.(19|20|21)\\d{2}|(0\\d|[12][0-9]|3[01])\\.(0[13578]|1[02])\\.(19|20|21)\\d{2}|(0\\d|[12][0-9]|30)\\.(0[469]|11)\\.(19|20|21)\\d{2}|(0\\d|1\\d|2[0-8])\\.02\\.(19|20|21)\\d{2}|29\\.02\\.(?:2000|(19|20|21)(0[48]|[2468][048]|[13579][26]))$",
"maxLength": null,
"minLength": null,
"properties": null
},
"visumdaten.gueltigkeit.dauer": {
"maxValue": 90,
"minValue": 1,
"mandatory": true,
"maskRegex": null,
"maxLength": null,
"minLength": null,
"properties": null
},
"antragsteller.pass.passnummer": {
"maxValue": null,
"minValue": null,
"mandatory": true,
"maskRegex": "^[A-Z 0-9]*$",
"maxLength": 20,
"minLength": 1,
"properties": null
}
},
"total_fields": 224
},
"status": "success"
}
}About the Diplo API
Validation Rules
The get_validation_rules endpoint takes no inputs and returns a fields object mapping dot-notated field paths (e.g. applicant.surname, travelInfo.entryDate) to their validation rule objects. Each rule object can include mandatory (boolean), minLength and maxLength for text fields, minValue and maxValue for numeric fields, and a maskRegex pattern specifying the exact character format a valid entry must match. The total_fields integer tells you how many entries are in the map. This is the authoritative source for what the official VIDEX form requires at the field level.
Value Lists
The get_value_lists endpoint accepts an optional language parameter as an ISO 639-1 code (de, en, ar, zh, fr, id, fa, pt, ru, es, tr, vi). It returns a value_lists array where each element has a name, a version, an items array of key/value pairs, and an item_count. Lists cover reference data such as countries, Schengen member states, occupation types, and travel purposes — all of which correspond directly to select fields in the visa form. If no language is specified, labels default to German.
Data Shape and Practical Use
The dot-notated field paths from get_validation_rules align with the option keys in get_value_lists, so you can cross-reference a field's maskRegex or mandatory flag against the valid option keys for that field. The version field on each value list lets you detect when the official option set has been updated. Both endpoints reflect the current state of the VIDEX short-term stay form; the long-stay (national visa) form is a separate VIDEX variant not covered here.
The Diplo API is a managed, monitored endpoint for videx.diplo.de — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when videx.diplo.de changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official videx.diplo.de API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Validate user-entered visa application data client-side against official
minLength,maxLength, andmaskRegexconstraints before submission. - Populate country and Schengen member state dropdowns in a visa application UI using the
get_value_listsitems in the user's preferred language. - Build multilingual visa form interfaces by fetching value lists with the
languageparameter for any of the 11 supported ISO 639-1 codes. - Detect field requirement changes by comparing the
versionfield of returned value lists across periodic calls. - Generate automated test cases that exercise mandatory fields and boundary values derived from
minValue,maxValue,minLength, andmaxLengthrules. - Map occupation codes and travel purpose keys from
get_value_liststo their human-readable labels for display in application review tools. - Audit a pre-filled visa application object against
mandatoryflags and regex patterns to surface missing or malformed entries before a user submits.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does the German Federal Foreign Office provide an official developer API for VIDEX form data?+
What does `get_validation_rules` return for a field, and how granular is it?+
fields object is keyed by a dot-notated path and contains up to six properties: mandatory (boolean), minLength, maxLength (character bounds for text inputs), minValue, maxValue (numeric bounds), and maskRegex (a regular expression the input must satisfy). Not every field carries all six properties — a text field with no numeric constraint will omit minValue/maxValue, for example.Does the API cover the VIDEX long-stay (national visa, Type D) form as well?+
Are value list labels available in languages beyond the 11 currently supported?+
language parameter currently accepts de, en, ar, zh, fr, id, fa, pt, ru, es, tr, and vi. Labels for other languages are not available from this endpoint. You can fork the API on Parse and revise it if you need to add a translation layer or default mapping for an unsupported locale.How do I know if the official dropdown options have changed since my last call?+
value_lists array includes a version field. Storing that value and comparing it on subsequent calls lets you detect when a specific option list — such as the Schengen member states list — has been updated in the official form.