---
title: "Llm Search V2"
method: POST
path: "/search/llm/v2"
tags: ["search"]
---

# Llm Search V2

`POST /search/llm/v2`

## Request

- Base URL: `https://api.dataforb2b.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.dataforb2b.ai/search/llm/v2`
- Auth: none declared

Recherche en langage naturel v2 — filtres durs minimaux + ranking sémantique

**Authentification requise:** Header `api_key: <your_api_key>`

**Tarification:** identique à `/search/people` (tarif DB par profil)

Contrairement à `/search/llm` (v1), le LLM n'extrait ici que les contraintes DURES
(géographie, années d'expérience explicites, taille d'entreprise explicite, secteur
explicitement nommé, employeur nommé). Tout le reste (rôle, séniorité, skills, domaine,
produit) est géré par le ranking sémantique sur la requête telle quelle : le jeu de
résultats est large, ordonné par pertinence, chaque profil portant `relevance_score` (0-1).
Aucun filtre n'est relâché ni ajouté côté serveur.

**Paramètres:**
- **query**: la requête en langage naturel (obligatoire)
- **category**: "people" (v2) — "company" est délégué au comportement v1
- **prioritize**: null (défaut) = ordre de pertinence pur ; "personal_email"/"work_email"/"phone" = contact-d'abord
- **max_per_company**: diversité, au plus N profils du même employeur en tête (désactivé par défaut, passer une valeur pour l'activer)
- **page / page_size / count, show_private_fields**: comme la v1

La réponse a le même format que la v1 ; `query_interpretation` expose en plus
`rank_query` et `extraction` (ce que le LLM a extrait).

## Headers

- `api-key` string, nullable

## Request body

- LLMSearchV2Request: Requête de recherche en langage naturel v2 (filtres durs minimaux + ranking sémantique).
  - `query` string, required: Requête en langage naturel
  - `category` string: Catégorie de recherche: 'people' (v2) ou 'company' (délégué au comportement v1)
  - `lookalike_use_case` 'sales' | 'recruiter': Lookalike use case (utilisé seulement quand la query contient une URL LinkedIn, délégué au comportement v1)
  - `show_private_fields` boolean: Si True, affiche les champs privés (photo, dates, is_open_to_work, is_hiring, etc.)
  - `page` integer: Numéro de page
  - `page_size` integer: Nombre de résultats par page
  - `count` integer, nullable: Alias for page_size (takes priority if both provided)
  - `prioritize` 'personal_email' | 'work_email' | 'phone', nullable: Tri contact-d'abord: les profils ayant ce type de contact passent devant, chaque groupe restant trié par pertinence. Défaut null = ordre de pertinence pur.
  - `max_per_company` integer, nullable: Diversité: au plus N profils d'un même employeur dans la tête des résultats (le surplus est repoussé plus loin, rien n'est filtré, l'ordre par pertinence n'est plus strict au-delà). Désactivé par défaut (null) — préserve le tri par relevance_score ; passer une valeur pour l'activer.

## Response `200`

Successful Response

- LLMSearchResponse: Réponse de recherche LLM
  - `query_interpretation` object, required: Interprétation de la requête par le LLM
  - `total` integer, required
  - `page` integer, required
  - `page_size` integer, required
  - `has_next_page` boolean, required
  - `results` object[], required
  - `_debug` object, nullable

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/dataforb2b/apis/dataforb2b-api.md) · [All operations](https://skmtc.dev/dataforb2b/apis/dataforb2b-api/llms.txt) · [OpenAPI document](https://skmtc.dev/dataforb2b/apis/dataforb2b-api/revisions/24ea79caa1a1?raw)
