--- title: "Zadanie: utworzenie (`create`)" source: https://docs.senuto.com/modules/serp_analysis/serp-task-create api: POST /api/tasks/management/serp_analysis/create --- # Zadanie: utworzenie (`create`) > **Błąd:** > **Endpoint mutujący.** Każde wywołanie **zużywa jednostkę** dziennego limitu Analizy SERP (`serp_analysis_daily_limit`) i uruchamia crawl wyników. Zachowaj `task_id` po swojej stronie — raporty gotowego zadania odpytasz później bez konsumpcji limitu. **`POST /api/tasks/management/serp_analysis/create`** Przykładowe żądanie: ```json { "keyword": "obroża dla psa świecąca", "country_id": 1 } ``` Przykładowa odpowiedź: ```json { "success": true, "data": { "id": 4472873, "status": "crawling", "country_id": 1, "is_read": 0, "type": "serp_analysis", "data": { "keyword": "obroża dla psa świecąca" }, "raw_request": { "keyword": "obroża dla psa świecąca", "country_id": 1 }, "created": 1789043179, "completed": null, "progress": { "has_serp_data": false, "has_keywords_analysis_data": true }, "refreshable": false } } ``` Tworzy **zadanie analizy SERP** dla pary `keyword` + `country_id` i uruchamia crawl wyników wyszukiwania. Zwraca `id`, którego użyjesz w [`check`](/modules/serp_analysis/serp-task-check) (odpytywanie statusu) oraz we wszystkich raportach (`reports/*`). Bezpośrednio po utworzeniu `status = "crawling"` i `progress.has_serp_data = false` — raporty SERP zwrócą dane dopiero, gdy `has_serp_data` będzie `true`. > **Informacja:** > Jeśli identyczne zadanie (ta sama fraza + kraj) już istnieje i jest świeże, backend może zwrócić istniejące zadanie **bez** ponownego naliczenia limitu. --- ## Żądanie `POST` `/api/tasks/management/serp_analysis/create` ```jsonc filename="żądanie.jsonc" { "keyword": "obroża dla psa świecąca", "country_id": 1 } ``` ### Parametry ```ts type SerpCreateRequest = { /** **Wymagane**. Fraza (min. 2 znaki). */ keyword: string; /** **Wymagane**. ID kraju (baza krajów Senuto; 1 = Polska). */ country_id: number; } export default SerpCreateRequest ``` ## Odpowiedź ```ts type SerpCreateResponse = { success: boolean; data: { /** ID zadania — używane w check i raportach jako task_id. */ id: number; /** np. "crawling" | "completed". */ status: string; country_id: number; is_read: number; type: string; data: { keyword: string }; raw_request: Record; /** Unix timestamp utworzenia. */ created: number; /** Unix timestamp zakończenia lub null. */ completed: number | null; progress: { has_serp_data: boolean; has_keywords_analysis_data: boolean; }; refreshable: boolean; }; } export default SerpCreateResponse ``` ## Błędy Błędy tego endpointu przychodzą we [wspólnej kopercie ze statusem `418`](/types/errors). ## Powiązane akcje - [`serp_analysis/check`](/modules/serp_analysis/serp-task-check) — odpytywanie statusu zadania. - [Limity zapytań](/rate-limits) — dzienny limit `serp_analysis_daily_limit`.