{"id":20611,"date":"2026-09-27T11:59:09","date_gmt":"2026-09-27T09:59:09","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/?p=20611"},"modified":"2026-09-27T12:21:18","modified_gmt":"2026-09-27T10:21:18","slug":"ga4-advisor-chat-api-weryfikacja-runreport","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/ga4-advisor-chat-api-weryfikacja-runreport\/","title":{"rendered":"Tutorial: Zapytanie do GA4 Analytics Advisor przez API i weryfikacja odpowiedzi w runReport"},"content":{"rendered":"<p>Przydatny asystent analityczny potrzebuje odpowiedzi, kt\u00f3re mo\u017cna sprawdzi\u0107. Ten tutorial pyta Analytics Advisor o sesje wed\u0142ug kana\u0142\u00f3w, dodaje okres por\u00f3wnawczy i kontroluje liczby przez jednoznaczne zapytanie Data API. Wynikiem jest ma\u0142a analiza z zapisanymi wej\u015bciami i wynikami, a nie bezkrytycznie przyj\u0119te wyja\u015bnienie.<\/p>\n<p><strong>Dokumentacja sprawdzona: 25 wrze\u015bnia 2026 r.<\/strong> Metoda chat nale\u017cy do wczesnej wersji v1alpha. Dost\u0119pno\u015b\u0107 i uprawnienia wymagaj\u0105 sprawdzenia dla konkretnej us\u0142ugi GA4. 27 wrze\u015bnia 2026 r. trzy udokumentowane zapytania API wykonano z wiersza polece\u0144 dla autoryzowanej us\u0142ugi GA4. Strukturalna tabela dla okresu 1\u20137 wrze\u015bnia by\u0142a dok\u0142adnie zgodna ze wszystkimi czterema wierszami grup kana\u0142\u00f3w z runReport; warto\u015bci us\u0142ugi nie s\u0105 tutaj publikowane. <a href=\"#source-1\">[1]<\/a><\/p>\n<h2>1. Zdefiniowanie ograniczonego pytania<\/h2>\n<p>Przyk\u0142ad por\u00f3wnuje 1\u20137 wrze\u015bnia 2026 r. z 25\u201331 sierpnia 2026 r. Oba okresy maj\u0105 siedem dni i taki sam uk\u0142ad dni tygodnia. Metryka to <code>sessions<\/code>, a grupowanie to <code>sessionDefaultChannelGroup<\/code>. Nazwy pochodz\u0105 ze schematu API. <a href=\"#source-4\">[4]<\/a> Konkretne daty eliminuj\u0105 zmienny sens okre\u015blenia \u201eostatni tydzie\u0144\u201d.<\/p>\n<p>Kana\u0142 to grupa atrybucyjna, nie osoba ani bud\u017cet kampanii. Pierwsze pytanie celowo dotyczy liczby, a nie przyczyny. Ni\u017cszy wynik mo\u017ce uzasadnia\u0107 analiz\u0119, ale sam nie dowodzi wp\u0142ywu okre\u015blonego dzia\u0142ania marketingowego.<\/p>\n<h2>2. Autoryzacja i zapis pierwszej odpowiedzi<\/h2>\n<p>Przyk\u0142ad dzia\u0142a w Bash z zainstalowanymi gcloud, curl i jq. Projekt Cloud wymaga w\u0142\u0105czonego Analytics Data API. Zalogowane konto potrzebuje dost\u0119pu do us\u0142ugi GA4 i uprawnienia do korzystania z projektu rozliczaj\u0105cego limity. Identyfikator projektu Cloud i numeryczny identyfikator us\u0142ugi Analytics to r\u00f3\u017cne warto\u015bci.<\/p>\n<p>Chat wymaga <code>analytics.chatbot.read<\/code>, a p\u00f3\u017aniejsza kontrola raportu <code>analytics.readonly<\/code>. Przyk\u0142ad prosi o oba zakresy. Dane uwierzytelniaj\u0105ce pozostaj\u0105 w lokalnym procesie logowania gcloud; nie nale\u017c\u0105 do kodu artyku\u0142u ani publicznej strony. <a href=\"#source-1\">[1]<\/a><a href=\"#source-3\">[3]<\/a><\/p>\n<p>Aktualne wersje Cloud CLI mog\u0105 blokowa\u0107 te zakresy Analytics dla wbudowanego klienta OAuth. W docelowym projekcie Cloud nale\u017cy utworzy\u0107 klienta OAuth typu aplikacja komputerowa, pobra\u0107 plik JSON i przekaza\u0107 go przez <code>--client-id-file<\/code>. Google dokumentuje ten parametr dla zakres\u00f3w spoza domy\u015blnego zestawu Cloud. <a href=\"#source-6\">[6]<\/a><\/p>\n<pre><code># Bash; gcloud, curl and jq required\nset -euo pipefail\nexport PROJECT_ID='REPLACE_WITH_CLOUD_PROJECT'\nexport PROPERTY_ID='REPLACE_WITH_NUMERIC_PROPERTY_ID'\nexport OAUTH_CLIENT_FILE='REPLACE_WITH_DOWNLOADED_DESKTOP_CLIENT_JSON'\ngcloud auth application-default login --client-id-file=\"$OAUTH_CLIENT_FILE\" --scopes=\"https:\/\/www.googleapis.com\/auth\/cloud-platform,https:\/\/www.googleapis.com\/auth\/analytics.chatbot.read,https:\/\/www.googleapis.com\/auth\/analytics.readonly\"\ngcloud auth application-default set-quota-project \"$PROJECT_ID\"\n\ncat &gt; question.json &lt;&lt;'JSON'\n{\n  \"userQuery\": \"For 2026-09-01 through 2026-09-07, report sessions by sessionDefaultChannelGroup. Use these exact dates and API field names. State any limitation and do not infer causes.\",\n  \"returnPropertyQuota\": true\n}\nJSON\ncurl --fail-with-body --silent --show-error \\\n  \"https:\/\/analyticsdata.googleapis.com\/v1alpha\/properties\/${PROPERTY_ID}:chat\" \\\n  -H \"Authorization: Bearer $(gcloud auth application-default print-access-token)\" \\\n  -H \"x-goog-user-project: ${PROJECT_ID}\" \\\n  -H \"Content-Type: application\/json\" \\\n  --data-binary @question.json -o answer.json\njq '{sessionId, blocks, propertyQuota}' answer.json<\/code><\/pre>\n<p>Poprawna odpowied\u017a mo\u017ce zawiera\u0107 bloki tekstu i tabel. Zapis ca\u0142ej odpowiedzi zachowuje kontekst. Brak tabeli nie oznacza tabeli z zerami. Symboli walut, procent\u00f3w i sformatowanych warto\u015bci nie nale\u017cy bez wyja\u015bnienia zamienia\u0107 w same liczby. Struktura odpowiedzi i pola sesji maj\u0105 osobn\u0105 dokumentacj\u0119. <a href=\"#source-2\">[2]<\/a><\/p>\n<h2>3. Kolejne pytanie w zwr\u00f3conej sesji<\/h2>\n<p>Nast\u0119pne polecenie odczytuje identyfikator sesji z odpowiedzi; jego brak zatrzymuje skrypt. Potem nast\u0119puje pytanie o wcze\u015bniejszy okres. Przy kolejnych krokach \u017ar\u00f3d\u0142em identyfikatora jest najnowsza odpowied\u017a. R\u00f3\u017cne us\u0142ugi, klienci i konteksty uprawnie\u0144 wymagaj\u0105 oddzielnego przechowywania sesji.<\/p>\n<pre><code>SESSION_ID=$(jq -er '.sessionId | strings | select(length &gt; 0)' answer.json)\njq -n --arg sid \"$SESSION_ID\" '{\n  sessionId: $sid,\n  userQuery: \"Compare those sessions by sessionDefaultChannelGroup with 2026-08-25 through 2026-08-31. Show both totals and absolute differences. Separate observations from hypotheses.\",\n  returnPropertyQuota: true\n}' &gt; followup.json\ncurl --fail-with-body --silent --show-error \\\n  \"https:\/\/analyticsdata.googleapis.com\/v1alpha\/properties\/${PROPERTY_ID}:chat\" \\\n  -H \"Authorization: Bearer $(gcloud auth application-default print-access-token)\" \\\n  -H \"x-goog-user-project: ${PROJECT_ID}\" \\\n  -H \"Content-Type: application\/json\" \\\n  --data-binary @followup.json -o followup-answer.json\njq '{sessionId, blocks, propertyQuota}' followup-answer.json<\/code><\/pre>\n<p>Kontekst sesji \u0142\u0105czy pytania, ale nie zast\u0119puje jednoznacznych dat i definicji. \u201eOrganic Search spad\u0142\u201d opisuje wynik. \u201eNowa strona docelowa spowodowa\u0142a spadek\u201d wymaga dodatkowych dowod\u00f3w. Zachowanie obu pyta\u0144 pozwala sprawdzi\u0107 t\u0119 r\u00f3\u017cnic\u0119.<\/p>\n<h2>4. Odtworzenie liczby przez runReport<\/h2>\n<p>Drugie zapytanie API pobiera bezpo\u015brednio oba okresy, ten sam wymiar i t\u0119 sam\u0105 metryk\u0119. Powstaje niezale\u017cny raport zamiast pro\u015bby, aby asystent potwierdzi\u0142 w\u0142asn\u0105 odpowied\u017a. API raportowe opisuje zakresy dat, nag\u0142\u00f3wki, liczb\u0119 wierszy i metadane. <a href=\"#source-3\">[3]<\/a><\/p>\n<pre><code>cat &gt; report-request.json &lt;&lt;'JSON'\n{\n  \"dateRanges\": [\n    {\"startDate\":\"2026-09-01\",\"endDate\":\"2026-09-07\",\"name\":\"current\"},\n    {\"startDate\":\"2026-08-25\",\"endDate\":\"2026-08-31\",\"name\":\"previous\"}\n  ],\n  \"dimensions\": [{\"name\":\"sessionDefaultChannelGroup\"}],\n  \"metrics\": [{\"name\":\"sessions\"}],\n  \"limit\": \"1000\",\n  \"returnPropertyQuota\": true\n}\nJSON\ncurl --fail-with-body --silent --show-error \\\n  \"https:\/\/analyticsdata.googleapis.com\/v1beta\/properties\/${PROPERTY_ID}:runReport\" \\\n  -H \"Authorization: Bearer $(gcloud auth application-default print-access-token)\" \\\n  -H \"x-goog-user-project: ${PROJECT_ID}\" \\\n  -H \"Content-Type: application\/json\" \\\n  --data-binary @report-request.json -o report-response.json\njq '{dimensionHeaders,metricHeaders,rows,rowCount,metadata,propertyQuota}' report-response.json<\/code><\/pre>\n<p>Kolejno\u015b\u0107 nag\u0142\u00f3wk\u00f3w okre\u015bla interpretacj\u0119 warto\u015bci w wierszach. Przy wielu zakresach dodatkowy wymiar okresu rozr\u00f3\u017cnia przedzia\u0142y. Por\u00f3wnanie wy\u0142\u0105cznie wed\u0142ug pozycji wiersza jest niew\u0142a\u015bciwe: kana\u0142y mog\u0105 mie\u0107 inn\u0105 kolejno\u015b\u0107 lub nie wyst\u0119powa\u0107. R\u00f3\u017cnica dla kana\u0142u to warto\u015b\u0107 bie\u017c\u0105ca minus poprzednia. Zmiana procentowa wymaga poprzedniej warto\u015bci r\u00f3\u017cnej od zera; brak wiersza nie jest zmierzon\u0105 warto\u015bci\u0105 zerow\u0105.<\/p>\n<h2>5. Kontrola ogranicze\u0144 przed wykorzystaniem wyniku<\/h2>\n<p><a href=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/ga4-api-response-inspector\/\">Inspektor odpowiedzi GA4 API<\/a> przyjmuje zapisany <code>report-response.json<\/code> do kontroli metadanych i limit\u00f3w. Nie obs\u0142uguje odpowiedzi chat. Wynik asystenta jest por\u00f3wnywany z raportem oddzielnie. Informacje o progach, pr\u00f3bkowaniu lub niepe\u0142nej paginacji musz\u0105 pozosta\u0107 widoczne w analizie.<\/p>\n<p><code>returnPropertyQuota<\/code> prosi o stan limit\u00f3w chat, ale nie rezerwuje pojemno\u015bci. Brak obiektu limit\u00f3w oznacza niewiadom\u0105, a nie brak ogranicze\u0144. B\u0142\u0119dy logowania, uprawnie\u0144 i limit\u00f3w wymagaj\u0105 zanotowania przed ponowieniem. Automatyczne powtarzanie pyta\u0144 mo\u017ce zu\u017cywa\u0107 dodatkowy limit i przynosi\u0107 inne odpowiedzi. <a href=\"#source-1\">[1]<\/a><\/p>\n<h2>6. Zapis wyniku mo\u017cliwego do sprawdzenia<\/h2>\n<p>Dokumentacja analizy obejmuje dwa pytania, dwie odpowiedzi chat, \u017c\u0105danie raportu, odpowied\u017a raportow\u0105 i czas pobrania. Dost\u0119p powinien odpowiada\u0107 poufno\u015bci danych us\u0142ugi. Informacja Google o prywatno\u015bci wskazuje mo\u017cliwo\u015b\u0107 przetwarzania rozm\u00f3w przez ludzi w celu ulepszania produktu. Nazwy klient\u00f3w i poufne plany kampanii nie powinny trafia\u0107 do pytania dotycz\u0105cego samych liczb. <a href=\"#source-5\">[5]<\/a><\/p>\n<p>Ko\u0144cowym wynikiem jest udokumentowana liczba z wyja\u015bnieniem rozbie\u017cno\u015bci. Wynik mo\u017ce te\u017c brzmie\u0107 \u201enie uda\u0142o si\u0119 odtworzy\u0107\u201d. Obie mo\u017cliwo\u015bci s\u0105 bardziej u\u017cyteczne ni\u017c niepoparta dowodami rekomendacja zmiany bud\u017cetu reklamowego.<\/p>\n<div class=\"lw-quellen\">\n<h2>\u0179r\u00f3d\u0142a<\/h2>\n<ol>\n<li id=\"source-1\"><a href=\"https:\/\/developers.google.com\/analytics\/devguides\/reporting\/data\/v1\/advisor-basics\" target=\"_blank\" rel=\"noopener noreferrer\">Analytics Advisor API guide<\/a><\/li>\n<li id=\"source-2\"><a href=\"https:\/\/developers.google.com\/analytics\/devguides\/reporting\/data\/v1\/rest\/v1alpha\/properties\/chat\" target=\"_blank\" rel=\"noopener noreferrer\">properties.chat reference<\/a><\/li>\n<li id=\"source-3\"><a href=\"https:\/\/developers.google.com\/analytics\/devguides\/reporting\/data\/v1\/rest\/v1beta\/properties\/runReport\" target=\"_blank\" rel=\"noopener noreferrer\">properties.runReport reference<\/a><\/li>\n<li id=\"source-4\"><a href=\"https:\/\/developers.google.com\/analytics\/devguides\/reporting\/data\/v1\/api-schema\" target=\"_blank\" rel=\"noopener noreferrer\">Data API schema<\/a><\/li>\n<li id=\"source-5\"><a href=\"https:\/\/support.google.com\/helpguide\/answer\/14185196\" target=\"_blank\" rel=\"noopener noreferrer\">Chat AI Privacy Hub<\/a><\/li>\n<li id=\"source-6\"><a href=\"https:\/\/docs.cloud.google.com\/sdk\/gcloud\/reference\/auth\/application-default\/login\" target=\"_blank\" rel=\"noopener noreferrer\">Google Cloud CLI: gcloud auth application-default login<\/a><\/li>\n<\/ol>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Powtarzalne por\u00f3wnanie kana\u0142\u00f3w przez properties.chat, kontekst sesji, limity oraz oddzielne zapytanie kontrolne runReport.<\/p>\n","protected":false},"author":1,"featured_media":20691,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11],"tags":[],"class_list":["post-20611","post","type-post","status-publish","format-standard","hentry","category-digital-analytics-pl"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Tutorial: Zapytanie do GA4 Analytics Advisor przez API i weryfikacja odpowiedzi w runReport | Lukas Wojcik<\/title>\n<meta name=\"description\" content=\"Powtarzalne por\u00f3wnanie kana\u0142\u00f3w przez properties.chat, kontekst sesji, limity oraz oddzielne zapytanie kontrolne runReport.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/ga4-advisor-chat-api-weryfikacja-runreport\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tutorial: Zapytanie do GA4 Analytics Advisor przez API i weryfikacja odpowiedzi w runReport | Lukas Wojcik\" \/>\n<meta property=\"og:description\" content=\"Powtarzalne por\u00f3wnanie kana\u0142\u00f3w przez properties.chat, kontekst sesji, limity oraz oddzielne zapytanie kontrolne runReport.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/ga4-advisor-chat-api-weryfikacja-runreport\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-27T09:59:09+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-27T10:21:18+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-20611-rest20260927-dark.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Lukas Wojcik\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Lukas Wojcik\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/ga4-advisor-chat-api-weryfikacja-runreport\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/ga4-advisor-chat-api-weryfikacja-runreport\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"Tutorial: Zapytanie do GA4 Analytics Advisor przez API i weryfikacja odpowiedzi w runReport\",\"datePublished\":\"2026-09-27T09:59:09+00:00\",\"dateModified\":\"2026-09-27T10:21:18+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/ga4-advisor-chat-api-weryfikacja-runreport\\\/\"},\"wordCount\":808,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/ga4-advisor-chat-api-weryfikacja-runreport\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-20611-rest20260927-dark.png\",\"articleSection\":[\"Digital Analytics\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/ga4-advisor-chat-api-weryfikacja-runreport\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/ga4-advisor-chat-api-weryfikacja-runreport\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/ga4-advisor-chat-api-weryfikacja-runreport\\\/\",\"name\":\"Tutorial: Zapytanie do GA4 Analytics Advisor przez API i weryfikacja odpowiedzi w runReport | Lukas Wojcik\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/ga4-advisor-chat-api-weryfikacja-runreport\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/ga4-advisor-chat-api-weryfikacja-runreport\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-20611-rest20260927-dark.png\",\"datePublished\":\"2026-09-27T09:59:09+00:00\",\"dateModified\":\"2026-09-27T10:21:18+00:00\",\"description\":\"Powtarzalne por\u00f3wnanie kana\u0142\u00f3w przez properties.chat, kontekst sesji, limity oraz oddzielne zapytanie kontrolne runReport.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/ga4-advisor-chat-api-weryfikacja-runreport\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/ga4-advisor-chat-api-weryfikacja-runreport\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/ga4-advisor-chat-api-weryfikacja-runreport\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-20611-rest20260927-dark.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-20611-rest20260927-dark.png\",\"width\":1200,\"height\":630,\"caption\":\"Tutorial: Zapytanie do GA4 Analytics Advisor przez API i weryfikacja odpowiedzi w runReport\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/ga4-advisor-chat-api-weryfikacja-runreport\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tutorial: Zapytanie do GA4 Analytics Advisor przez API i weryfikacja odpowiedzi w runReport\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\",\"name\":\"Lukas Wojcik - Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\",\"name\":\"Lukas Wojcik\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"width\":424,\"height\":636,\"caption\":\"Lukas Wojcik\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\"},\"sameAs\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Tutorial: Zapytanie do GA4 Analytics Advisor przez API i weryfikacja odpowiedzi w runReport | Lukas Wojcik","description":"Powtarzalne por\u00f3wnanie kana\u0142\u00f3w przez properties.chat, kontekst sesji, limity oraz oddzielne zapytanie kontrolne runReport.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/ga4-advisor-chat-api-weryfikacja-runreport\/","og_locale":"en_US","og_type":"article","og_title":"Tutorial: Zapytanie do GA4 Analytics Advisor przez API i weryfikacja odpowiedzi w runReport | Lukas Wojcik","og_description":"Powtarzalne por\u00f3wnanie kana\u0142\u00f3w przez properties.chat, kontekst sesji, limity oraz oddzielne zapytanie kontrolne runReport.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/ga4-advisor-chat-api-weryfikacja-runreport\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-09-27T09:59:09+00:00","article_modified_time":"2026-09-27T10:21:18+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-20611-rest20260927-dark.png","type":"image\/png"}],"author":"Lukas Wojcik","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Lukas Wojcik","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/ga4-advisor-chat-api-weryfikacja-runreport\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/ga4-advisor-chat-api-weryfikacja-runreport\/"},"author":{"name":"Lukas Wojcik","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"Tutorial: Zapytanie do GA4 Analytics Advisor przez API i weryfikacja odpowiedzi w runReport","datePublished":"2026-09-27T09:59:09+00:00","dateModified":"2026-09-27T10:21:18+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/ga4-advisor-chat-api-weryfikacja-runreport\/"},"wordCount":808,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/ga4-advisor-chat-api-weryfikacja-runreport\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-20611-rest20260927-dark.png","articleSection":["Digital Analytics"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/ga4-advisor-chat-api-weryfikacja-runreport\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/ga4-advisor-chat-api-weryfikacja-runreport\/","url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/ga4-advisor-chat-api-weryfikacja-runreport\/","name":"Tutorial: Zapytanie do GA4 Analytics Advisor przez API i weryfikacja odpowiedzi w runReport | Lukas Wojcik","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/ga4-advisor-chat-api-weryfikacja-runreport\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/ga4-advisor-chat-api-weryfikacja-runreport\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-20611-rest20260927-dark.png","datePublished":"2026-09-27T09:59:09+00:00","dateModified":"2026-09-27T10:21:18+00:00","description":"Powtarzalne por\u00f3wnanie kana\u0142\u00f3w przez properties.chat, kontekst sesji, limity oraz oddzielne zapytanie kontrolne runReport.","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/ga4-advisor-chat-api-weryfikacja-runreport\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/ga4-advisor-chat-api-weryfikacja-runreport\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/ga4-advisor-chat-api-weryfikacja-runreport\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-20611-rest20260927-dark.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-20611-rest20260927-dark.png","width":1200,"height":630,"caption":"Tutorial: Zapytanie do GA4 Analytics Advisor przez API i weryfikacja odpowiedzi w runReport"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/ga4-advisor-chat-api-weryfikacja-runreport\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Tutorial: Zapytanie do GA4 Analytics Advisor przez API i weryfikacja odpowiedzi w runReport"}]},{"@type":"WebSite","@id":"https:\/\/www.lukaswojcik.com\/blog\/#website","url":"https:\/\/www.lukaswojcik.com\/blog\/","name":"Lukas Wojcik - Blog","description":"","publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.lukaswojcik.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9","name":"Lukas Wojcik","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","width":424,"height":636,"caption":"Lukas Wojcik"},"logo":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg"},"sameAs":["https:\/\/www.lukaswojcik.com\/blog"]}]}},"_links":{"self":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/20611","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/comments?post=20611"}],"version-history":[{"count":2,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/20611\/revisions"}],"predecessor-version":[{"id":20707,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/20611\/revisions\/20707"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/20691"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=20611"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=20611"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=20611"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}