> For the complete documentation index see https://domscan.net/llms.txt. Markdown versions of every docs page are available by appending .md to the page URL.

Source: https://domscan.net/de/docs/products/dni-validation

# API für API zur Validierung spanischer DNI, NIE und NIF

Spanische DNI-, NIE- und NIF/CIF-Nummern prüfen. Nutzen Sie diese Referenz, um eine Operation auszuwählen und den dokumentierten Response-Vertrag zu integrieren.

[Produktseite ansehen](https://domscan.net/de/dni-validation-api)

## Operationen

GET `/v1/national-id/validate` [API-Referenz ansehen](https://domscan.net/de/docs/products/dni-validation#validateNationalId)

## GET `/v1/national-id/validate`

Operation: `validateNationalId`
Credits und Authentifizierung: 1
Authentifizierung erforderlich

GET /v1/national-id/validate Credits: 1

#### Abfrageparameter

| Parameter | Typ | erforderlich |
| --- | --- | --- |
| id | string | erforderlich |
| country | string Zulässige Werte `ES` Standard `ES` | optional |

#### Antwortfelder

| Feld | Typ |
| --- | --- |
| `country` | string |
| `input` | string |
| `normalized` | string \| null |
| `valid` | boolean |
| `type` | string \| null |
| `entity_type` | string \| null |
| `holder` | string \| null |
| `checks` | object |
| `checks.format` | boolean |
| `checks.control` | boolean \| null |
| `expected_control` | string \| null |
| `errors[]` | string[] |

#### Beispielanfrage

```bash
curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/national-id/validate?id=example-id&country=ES"
```

```javascript
const response = await fetch("https://domscan.net/v1/national-id/validate?id=example-id&country=ES", {
  headers: { "X-API-Key": process.env.DOMSCAN_API_KEY },
});
const data = await response.json();
console.log(data);
```

```python
import os
import requests

response = requests.get(
    "https://domscan.net/v1/national-id/validate?id=example-id&country=ES",
    headers={"X-API-Key": os.environ["DOMSCAN_API_KEY"]},
)
print(response.json())
```

```go
package main

import (
	"fmt"
	"io"
	"net/http"
	"os"
)

func main() {
	req, err := http.NewRequest(http.MethodGet, "https://domscan.net/v1/national-id/validate?id=example-id&country=ES", nil)
	if err != nil {
		panic(err)
	}
	req.Header.Set("X-API-Key", os.Getenv("DOMSCAN_API_KEY"))

	resp, err := http.DefaultClient.Do(req)
	if err != nil {
		panic(err)
	}
	defer resp.Body.Close()

	data, err := io.ReadAll(resp.Body)
	if err != nil {
		panic(err)
	}
	fmt.Println(resp.Status, string(data))
}
```

```ruby
require "json"
require "net/http"

uri = URI("https://domscan.net/v1/national-id/validate?id=example-id&country=ES")
request = Net::HTTP::Get.new(uri)
request["X-API-Key"] = ENV.fetch("DOMSCAN_API_KEY")

response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
  http.request(request)
end
puts JSON.pretty_generate(JSON.parse(response.body))
```

#### Beispielantwort

```json
{
  "country": "ES",
  "input": "B-58378431",
  "normalized": "B58378431",
  "valid": true,
  "type": "cif",
  "entity_type": "sociedad_responsabilidad_limitada",
  "holder": null,
  "checks": {
    "format": true,
    "control": true
  },
  "expected_control": null,
  "errors": []
}
```

#### HTTP-Statuscodes

- `200` OK
- `400` Ungültige Anfrage
- `401` Nicht autorisiert
- `402` Zahlung erforderlich
- `429` Zu viele Anfragen

## Referenzressourcen

[OpenAPI 3.0](https://domscan.net/v1/openapi.json)
[Postman](https://domscan.net/v1/postman.json)
[MCP](https://domscan.net/de/mcp-domain-checker)
