> 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/fr/docs/brand-monitor

# Surveillance de marque

API DomScan : Surveillance continue de la protection de la marque. Suivez les menaces de typosquattage et les tentatives d'usurpation d'identité de marque.

Surveillance continue de la protection de la marque. Suivez les menaces de typosquattage et les tentatives d'usurpation d'identité de marque.

GET /v1/brand-monitor

Obtenez toutes les marques surveillées et leur statut de menace actuel.

Paginé : envoyez `limit` (de 1 à 100) et renvoyez `next_cursor` comme `cursor`. Les réponses incluent `has_more` et `next_cursor`. Sans `limit`, la liste complète est renvoyée. Voir la [pagination](https://domscan.net/docs/response-format#pagination).

#### Exemple de réponse

```json
{
                "brands": [
                {
                "domain": "mycompany.com",
                "added_at": "2024-03-01T12:00:00Z",
                "last_scan_at": "2024-03-14T08:30:00Z",
                "scan_count": 6,
                "registered_typos": 3,
                "new_threats_since_baseline": 1,
                "has_alerts": true
                }
                ],
                "total": 1,
                "updated_at": "2024-03-14T08:30:00Z"
                }
```

#### Champs de réponse

| Champ | Type |
| --- | --- |
| `has_more` | boolean |
| `next_cursor` | string \| null |
| `brands[]` | object[] |
| `brands[]` | object |
| `brands[].domain` | string |
| `brands[].added_at` | string |
| `brands[].last_scan_at` | string \| null |
| `brands[].scan_count` | integer |
| `brands[].registered_typos` | integer |
| `brands[].new_threats_since_baseline` | integer |
| `brands[].has_alerts` | boolean |
| `brands[].scan_status` | string |
| `total` | integer |
| `updated_at` | string |

POST /v1/brand-monitor

Créez une nouvelle surveillance de marque.

#### Corps de la requête

```json
{
                "domain": "mycompany.com",
                "alert_email": "security@example.com"
                }
```

#### Champs de réponse

| Champ | Type |
| --- | --- |
| `success` | boolean |
| `message` | string |
| `brand` | object |
| `brand.domain` | string |
| `brand.baseline_threats` | integer |
| `brand.scan_status` | string |
| `initial_scan` | object \| null |

#### Exemple de réponse

```json
{
  "success": true,
  "message": "Request completed",
  "brand": {
    "domain": "example.com",
    "baseline_threats": 1,
    "scan_status": "pending"
  },
  "initial_scan": {}
}
```

POST /v1/brand-monitor/scan?domain=mycompany.com

Lancez immédiatement une analyse pour une marque surveillée.

#### Champs de réponse

| Champ | Type |
| --- | --- |
| `success` | boolean |
| `scan` | object \| null |
| `alert` | object |
| `alert.level` | string |
| `alert.message` | string |

#### Exemple de réponse

```json
{
  "success": true,
  "scan": {},
  "alert": {
    "level": "medium",
    "message": "Request completed"
  }
}
```

DELETE /v1/brand-monitor Crédits: 1

#### Paramètres de requête

| Paramètre | Type | requis |
| --- | --- | --- |
| domain | string | requis |

#### Champs de réponse

| Champ | Type |
| --- | --- |
| `success` | boolean |
| `message` | string |

#### Exemple de requête

```bash
curl -X DELETE "https://domscan.net/v1/brand-monitor?domain=example.com" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $DOMSCAN_API_KEY" \
  -d '{}'
```

```javascript
const response = await fetch("https://domscan.net/v1/brand-monitor?domain=example.com", {
  method: "DELETE",
  headers: { "X-API-Key": process.env.DOMSCAN_API_KEY, "Content-Type": "application/json" },
  body: JSON.stringify({}),
});
const data = await response.json();
console.log(data);
```

```python
import os
import requests

response = requests.delete(
    "https://domscan.net/v1/brand-monitor?domain=example.com",
    headers={"X-API-Key": os.environ["DOMSCAN_API_KEY"]},
    json={},
)
print(response.json())
```

```go
package main

func main() {
	body := strings.NewReader(`{}`)
	req, err := http.NewRequest(http.MethodDelete, "https://domscan.net/v1/brand-monitor?domain=example.com", body)
	if err != nil {
		panic(err)
	}
	req.Header.Set("X-API-Key", os.Getenv("DOMSCAN_API_KEY"))
	req.Header.Set("Content-Type", "application/json")

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

uri = URI("https://domscan.net/v1/brand-monitor?domain=example.com")
request = Net::HTTP::Delete.new(uri)
request["X-API-Key"] = ENV.fetch("DOMSCAN_API_KEY")
request["Content-Type"] = "application/json"
request.body = JSON.generate({})

#### Exemple de réponse

```json
{
  "success": true,
  "message": "Request completed"
}
```

#### Codes de statut HTTP

- `200` OK
- `400` Requête incorrecte
- `401` Non autorisé
- `402` Paiement requis
- `429` Trop de requêtes

GET /v1/brand-monitor/status Crédits: 1

#### Paramètres de requête

| Paramètre | Type | requis |
| --- | --- | --- |
| domain | string | requis |

#### Champs de réponse

| Champ | Type |
| --- | --- |
| `brand` | object |
| `brand.domain` | string |
| `brand.name` | string |
| `brand.tld` | string |
| `brand.added_at` | string |
| `brand.last_scan_at` | string \| null |
| `brand.scan_count` | integer |
| `threats` | object |
| `threats.baseline_count` | integer |
| `threats.current_count` | integer |
| `threats.new_since_baseline` | integer |
| `threats.new_threat_domains[]` | string[] |
| `threats.all_registered[]` | string[] |
| `alerts` | object |
| `alerts.email` | string \| null |
| `alerts.webhook` | string \| null |

#### Exemple de requête

```bash
curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/brand-monitor/status?domain=example.com"
```

```javascript
const response = await fetch("https://domscan.net/v1/brand-monitor/status?domain=example.com", {
  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/brand-monitor/status?domain=example.com",
    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/brand-monitor/status?domain=example.com", nil)
	if err != nil {
		panic(err)
	}
	req.Header.Set("X-API-Key", os.Getenv("DOMSCAN_API_KEY"))

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

uri = URI("https://domscan.net/v1/brand-monitor/status?domain=example.com")
request = Net::HTTP::Get.new(uri)
request["X-API-Key"] = ENV.fetch("DOMSCAN_API_KEY")

#### Exemple de réponse

```json
{
  "brand": {
    "domain": "example.com",
    "name": "example",
    "tld": "com",
    "added_at": "2026-08-27T12:00:00Z",
    "last_scan_at": "2026-08-27T12:00:00Z",
    "scan_count": 1
  },
  "threats": {
    "baseline_count": 1,
    "current_count": 1,
    "new_since_baseline": 1,
    "new_threat_domains": [
      "example.com"
    ],
    "all_registered": [
      "example"
    ]
  },
  "alerts": {
    "email": "user@example.com",
    "webhook": "example"
  }
}
```

#### Codes de statut HTTP

- `200` OK
- `400` Requête incorrecte
- `401` Non autorisé
- `402` Paiement requis
- `404` Introuvable
- `429` Trop de requêtes

POST /v1/brand-monitor/reset-baseline Crédits: 1

#### Paramètres de requête

| Paramètre | Type | requis |
| --- | --- | --- |
| domain | string | requis |

#### Champs de réponse

| Champ | Type |
| --- | --- |
| `success` | boolean |
| `message` | string |

#### Exemple de requête

```bash
curl -X POST "https://domscan.net/v1/brand-monitor/reset-baseline?domain=example.com" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $DOMSCAN_API_KEY" \
  -d '{}'
```

```javascript
const response = await fetch("https://domscan.net/v1/brand-monitor/reset-baseline?domain=example.com", {
  method: "POST",
  headers: { "X-API-Key": process.env.DOMSCAN_API_KEY, "Content-Type": "application/json" },
  body: JSON.stringify({}),
});
const data = await response.json();
console.log(data);
```

```python
import os
import requests

response = requests.post(
    "https://domscan.net/v1/brand-monitor/reset-baseline?domain=example.com",
    headers={"X-API-Key": os.environ["DOMSCAN_API_KEY"]},
    json={},
)
print(response.json())
```

```go
package main

func main() {
	body := strings.NewReader(`{}`)
	req, err := http.NewRequest(http.MethodPost, "https://domscan.net/v1/brand-monitor/reset-baseline?domain=example.com", body)
	if err != nil {
		panic(err)
	}
	req.Header.Set("X-API-Key", os.Getenv("DOMSCAN_API_KEY"))
	req.Header.Set("Content-Type", "application/json")

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

uri = URI("https://domscan.net/v1/brand-monitor/reset-baseline?domain=example.com")
request = Net::HTTP::Post.new(uri)
request["X-API-Key"] = ENV.fetch("DOMSCAN_API_KEY")
request["Content-Type"] = "application/json"
request.body = JSON.generate({})

#### Exemple de réponse

```json
{
  "success": true,
  "message": "Request completed"
}
```

#### Codes de statut HTTP

- `200` OK
- `400` Requête incorrecte
- `401` Non autorisé
- `402` Paiement requis
- `409` HTTP 409
- `422` HTTP 422
- `429` Trop de requêtes

PUT /v1/brand-monitor/alerts Crédits: 1

#### Paramètres du corps

| Paramètre | Type | requis |
| --- | --- | --- |
| domain | string | requis |
| alert_email | string \| null | optionnel |
| alert_webhook | string \| null | optionnel |

#### Champs de réponse

| Champ | Type |
| --- | --- |
| `success` | boolean |
| `message` | string |

#### Exemple de requête

```bash
curl -X PUT "https://domscan.net/v1/brand-monitor/alerts" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $DOMSCAN_API_KEY" \
  -d '{
  "domain": "example.com",
  "alert_email": "brand-team@example.com",
  "alert_webhook": "https://hooks.example.com/domscan"
}'
```

```javascript
const response = await fetch("https://domscan.net/v1/brand-monitor/alerts", {
  method: "PUT",
  headers: { "X-API-Key": process.env.DOMSCAN_API_KEY, "Content-Type": "application/json" },
  body: JSON.stringify({
    "domain": "example.com",
    "alert_email": "brand-team@example.com",
    "alert_webhook": "https://hooks.example.com/domscan"
  }),
});
const data = await response.json();
console.log(data);
```

```python
import os
import requests

response = requests.put(
    "https://domscan.net/v1/brand-monitor/alerts",
    headers={"X-API-Key": os.environ["DOMSCAN_API_KEY"]},
    json={
        "domain": "example.com",
        "alert_email": "brand-team@example.com",
        "alert_webhook": "https://hooks.example.com/domscan",
    },
)
print(response.json())
```

```go
package main

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

func main() {
	body := strings.NewReader(`{
	  "domain": "example.com",
	  "alert_email": "brand-team@example.com",
	  "alert_webhook": "https://hooks.example.com/domscan"
	}`)
	req, err := http.NewRequest(http.MethodPut, "https://domscan.net/v1/brand-monitor/alerts", body)
	if err != nil {
		panic(err)
	}
	req.Header.Set("X-API-Key", os.Getenv("DOMSCAN_API_KEY"))
	req.Header.Set("Content-Type", "application/json")

	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/brand-monitor/alerts")
request = Net::HTTP::Put.new(uri)
request["X-API-Key"] = ENV.fetch("DOMSCAN_API_KEY")
request["Content-Type"] = "application/json"
request.body = JSON.generate({
  "domain" => "example.com",
  "alert_email" => "brand-team@example.com",
  "alert_webhook" => "https://hooks.example.com/domscan"
})

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))
```

#### Exemple de réponse

```json
{
  "success": true,
  "message": "Request completed"
}
```

#### Codes de statut HTTP

- `200` OK
- `400` Requête incorrecte
- `401` Non autorisé
- `402` Paiement requis
- `429` Trop de requêtes
