--- title: "AI Overviews: rozkład pozycji (`getDistribution`)" source: https://docs.senuto.com/modules/rank_tracker/rt-ai-overviews-getDistribution api: GET /api/rank_tracker/reports/ai_overviews/getDistribution --- # AI Overviews: rozkład pozycji (`getDistribution`) **`GET /api/rank_tracker/reports/ai_overviews/getDistribution`** Zwraca rozkład fraz projektu wyzwalających bloki **AI Overviews** Google po pozycjach organicznych. `data` to tablica **dokładnie 50 kubełków** (`pos` od 1 do 50) — dla każdej pozycji organicznej endpoint podaje, ile fraz projektu na tej pozycji wyzwala AI Overviews, z podziałem na frazy z obecnością domeny w bloku AIO (`with_presence`) i bez niej (`without_presence`). To **inny raport** niż wycofany raport AI Overviews w Analizie widoczności — ten endpoint **nie jest** oznaczony jako deprecated. Bez paginacji. | Pozycja | Frazy z AIO | Udział % | Z obecnością | Z obecnością % | Bez obecności | Bez obecności % | | --- | --- | --- | --- | --- | --- | --- | | 1 | 0 | 0 | 0 | 0 | 0 | 0 | | 2 | 0 | 0 | 0 | 0 | 0 | 0 | | 3 | 0 | 0 | 0 | 0 | 0 | 0 | _Rozkład fraz wyzwalających AI Overviews po pozycjach 1–50 (pokazano 3 z 50 kubełków; projekt bez obecności w AIO, stąd zera). Wszystkie adresowalne pola wiersza._ --- ## Żądanie `GET` `/api/rank_tracker/reports/ai_overviews/getDistribution` Nagłówki: `Authorization: Bearer `. Parametry przekazuj w **query stringu** (np. `?project_id=87944`). Realny `project_id` pobierzesz z `POST /api/rank_tracker/management/projects/getMyActiveProjects`. ### Struktura żądania **Podstawowy** ```jsonc filename="żądanie-podstawowe.jsonc" { "project_id": null } ``` **cURL** ```bash curl --location --request GET 'https://api.senuto.com/api/rank_tracker/reports/ai_overviews/getDistribution?project_id=87944' \ --header 'Authorization: Bearer $YOUR_TOKEN_HERE' ``` ### Parametry ```ts type AiOverviewsGetDistributionRequest = { /** * **Wymagane**. ID projektu Rank Tracker. Użytkownik musi mieć dostęp do projektu * (reguły `ProjectAccessRules`); cudzy lub nieistniejący projekt → `418` `Unauthorized access`. * Realny `project_id` pobierzesz z `POST /api/rank_tracker/management/projects/getMyActiveProjects`. */ project_id: number; } export default AiOverviewsGetDistributionRequest ``` > **Ostrzeżenie:** > Ten endpoint używa metody **`GET`** — parametry należy przekazywać w **query stringu** (kontroler wymusza `allowMethod('get')`; żądanie `POST` zwraca `405`). Wymagany jest wyłącznie **`project_id`**; wskazanie cudzego lub nieistniejącego projektu skutkuje `418` (`Unauthorized access`) — dostęp weryfikują reguły `ProjectAccessRules`. ## Odpowiedź Po pomyślnym żądaniu otrzymujesz `data` będące tablicą **dokładnie 50 kubełków** — po jednym dla każdej pozycji organicznej od 1 do 50. Każdy kubełek podaje liczbę fraz projektu na danej pozycji, które wyzwalają AI Overviews (`total`), oraz podział na frazy z obecnością domeny w bloku AIO (`with_presence`) i bez tej obecności (`without_presence`) — wraz z udziałami procentowymi. Odpowiedź nie ma paginacji. W przykładach poniżej pokazano pierwsze kubełki oraz ostatni — w pełnej odpowiedzi jest ich 50. Projekt bez obecności w AI Overviews zwraca wszystkie wartości równe `0`; struktura pozostaje taka sama. **Skrócona** ```json filename="przykładowa-odpowiedź (skrócona)" { "success": true, "data": [ { "pos": 1, "total": 0, "total_percentage": 0, "with_presence": 0, "with_presence_percentage": 0, "without_presence": 0, "without_presence_percentage": 0 }, { "pos": 2, "total": 0, "total_percentage": 0, "with_presence": 0, "with_presence_percentage": 0, "without_presence": 0, "without_presence_percentage": 0 } ] } ``` **Pełna** ```json filename="przykładowa-odpowiedź (zwalidowana, 200; pokazano 3 z 50 kubełków)" { "success": true, "data": [ { "pos": 1, "total": 0, "total_percentage": 0, "with_presence": 0, "with_presence_percentage": 0, "without_presence": 0, "without_presence_percentage": 0 }, { "pos": 2, "total": 0, "total_percentage": 0, "with_presence": 0, "with_presence_percentage": 0, "without_presence": 0, "without_presence_percentage": 0 }, { "pos": 50, "total": 0, "total_percentage": 0, "with_presence": 0, "with_presence_percentage": 0, "without_presence": 0, "without_presence_percentage": 0 } ] } ``` ### Struktura odpowiedzi ```ts type AiOverviewsGetDistributionResponse = { /** `true` przy powodzeniu; przy błędzie `false` i koperta z `error` */ success: boolean; /** * Rozkład fraz wyzwalających AI Overviews po pozycjach organicznych. * Tablica zawiera **dokładnie 50 kubełków** — po jednym dla pozycji 1…50. */ data: AioDistributionBucket[]; } type AioDistributionBucket = { /** Pozycja organiczna kubełka (1–50) */ pos: number; /** Liczba fraz projektu na tej pozycji, które wyzwalają AI Overviews */ total: number; /** Udział procentowy kubełka w łącznej liczbie fraz wyzwalających AIO */ total_percentage: number; /** Liczba fraz z obecnością domeny projektu w bloku AI Overviews */ with_presence: number; /** Udział procentowy fraz z obecnością domeny w AIO */ with_presence_percentage: number; /** Liczba fraz bez obecności domeny projektu w bloku AI Overviews */ without_presence: number; /** Udział procentowy fraz bez obecności domeny w AIO */ without_presence_percentage: number; } export default AiOverviewsGetDistributionResponse ``` ## Błędy ```ts type ErrorResponse = { success: false; data: { error: { /** np. invalid_data, unauthorized, unknown */ type: string; message: string; /** pole -> reguła -> komunikat (dla invalid_data) */ params?: Record>; }; }; } export default ErrorResponse ``` > **Błąd:** > Kontroler wymusza metodę `GET` (`allowMethod('get')`) — żądanie **`POST`** zwraca **`405`**. Wskazanie projektu, do którego użytkownik nie ma dostępu, lub projektu nieistniejącego zwraca **`418`** z komunikatem `Unauthorized access`. ## Powiązane akcje - `getStatistics` — zbiorcze statystyki obecności w AI Overviews - `getKeywords` — frazy projektu z danymi o obecności w AI Overviews - `getDistribution` — rozkład fraz wyzwalających AI Overviews po pozycjach organicznych 1–50 (ta strona) - `getCompetitors` — konkurenci w blokach AI Overviews - `getOpportunities` — szanse na zdobycie obecności w AI Overviews - `getAioDetails` — szczegóły bloku AI Overviews dla frazy - `getAioSources` — źródła cytowane w blokach AI Overviews