> 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/products/avatar-lookup

# API API de recherche d'avatars et de logos

Trouvez une photo de profil vérifiée pour un e-mail ou un nom d'utilisateur, ou un logo pour un domaine. Utilisez cette référence pour choisir une opération et intégrer son contrat de réponse documenté.

[Voir la page du produit](https://domscan.net/fr/avatar-api)

## Opérations

GET `/v1/avatar` [Voir la référence API](https://domscan.net/fr/docs/products/avatar-lookup#getAvatar)

## GET `/v1/avatar`

Opération: `getAvatar`
Crédits et authentification: 2
Authentification requise

GET /v1/avatar Crédits: 2

#### Paramètres de requête

| Paramètre | Type | requis |
| --- | --- | --- |
| email | string | optionnel |
| username | string | optionnel |
| platform | string Valeurs autorisées `github`, `bluesky`, `mastodon`, `keybase` | optionnel |
| domain | string | optionnel |

#### Champs de réponse

| Champ | Type |
| --- | --- |
| `cache_age_s` | integer |
| `input` | object |
| `input.type` | string |
| `input.value` | string |
| `input.platform` | string \| null |
| `avatar` | object |
| `avatar.url` | string |
| `avatar.source` | string |
| `avatar.kind` | string |
| `avatar.verified` | boolean |
| `avatar.content_type` | string \| null |
| `avatar.width` | integer |
| `avatar.height` | integer |
| `avatar.profile_url` | string \| null |
| `candidates[]` | object[] |
| `candidates[]` | object |
| `candidates[].source` | string |
| `candidates[].kind` | string |
| `candidates[].status` | string |
| `candidates[].reason` | string |
| `candidates[].detail` | string |
| `candidates[].url` | string \| null |
| `candidates[].verified` | boolean |
| `candidates[].content_type` | string \| null |
| `candidates[].width` | integer |
| `candidates[].height` | integer |
| `candidates[].profile_url` | string \| null |
| `candidates[].may_be_generated` | boolean |
| `status` | string |
| `classification` | object |
| `classification.status` | string |
| `classification.reason` | string |
| `classification.evidence` | object |
| `classification.evidence.source` | string |
| `classification.evidence.method` | string |
| `classification.evidence.observed_at` | string |
| `classification.evidence.detail` | string |
| `classification.checked_at` | string |
| `checked_at` | string |
| `meta` | object |
| `meta.cached` | boolean |
| `meta.sources_checked` | integer |

#### Exemple de requête

```bash
curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/avatar?email=user%40example.com&username=example&platform=github&domain=example.com"
```

```javascript
const response = await fetch("https://domscan.net/v1/avatar?email=user%40example.com&username=example&platform=github&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/avatar?email=user%40example.com&username=example&platform=github&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/avatar?email=user%40example.com&username=example&platform=github&domain=example.com", 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/avatar?email=user%40example.com&username=example&platform=github&domain=example.com")
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))
```

#### Exemple de réponse

```json
{
  "input": {
    "type": "username",
    "value": "octocat",
    "platform": null
  },
  "avatar": {
    "url": "https://cdn.bsky.app/img/avatar/plain/did:plc:example/bafkreiexample",
    "source": "bluesky",
    "kind": "avatar",
    "verified": true,
    "content_type": "image/jpeg",
    "profile_url": "https://bsky.app/profile/octocat.bsky.social"
  },
  "candidates": [
    {
      "source": "github",
      "kind": "avatar",
      "status": "present",
      "detail": "image_verified",
      "url": "https://avatars.githubusercontent.com/u/583231?v=4",
      "verified": true,
      "content_type": "image/png",
      "profile_url": "https://github.com/octocat",
      "may_be_generated": true
    },
    {
      "source": "bluesky",
      "kind": "avatar",
      "status": "present",
      "detail": "image_verified",
      "url": "https://cdn.bsky.app/img/avatar/plain/did:plc:example/bafkreiexample",
      "verified": true,
      "content_type": "image/jpeg",
      "profile_url": "https://bsky.app/profile/octocat.bsky.social"
    },
    {
      "source": "mastodon",
      "kind": "avatar",
      "status": "absent",
      "detail": "account_not_found",
      "url": null,
      "verified": false,
      "content_type": null
    },
    {
      "source": "keybase",
      "kind": "avatar",
      "status": "unknown",
      "reason": "rate_limited",
      "detail": "http_429",
      "url": null,
      "verified": false,
      "content_type": null
    }
  ],
  "status": "present",
  "classification": {
    "status": "present",
    "evidence": {
      "source": "bluesky",
      "method": "image_probe",
      "observed_at": "2026-11-02T10:00:00.000Z",
      "detail": "image_verified"
    },
    "checked_at": "2026-11-02T10:00:00.000Z"
  },
  "checked_at": "2026-11-02T10:00:00.000Z",
  "meta": {
    "cached": false,
    "sources_checked": 4
  }
}
```

#### Codes de statut HTTP

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

## Ressources de référence

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