Understand that all indexing operations are asynchronous and learn how to wait for a task to finish.
All indexing operations run asynchronously.
Algolia queues each operation and returns a taskID.
A successful response means Algolia accepted the request, not that the change is live.
These operations include adding, updating, or deleting , and changing settings, rules, synonyms, or dictionary entries.Most tasks finish in milliseconds or seconds.
The time depends on server load and the number of queued tasks.
Until a task finishes, searches can return the data from before the change.
Wait for a task if later requests need its change.
Wait in these cases:
Managing indices: wait for an index operation to finish if the next operation depends on its result.
For example, wait for an index copy to finish before changing the copy’s settings.
Testing: wait for the task to finish before you test a search on the updated index.
User feedback: wait for the task to finish before you show a success message or reload data that depends on the change.
Otherwise, the user can see the old data and assume the change failed.
If later operations don’t need the change, continue without waiting.
This prevents unnecessary delays.For atomic reindexing, use replaceAllObjects.
It fills a temporary index, then replaces the original without interrupting searches.
The method waits for each step, so you don’t need to call waitForTask.
Use the method that matches what the operation changes.
Operations that change an index return an index task ID.
These include:
Adding, updating, and deleting records, including batch operations, deleting by query, and clearing an index
Changing settings, rules, and synonyms
Copying, moving, and deleting an index
Pass the index name and the returned taskID to waitForTask.
Some methods, such as saveObjects, return a task ID for each batch.
If later requests depend on all the changes, wait for all returned tasks.waitForTask polls until the task status is published.
If it reaches the retry limit first, it returns an error.
The task can still complete after polling stops.
You can set the retry limit when you call waitForTask.
var response = await client.WaitForTaskAsync("INDEX_NAME", 123L);
Dictionaries apply to all indices in your Algolia application.
Operations that change dictionary entries or dictionary settings return app-level task IDs.Pass the returned taskID to waitForAppTask.
App-level tasks aren’t tied to an index, so don’t pass an index name.
var response = await client.WaitForAppTaskAsync(123L);
Connectors use different identifiers:
a task ID identifies the connector’s configuration, and
a run ID identifies one execution of it.
Check a run’s status in the Algolia dashboard or with the Ingestion API getRun operation.
Don’t pass either to waitForTask or waitForAppTask.
API key operations don’t return a task ID.
To wait for them, use waitForApiKey.
Last modified on November 9, 2026
Was this page helpful?
{"docsConfig":{"theme":"aspen","$schema":"https://mintlify.com/docs.json","name":"Algolia","description":"Build search, discovery, and AI experiences with Algolia. Guides, API references, libraries, UI components, and integrations for your stack.","colors":{"primary":"#3970ff","light":"#3970ff","dark":"#003DFF"},"logo":{"light":"https://mintcdn.com/algolia/kiecJp3hu-WXhj-3/logo/light.svg?fit=max\u0026auto=format\u0026n=kiecJp3hu-WXhj-3\u0026q=85\u0026s=bf613e260ca94c0eb23384e6c0d5c77f","dark":"https://mintcdn.com/algolia/kiecJp3hu-WXhj-3/logo/dark.svg?fit=max\u0026auto=format\u0026n=kiecJp3hu-WXhj-3\u0026q=85\u0026s=31a97f60063c111253c518bc0c638e70","href":"/doc"},"favicon":"https://mintcdn.com/algolia/ApgdWRCFtd9v2oPX/favicon.png?fit=max\u0026auto=format\u0026n=ApgdWRCFtd9v2oPX\u0026q=85\u0026s=91df7c93abadfb122ffc8e0f78cc2dc8","api":{"playground":{"display":"simple"},"examples":{"languages":["curl","csharp","dart","go","java","javascript","kotlin","php","python","ruby","scala","swift"],"autogenerate":false}},"navbar":{"links":[{"href":"https://dashboard.algolia.com/users/sign_in","label":"Log in"}],"primary":{"type":"button","label":"Create account","href":"https://www.algolia.com/users/sign_up"}},"footer":{"socials":{"linkedin":"https://www.linkedin.com/company/algolia","x":"https://twitter.com/algolia","discord":"https://alg.li/discord","youtube":"https://www.youtube.com/channel/UCTNkiq-SO8hay1PRx-it9Cw","website":"https://www.algolia.com"},"links":[{"items":[{"label":"Support","href":"https://support.algolia.com/hc/en-us"},{"label":"Glossary","href":"/doc/glossary"},{"label":"Privacy policy","href":"https://www.algolia.com/policies/privacy"},{"label":"Cookie settings","href":"https://www.algolia.com"}]}]},"seo":{"metatags":{"canonical":"https://www.algolia.com"},"organization":{"id":"https://www.algolia.com/#organization","name":"Algolia","url":"https://www.algolia.com","sameAs":["https://www.linkedin.com/company/algolia/","https://github.com/algolia","https://x.com/algolia","https://www.youtube.com/channel/UCTNkiq-SO8hay1PRx-it9Cw"]}},"fonts":{"heading":{"family":"Sora"}},"icons":{"library":"lucide"},"styling":{"eyebrows":"section","codeblocks":"system","latex":true},"integrations":{"segment":{"key":"cKQbv9nMHIUgdWswDLG0c3UdiUgBaUmA"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity"],"display":"header"},"metadata":{"timestamp":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"algolia","hasAudioNarration":false,"actualSubdomain":"algolia","customDomains":["www.algolia.com"],"gitSource":{"type":"github","owner":"algolia","repo":"docs-new","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"feedback":{"thumbs":true,"edits":true,"issues":true,"agentFeedback":false},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"REMOVE_BRANDING":{"status":"ENABLED"},"CONTEXTUAL_FEEDBACK":{"status":"ENABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af491479625edba2fdc9f3f","clientVersion":"0.0.4102","searchFilterCounts":[{"language":"default","tag":"Libraries and tools","count":618},{"language":"default","tag":"Guides","count":584},{"language":"default","tag":"API clients","count":407},{"language":"default","tag":"Search and Discovery platform","count":406},{"language":"default","tag":"API reference","count":403},{"language":"default","tag":"UI libraries","count":290},{"language":"default","tag":"Reference","count":282},{"language":"default","tag":"Build Search UI","count":235},{"language":"default","tag":"Search","count":187},{"language":"default","tag":"React InstantSearch","count":169}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[{"filePath":"style.css","content":":root{--radius: 0.5rem;--rounded-2xl: var(--radius);--rounded-xl: var(--radius);--rounded-lg: var(--radius);--rounded-md: var(--radius);--rounded-full: var(--radius);--icon-stroke: #000000;--border-color: rgb(var(--gray-200) / 0.5);--font-weight-headings-custom: 700;--docsearch-background-color: #f5f6f7;--filters-token-string-color: #b46900;--filters-token-error-color: #d7263d;--filters-token-paren-color: #005cc5;--filters-token-num-color: #6f42c1;--filters-token-operator-color: #22863a;--docsearch-sidepanel-border: var(--border-color);--docsearch-sidepanel-background: rgb(244, 246, 250);--docsearch-sidepanel-background-dark: #fff;--docsearch-hit-background-muted: rgb(247, 247, 248);--docsearch-searchbox-focus-background: #fff}:root.dark,html[data-theme=dark]{--icon-stroke: #ffffff;--border-color: rgb(var(--gray-900) / 0.8);--docsearch-background-color: #0a0b11 !important;--docsearch-dropdown-menu-background: #10121e;--docsearch-dropdown-menu-item-hover-background: #0a0b11;--docsearch-hit-color: #e5e7eb;--filters-token-string-color: #ffa657;--filters-token-error-color: #ff6b6b;--filters-token-paren-color: #79c0ff;--filters-token-num-color: #d2a8ff;--filters-token-operator-color: #7ee787;--docsearch-sidepanel-background: rgb(15, 17, 23);--docsearch-sidepanel-background-dark: rgba(11, 13, 17, 1);--docsearch-hit-background-muted: rgb(14, 17, 23);--docsearch-modal-background: #0a0b11;--docsearch-hit-focus-background: rgb(var(--gray-900))}.rounded-\\[0\\.85rem\\]{border-radius:var(--radius)}#banner{background-color:#23263b}#banner a{color:inherit}#background-div{background-color:#f6f6fa}.dark #background-div{background-color:#ffffff;opacity:0.03}#pagination{display:none}.background-lines{fill:#c5c9e0}.dark .background-lines{fill:#ffffff;fill-opacity:0.15}th{text-align:left}.tooltip{user-select:text}.prose a{font-weight:inherit}.prose a strong{font-weight:600}.katex-display>.katex{overflow-y:hidden}.prose a.link[href^=\"http\"]:not([href^=\"https://www.algolia.com/doc\"]){white-space:nowrap}.prose a.link[href^=\"http\"]:not([href^=\"https://www.algolia.com/doc\"])::after{display:inline-block;width:14px;height:14px;margin-left:4px;vertical-align:-2px;content:\"\";background-color:currentColor;-webkit-mask:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E\u003cpath d='M15 3h6v6'/%3E\u003cpath d='M10 14 21 3'/%3E\u003cpath d='M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6'/%3E%3C/svg%3E\") center / contain no-repeat;mask:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E\u003cpath d='M15 3h6v6'/%3E\u003cpath d='M10 14 21 3'/%3E\u003cpath d='M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6'/%3E%3C/svg%3E\") center / contain no-repeat}.prose h2 code,.prose h3 code,.prose h4 code{font-weight:700}.prose table a code{word-break:keep-all}[data-component-part=\"field-content\"]{margin-left:1.5rem}[data-component-part=\"code-block-root\"]{border-radius:var(--radius)}#content-area img{margin-inline:auto;background:transparent!important}#content-area img:not(.no-shadow){box-shadow:0 10px 15px -3px rgb(0 0 0 / 0.1),\n 0 4px 6px -4px rgb(0 0 0 / 0.1)}#content-area video{margin-inline:auto}.video-embed{display:block;width:100%;min-width:0;max-width:var(--video-embed-max-width, 644px);aspect-ratio:16 / 9;height:auto;margin-inline:auto}button+div[aria-hidden=\"true\"]{background-color:#23263b;border-radius:var(--radius);box-shadow:0 0 0 1px #23263b0d, 0 4px 8px -2px #23263b40;color:#fff;padding:.5rem .75rem}#feedback-toolbar button{border-radius:var(--radius)}html.no-overflow{overflow:hidden}body.DocSearch--active{overflow:initial!important}.DocSearch-Container{visibility:hidden;opacity:0;transition:opacity 120ms ease;padding-top:5vh;position:fixed;top:0;left:0;right:0;bottom:0;background-color:rgba(0, 0, 0, 0.1);display:flex;align-items:flex-start;justify-content:center;z-index:200;cursor:initial}.DocSearch-Container.docsearch-ready{visibility:visible;opacity:1}.dark .DocSearch-Form,.dark .DocSearch-SearchBar{background-color:transparent!important}.DocSearch-Dropdown{border-top:1px solid var(--docsearch-subtle-color);scrollbar-color:#9698c3 #f5f6f7;scrollbar-width:thin}.dark .DocSearch-Container{--docsearch-text-color: #c4c7dc}.dark .DocSearch-Dropdown{scrollbar-color:#7f8497 #15172a}.dark .DocSearch-Close{color:#5172FF}.dark .DocSearch-Close svg{color:#5172FF}.dark .DocSearch-MagnifierLabel svg{color:#5172FF}.DocSearch-SidepanelButton.floating{display:none}.dark .DocSearch-Dropdown{border-color:#212139}.dark .DocSearch-Divider{border-color:#212139}.dark .DocSearch-Input{color:white;caret-color:white}.dark .DocSearch-Container{background-color:rgba(0, 0, 0, 0.6)!important}.dark .DocSearch-SearchBar,.dark .DocSearch-Form,.dark .DocSearch-Input{color:#ffffff!important}.dark .DocSearch-Input::placeholder{color:#ffffff!important;opacity:0.9}.dark .DocSearch-Reset,.dark .DocSearch-Reset span,.dark .DocSearch-Reset svg,.dark .DocSearch-Close,.dark .DocSearch-Close svg{color:#5172ff!important;fill:#5172ff!important;stroke:#5172ff!important}.dark .DocSearch-Cancel,.dark .DocSearch-Cancel svg{color:#ffffff!important;fill:#ffffff!important;stroke:#ffffff!important}.dark .DocSearch-MagnifierLabel,.dark .DocSearch-MagnifierLabel svg{color:#5172ff!important;fill:#5172ff!important;stroke:#5172ff!important}.dark .DocSearch-Dropdown{background-color:#0a0b11!important}.dark .DocSearch-Hits mark{background-color:transparent!important;color:#7aa2ff!important}.dark .DocSearch-Hit a{color:#e5e7eb!important;border-color:#1b1e29!important}.dark .DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.dark .DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon{color:#7aa2ff}.dark .DocSearch-Title,.dark .DocSearch-Label{background-color:#0f1117!important}.dark .DocSearch-Title,.dark .DocSearch-Label,.dark .DocSearch-Hit-source{color:#e5e7eb!important}.dark .DocSearch-Footer{background-color:#0f1117!important;border-top:1px solid #1b1e29!important;color:#cbd5e1!important}.DocSearch-Hit--AskAI .DocSearch-AskAiScreen-Response .DocSearch-AskAiScreen-RelatedSources-Item-Link{background:var(--docsearch-hit-background-muted)!important}.DocSearch-Hit-AskAIButton-title-query{color:var(--docsearch-highlight-color)}.dark .DocSearch-Hit-AskAIButton-title-query{color:#7aa2ff!important}.dark .DocSearch-AskAiScreen-Response{color:#f5f6f7!important}.dark .DocSearch-Markdown-Content,.dark .DocSearch-Markdown-Content li{color:#cbd5e1!important}.dark .DocSearch-Markdown-Content a{color:#7aa2ff!important}.dark .DocSearch-AskAiScreen-RelatedSources-Item-Link{color:#cbd5e1}.dark .DocSearch-AskAiScreen-Response .DocSearch-CodeSnippet .DocSearch-CodeSnippet-CopyButton{background-color:#0f1117!important;color:#cbd5e1!important}.dark .DocSearch-AskAiScreen-Response .DocSearch-CodeSnippet pre{background-color:#0f1117!important;color:#e5e7eb!important}.dark .DocSearch-AskAiScreen-Response .DocSearch-CodeSnippet pre code{background-color:transparent!important;color:inherit!important}.DocSearch-Modal{position:relative;overflow:hidden;width:700px;max-width:90vw;border-radius:var(--radius);box-shadow:0 4px 12px rgba(0, 0, 0, 0.15)}.docsearch-expanded .DocSearch-Modal{max-height:auto;border-radius:var(--radius);box-shadow:0 25px 50px -12px rgba(0, 0, 0, 0.25)}@media (max-width: 768px){.DocSearch-Container{padding-top:0}.DocSearch-Modal{width:100vw;max-width:100vw;border-radius:var(--radius)}.docsearch-expanded .DocSearch-Modal{max-height:100vh;border-radius:var(--radius)}.DocSearch-Dropdown{height:calc(100vh - var(--docsearch-footer-height) - var(--docsearch-searchbox-height, var(--docsearch-searchbox-initial-height)))}.docsearch-sidepanel-toggle .docsearch-sidepanel-label,.docsearch-sidepanel-toggle .docsearch-sidepanel-shortcut{display:none}.docsearch-sidepanel-toggle{padding:0 0.5rem}}@media (min-width: 769px){.docsearch-sidepanel-toggle{border:1px solid transparent;box-shadow:0 0 0 1px rgba(156, 163, 175, 0.3)}.docsearch-sidepanel-toggle:hover{box-shadow:0 0 0 1px rgba(75, 85, 99, 0.3)}html.dark .docsearch-sidepanel-toggle{box-shadow:0 0 0 1px rgba(75, 85, 99, 0.3)}html.dark .docsearch-sidepanel-toggle:hover{box-shadow:0 0 0 1px rgba(107, 114, 128, 0.3)}}.DocSearch-Sidepanel-Header{height:3.0rem}.DocSearch-Sidepanel-Container.inline.side-right{border-bottom-left-radius:0;border-left:1px solid var(--docsearch-sidepanel-border);border-top-left-radius:0}.DocSearch-Sidepanel-Container{box-shadow:none}.DocSearch-MCP-Callout{font-size:0.875em;display:flex;align-items:center;gap:0.25rem;color:var(--docsearch-text-color);padding-inline:0.25rem 0.5rem;padding-block:0.25rem;border-radius:var(--docsearch-border-radius);background-color:var(--docsearch-hit-focus-background);min-block-size:1.5rem}.DocSearch-MCP-Callout:hover,.DocSearch-MCP-Callout:focus-visible{outline:2px solid var(--docsearch-highlight-color)}.DocSearch-MCP-Callout svg{height:1rem;width:1rem;color:var(--docsearch-highlight-color);margin-block-start:1px}html.dark #filter-validator{background-color:var(--shiki-dark-bg)}#filter-validator{.Token_EOF {\n color: transparent;\n }\n\n .Token_Empty_Str,\n .Token_Incomplete_Str,\n .Token_String,\n .Token_Term {\n color: var(--filters-token-string-color);\n }\n\n .Token_Error {\n color: var(--filters-token-error-color);\n }\n\n .Token_Open_Paren,\n .Token_Close_Paren,\n .Token_Open_Angled_Bracket,\n .Token_Close_Angled_Bracket,\n .Token_Comma,\n .Token_Facet_Separator {\n color: var(--filters-token-paren-color);\n }\n\n .Token_Num {\n color: var(--filters-token-num-color);\n }\n\n .Token_OR,\n .Token_AND,\n .Token_NOT,\n .Token_Operator,\n .Token_Range {\n color: var(--filters-token-operator-color);\n }}.nav-tag-pill-text{text-transform:uppercase;letter-spacing:1px}[data-group-tag]>button>div{display:flex;align-items:center;gap:0.5rem}.steps .step .prose ol{list-style-type:lower-alpha}.no-bullets ul{margin-top:1rem;padding-left:0;margin-left:0;list-style:none}@layer components{.prose .no-bullets li{margin:0.5rem 0;margin-left:0!important;padding-left:0!important;list-style:none}}.no-bullets a.link{border-bottom-color:transparent}.no-bullets a.link:hover,.no-bullets a.link:focus-visible{border-bottom-color:rgb(57, 112, 255)}.no-bullets li::before{content:none!important}.homepage-hero{background-color:#23263b;background-image:linear-gradient(\n 90deg,\n rgba(12, 30, 69, 0.82) 0%,\n rgba(12, 30, 69, 0.72) 34%,\n rgba(12, 30, 69, 0.58) 58%,\n rgba(12, 30, 69, 0.44) 100%\n ),\n url(\"/mintlify-assets/hero.png\");background-position:center, 72% center;background-repeat:no-repeat;background-size:cover}@supports (background-image: image-set(url(\"/mintlify-assets/hero.webp\") type(\"image/webp\") 1x)){.homepage-hero{background-image:linear-gradient(\n 90deg,\n rgba(12, 30, 69, 0.82) 0%,\n rgba(12, 30, 69, 0.72) 34%,\n rgba(12, 30, 69, 0.58) 58%,\n rgba(12, 30, 69, 0.44) 100%\n ),\n image-set(\n url(\"/mintlify-assets/hero.webp\") type(\"image/webp\") 1x,\n url(\"/mintlify-assets/hero.png\") type(\"image/png\") 1x\n )}}@supports (background-image: -webkit-image-set(url(\"/mintlify-assets/hero.webp\") type(\"image/webp\") 1x)){.homepage-hero{background-image:linear-gradient(\n 90deg,\n rgba(12, 30, 69, 0.82) 0%,\n rgba(12, 30, 69, 0.72) 34%,\n rgba(12, 30, 69, 0.58) 58%,\n rgba(12, 30, 69, 0.44) 100%\n ),\n -webkit-image-set(\n url(\"/mintlify-assets/hero.webp\") type(\"image/webp\") 1x,\n url(\"/mintlify-assets/hero.png\") type(\"image/png\") 1x\n )}}.homepage-hero-cta{display:inline-flex;align-items:center;justify-content:center;gap:0;padding:0.5rem 0.875rem;border-radius:var(--radius);background:linear-gradient(220deg, rgb(69, 122, 255) 0%, rgb(30, 89, 255) 60.16%);color:#fff!important;font-family:Sora, sans-serif;font-size:0.875rem;font-weight:700;line-height:1.5rem;letter-spacing:0.28px;text-decoration:none;transition:all 150ms ease}.homepage-hero-cta:hover{background:linear-gradient(138deg, rgba(118, 160, 255, 0.7) 0%, rgba(0, 61, 255, 0.7) 25.08%, rgba(151, 71, 255, 0.7) 56.38%, rgba(118, 160, 255, 0.7) 100%), rgb(0, 61, 255);color:#fff!important}@media (min-width: 1024px){.homepage-hero-cta{padding:0.75rem 1.25rem;font-size:1rem;letter-spacing:0.32px}}.sig-param-link{color:inherit;text-decoration:underline;text-decoration-style:dotted;text-decoration-thickness:1px;text-underline-offset:3px;text-decoration-color:color-mix(in srgb, currentColor 45%, transparent);cursor:pointer;border-radius:2px;transition:text-decoration-color 120ms ease, text-decoration-thickness 120ms ease}.sig-param-link:hover,.sig-param-link:focus-visible,.line:has(.sig-param-link:hover) .sig-param-link,.line:has(.sig-param-link:focus-visible) .sig-param-link{text-decoration-style:solid;text-decoration-thickness:2px;text-decoration-color:currentColor;outline:none}.mint-flavor-switcher-slot{min-height:2.75rem;margin:0.25rem 0 1.5rem}.mint-flavor-switcher-slot .mint-flavor-switcher{margin:0}"}],"page":{"pagePath":"doc/guides/sending-and-managing-data/send-and-update-your-data/in-depth/index-operations-are-asynchronous","slug":"/doc/guides/sending-and-managing-data/send-and-update-your-data/in-depth/index-operations-are-asynchronous","pageMetadata":{"title":"Wait for indexing to finish","description":"Understand that all indexing operations are asynchronous and learn how to wait for a task to finish.","public":true,"subtype":"Guide","href":"/doc/guides/sending-and-managing-data/send-and-update-your-data/in-depth/index-operations-are-asynchronous"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Understand that all indexing operations are asynchronous and learn how to wait for a task to finish.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];const Records=()=>{const{Tooltip}=_provideComponents()||{};if(!Tooltip)_missingMdxReference(`Tooltip`,true);return _jsx(Tooltip,{tip:`A record is a searchable object in an Algolia index. Each record consists of named attributes.`,cta:`Algolia records`,href:`/doc/guides/sending-and-managing-data/prepare-your-data#algolia-records`,children:`records`})};const Index=()=>{const{Tooltip}=_provideComponents()||{};if(!Tooltip)_missingMdxReference(`Tooltip`,true);return _jsx(Tooltip,{tip:`An Algolia index is a searchable dataset that consists of records and configuration settings. These settings define how the records are searched and ranked.`,children:`index`})};function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,CodeGroup,Heading,_MdxComponentBoundary}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!CodeGroup)_missingMdxReference(`CodeGroup`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!_MdxComponentBoundary)_missingMdxReference(`_MdxComponentBoundary`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`All indexing operations run asynchronously.`}),`\nAlgolia queues each operation and returns a `,_jsx(_components.code,{children:`taskID`}),`.\nA successful response means Algolia accepted the request, not that the change is live.\nThese operations include adding, updating, or deleting `,_jsx(_MdxComponentBoundary,{name:`Records`,children:_jsx(Records,{})}),`, and changing `,_jsx(_MdxComponentBoundary,{name:`Index`,children:_jsx(Index,{})}),` settings, rules, synonyms, or dictionary entries.`]}),`\n`,_jsx(_components.p,{children:`Most tasks finish in milliseconds or seconds.\nThe time depends on server load and the number of queued tasks.\nUntil a task finishes, searches can return the data from before the change.`}),`\n`,_jsx(Heading,{level:`2`,id:`when-to-wait`,children:`When to wait`}),`\n`,_jsx(_components.p,{children:`Wait for a task if later requests need its change.\nWait in these cases:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Managing indices`}),`: wait for an index operation to finish if the next operation depends on its result.\nFor example, wait for an index copy to finish before changing the copy’s settings.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Testing`}),`: wait for the task to finish before you test a search on the updated index.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`User feedback`}),`: wait for the task to finish before you show a success message or reload data that depends on the change.\nOtherwise, the user can see the old data and assume the change failed.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`If later operations don’t need the change, continue without waiting.\nThis prevents unnecessary delays.`}),`\n`,_jsxs(_components.p,{children:[`For atomic reindexing, use `,_jsx(_components.a,{href:`/doc/libraries/sdk/methods/search/replace-all-objects`,children:_jsx(_components.code,{children:`replaceAllObjects`})}),`.\nIt fills a temporary index, then replaces the original without interrupting searches.\nThe method waits for each step, so you don’t need to call `,_jsx(_components.code,{children:`waitForTask`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`wait-for-index-tasks`,children:`Wait for index tasks`}),`\n`,_jsx(_components.p,{children:`Use the method that matches what the operation changes.\nOperations that change an index return an index task ID.\nThese include:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Adding, updating, and deleting records, including batch operations, deleting by query, and clearing an index`}),`\n`,_jsx(_components.li,{children:`Changing settings, rules, and synonyms`}),`\n`,_jsx(_components.li,{children:`Copying, moving, and deleting an index`}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`Pass the index name and the returned `,_jsx(_components.code,{children:`taskID`}),` to `,_jsx(_components.a,{href:`/doc/libraries/sdk/methods/search/wait-for-task`,children:_jsx(_components.code,{children:`waitForTask`})}),`.\nSome methods, such as `,_jsx(_components.code,{children:`saveObjects`}),`, return a task ID for each batch.\nIf later requests depend on all the changes, wait for all returned tasks.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`waitForTask`}),` polls until the task status is `,_jsx(_components.code,{children:`published`}),`.\nIf it reaches the retry limit first, it returns an error.\nThe task can still complete after polling stops.\nYou can set the retry limit when you call `,_jsx(_components.code,{children:`waitForTask`}),`.`]}),`\n`,_jsxs(CodeGroup,{children:[_jsx(CodeBlock,{filename:`C#`,numberOfLines:`1`,language:`csharp`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`csharp`,children:_jsxs(_components.code,{language:`csharp`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`var`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` response`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` client`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`WaitForTaskAsync`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"INDEX_NAME\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`123L`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`Go`,numberOfLines:`6`,language:`go`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`go`,children:_jsxs(_components.code,{language:`go`,numberOfLines:`6`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`response`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`err`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` :=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` client`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`WaitForTask`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"INDEX_NAME\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`123`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`if`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` err`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` !=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` nil`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` // handle the eventual error`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` panic`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`err`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),_jsx(CodeBlock,{filename:`Java`,numberOfLines:`1`,language:`java`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`java`,children:_jsxs(_components.code,{language:`java`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#4EC9B0`},children:`GetTaskResponse`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` response`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` client`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`waitForTask`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"INDEX_NAME\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`123L`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`JavaScript`,numberOfLines:`1`,language:`javascript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`javascript`,children:_jsxs(_components.code,{language:`javascript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` response`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` client`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`waitForTask`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`({ `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`indexName:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'wait-task-javascript'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`taskID:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 123`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` });`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`Kotlin`,numberOfLines:`1`,language:`kotlin`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`kotlin`,children:_jsxs(_components.code,{language:`kotlin`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`var`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` response `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` client.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`waitForTask`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(indexName `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"INDEX_NAME\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, taskID `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 123L`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`PHP`,numberOfLines:`4`,language:`php`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`php`,children:_jsxs(_components.code,{language:`php`,numberOfLines:`4`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$response`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` $client`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`->`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`waitForTask`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'INDEX_NAME'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 123`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})}),`\n`]})})}),_jsx(CodeBlock,{filename:`Python`,numberOfLines:`4`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`4`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`response `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` client.wait_for_task(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` index_name`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"INDEX_NAME\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` task_id`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`123`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})}),`\n`]})})}),_jsx(CodeBlock,{filename:`Ruby`,numberOfLines:`1`,language:`ruby`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`ruby`,children:_jsxs(_components.code,{language:`ruby`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`response`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` client.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`wait_for_task`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"INDEX_NAME\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`123`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`Scala`,numberOfLines:`7`,language:`scala`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`scala`,children:_jsxs(_components.code,{language:`scala`,numberOfLines:`7`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`val`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` response`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` Await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.result(`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` client.waitForTask(`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` indexName `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"INDEX_NAME\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` taskID `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 123L`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ),`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` Duration`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`100`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"sec\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})}),`\n`]})})}),_jsx(CodeBlock,{filename:`Swift`,numberOfLines:`1`,language:`swift`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`swift`,children:_jsxs(_components.code,{language:`swift`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`let`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` response `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` try`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` client.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`waitForTask`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`indexName`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"INDEX_NAME\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`taskID`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`Int64`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`123`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`))`})]}),`\n`]})})})]}),`\n`,_jsx(Heading,{level:`2`,id:`wait-for-app-level-tasks`,children:`Wait for app-level tasks`}),`\n`,_jsx(_components.p,{children:`Dictionaries apply to all indices in your Algolia application.\nOperations that change dictionary entries or dictionary settings return app-level task IDs.`}),`\n`,_jsxs(_components.p,{children:[`Pass the returned `,_jsx(_components.code,{children:`taskID`}),` to `,_jsx(_components.a,{href:`/doc/libraries/sdk/methods/search/wait-for-app-task`,children:_jsx(_components.code,{children:`waitForAppTask`})}),`.\nApp-level tasks aren’t tied to an index, so don’t pass an index name.`]}),`\n`,_jsxs(CodeGroup,{children:[_jsx(CodeBlock,{filename:`C#`,numberOfLines:`1`,language:`csharp`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`csharp`,children:_jsxs(_components.code,{language:`csharp`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`var`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` response`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` client`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`WaitForAppTaskAsync`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`123L`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`Go`,numberOfLines:`6`,language:`go`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`go`,children:_jsxs(_components.code,{language:`go`,numberOfLines:`6`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`response`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`err`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` :=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` client`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`WaitForAppTask`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 123`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`if`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` err`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` !=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` nil`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` // handle the eventual error`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` panic`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`err`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),_jsx(CodeBlock,{filename:`Java`,numberOfLines:`1`,language:`java`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`java`,children:_jsxs(_components.code,{language:`java`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#4EC9B0`},children:`GetTaskResponse`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` response`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` client`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`waitForAppTask`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`123L`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`JavaScript`,numberOfLines:`1`,language:`javascript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`javascript`,children:_jsxs(_components.code,{language:`javascript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` response`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` client`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`waitForAppTask`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`({ `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`taskID:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 123`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` });`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`Kotlin`,numberOfLines:`1`,language:`kotlin`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`kotlin`,children:_jsxs(_components.code,{language:`kotlin`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`var`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` response `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` client.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`waitForAppTask`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(taskID `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 123L`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`PHP`,numberOfLines:`3`,language:`php`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`php`,children:_jsxs(_components.code,{language:`php`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$response`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` $client`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`->`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`waitForAppTask`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 123`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})}),`\n`]})})}),_jsx(CodeBlock,{filename:`Python`,numberOfLines:`3`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`response `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` client.wait_for_app_task(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` task_id`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`123`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})}),`\n`]})})}),_jsx(CodeBlock,{filename:`Ruby`,numberOfLines:`1`,language:`ruby`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`ruby`,children:_jsxs(_components.code,{language:`ruby`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`response`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` client.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`wait_for_app_task`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`123`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`Scala`,numberOfLines:`6`,language:`scala`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`scala`,children:_jsxs(_components.code,{language:`scala`,numberOfLines:`6`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`val`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` response`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` Await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.result(`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` client.waitForAppTask(`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` taskID `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 123L`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ),`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` Duration`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`100`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"sec\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})}),`\n`]})})}),_jsx(CodeBlock,{filename:`Swift`,numberOfLines:`1`,language:`swift`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`swift`,children:_jsxs(_components.code,{language:`swift`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`let`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` response `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` try`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` client.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`waitForAppTask`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`taskID`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`Int64`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`123`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`))`})]}),`\n`]})})})]}),`\n`,_jsx(Heading,{level:`2`,id:`other-task-ids`,children:`Other task IDs`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Connectors use different identifiers:\na task ID identifies the connector’s configuration, and\na run ID identifies one execution of it.\nCheck a run’s status in the Algolia dashboard or with the Ingestion API `,_jsx(_components.a,{href:`/doc/rest-api/ingestion/get-run`,children:_jsx(_components.code,{children:`getRun`})}),` operation.\nDon’t pass either to `,_jsx(_components.code,{children:`waitForTask`}),` or `,_jsx(_components.code,{children:`waitForAppTask`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`API key operations don’t return a task ID.\nTo wait for them, use `,_jsx(_components.a,{href:`/doc/libraries/sdk/methods/search/wait-for-api-key`,children:_jsx(_components.code,{children:`waitForApiKey`})}),`.`]}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{Records,Index,default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"codeStyling":"system","config":{},"pageMetadata":{"title":"Wait for indexing to finish","description":"Understand that all indexing operations are asynchronous and learn how to wait for a task to finish.","public":true,"subtype":"Guide","href":"/doc/guides/sending-and-managing-data/send-and-update-your-data/in-depth/index-operations-are-asynchronous"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"When to wait","slug":"when-to-wait","depth":2,"children":[]},{"title":"Wait for index tasks","slug":"wait-for-index-tasks","depth":2,"children":[]},{"title":"Wait for app-level tasks","slug":"wait-for-app-level-tasks","depth":2,"children":[]},{"title":"Other task IDs","slug":"other-task-ids","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/algolia/34bdaaeaccaa769c/docsearch.js","/_mintlify/custom/algolia/e18afef8ba6306ba/one-trust.js","/_mintlify/custom/algolia/5a5e6ade8ff45aec/utm-attribution.js","/_mintlify/custom/algolia/a4b9f2f416e55759/iframe-resize.js","/_mintlify/custom/algolia/dbca34a8de6b147e/instantsearch-api-signature-links.js","/_mintlify/custom/algolia/4e6ff31277aab3f2/segment-analytics.js","/_mintlify/custom/algolia/ae5f1d742fc727f6/optinmonster.js"],"subdomain":"algolia","siteName":"Algolia","title":"Wait for indexing to finish - Algolia","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-09T13:45:48.950Z","gitLastModified":"2026-11-09T13:44:28.000Z","originalFileLocation":"doc/guides/sending-and-managing-data/send-and-update-your-data/in-depth/index-operations-are-asynchronous.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Understand that all indexing operations are asynchronous and learn how to wait for a task to finish.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Algolia\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/algolia/pODf0GWwkpqTo2Wx/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/algolia/pODf0GWwkpqTo2Wx/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/algolia/pODf0GWwkpqTo2Wx/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/algolia/pODf0GWwkpqTo2Wx/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/algolia/pODf0GWwkpqTo2Wx/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/algolia/pODf0GWwkpqTo2Wx/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/algolia/pODf0GWwkpqTo2Wx/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/algolia/pODf0GWwkpqTo2Wx/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/algolia/pODf0GWwkpqTo2Wx/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Wait for indexing to finish - Algolia\">\u003cmeta data-mint-head property=\"og:description\" content=\"Understand that all indexing operations are asynchronous and learn how to wait for a task to finish.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Algolia\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://www.algolia.com/doc/guides/sending-and-managing-data/send-and-update-your-data/in-depth/index-operations-are-asynchronous\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://algolia.mintlify.site/_mintlify/api/og/v2?division=Keep+data+in+sync\u0026amp;title=Wait+for+indexing+to+finish\u0026amp;description=Understand+that+all+indexing+operations+are+asynchronous+and+learn+how+to+wait+for+a+task+to+finish.\u0026amp;theme=7b696fa6ef3d890ba8a17746\u0026amp;signature=97643a4b2fe9ac735f4fef8df1d065cbf51a5725ef0b96422074593bb8a93c2a\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Wait for indexing to finish - Algolia\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Understand that all indexing operations are asynchronous and learn how to wait for a task to finish.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://algolia.mintlify.site/_mintlify/api/og/v2?division=Keep+data+in+sync\u0026amp;title=Wait+for+indexing+to+finish\u0026amp;description=Understand+that+all+indexing+operations+are+asynchronous+and+learn+how+to+wait+for+a+task+to+finish.\u0026amp;theme=7b696fa6ef3d890ba8a17746\u0026amp;signature=97643a4b2fe9ac735f4fef8df1d065cbf51a5725ef0b96422074593bb8a93c2a\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/algolia/pODf0GWwkpqTo2Wx/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Algolia\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#3970ff\">\u003clink data-mint-head rel=\"canonical\" href=\"https://www.algolia.com/doc/guides/sending-and-managing-data/send-and-update-your-data/in-depth/index-operations-are-asynchronous\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/doc/guides/sending-and-managing-data/send-and-update-your-data/in-depth/index-operations-are-asynchronous.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://www.algolia.com/#organization\",\"name\":\"Algolia\",\"url\":\"https://www.algolia.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/algolia/kiecJp3hu-WXhj-3/logo/light.svg?fit=max\u0026auto=format\u0026n=kiecJp3hu-WXhj-3\u0026q=85\u0026s=bf613e260ca94c0eb23384e6c0d5c77f\"},\"sameAs\":[\"https://www.linkedin.com/company/algolia/\",\"https://github.com/algolia\",\"https://x.com/algolia\",\"https://www.youtube.com/channel/UCTNkiq-SO8hay1PRx-it9Cw\"]},{\"@type\":\"WebSite\",\"@id\":\"https://www.algolia.com#website\",\"name\":\"Algolia\",\"url\":\"https://www.algolia.com\",\"publisher\":{\"@id\":\"https://www.algolia.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://www.algolia.com/doc/guides/sending-and-managing-data/send-and-update-your-data/in-depth/index-operations-are-asynchronous#webpage\",\"url\":\"https://www.algolia.com/doc/guides/sending-and-managing-data/send-and-update-your-data/in-depth/index-operations-are-asynchronous\",\"name\":\"Wait for indexing to finish\",\"description\":\"Understand that all indexing operations are asynchronous and learn how to wait for a task to finish.\",\"dateModified\":\"2026-11-09T13:44:28.000Z\",\"isPartOf\":{\"@id\":\"https://www.algolia.com#website\"},\"breadcrumb\":{\"@id\":\"https://www.algolia.com/doc/guides/sending-and-managing-data/send-and-update-your-data/in-depth/index-operations-are-asynchronous#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://www.algolia.com/doc/guides/sending-and-managing-data/send-and-update-your-data/in-depth/index-operations-are-asynchronous#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Search and Discovery platform\",\"item\":\"https://www.algolia.com/doc/guides/sending-and-managing-data/prepare-your-data/in-depth/what-is-in-a-record\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Index your data\",\"item\":\"https://www.algolia.com/doc/guides/sending-and-managing-data/send-and-update-your-data\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Keep data in sync\",\"item\":\"https://www.algolia.com/doc/guides/sending-and-managing-data/send-and-update-your-data/in-depth/the-different-synchronization-strategies\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Wait for indexing to finish\",\"item\":\"https://www.algolia.com/doc/guides/sending-and-managing-data/send-and-update-your-data/in-depth/index-operations-are-asynchronous\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://www.algolia.com/doc/guides/sending-and-managing-data/send-and-update-your-data/in-depth/index-operations-are-asynchronous#article\",\"headline\":\"Wait for indexing to finish\",\"name\":\"Wait for indexing to finish\",\"description\":\"Understand that all indexing operations are asynchronous and learn how to wait for a task to finish.\",\"url\":\"https://www.algolia.com/doc/guides/sending-and-managing-data/send-and-update-your-data/in-depth/index-operations-are-asynchronous\",\"mainEntityOfPage\":{\"@id\":\"https://www.algolia.com/doc/guides/sending-and-managing-data/send-and-update-your-data/in-depth/index-operations-are-asynchronous#webpage\"},\"dateModified\":\"2026-11-09T13:44:28.000Z\",\"publisher\":{\"@id\":\"https://www.algolia.com/#organization\"},\"isPartOf\":{\"@id\":\"https://www.algolia.com#website\"}}]}\u003c/script>","agentPointerHref":"/doc/guides/sending-and-managing-data/send-and-update-your-data/in-depth/index-operations-are-asynchronous.md","siteName":"Algolia","nav":{"global":null,"tabs":[{"tab":"Guides","icon":"book-text","groups":[{"group":" ","hidden":true,"searchable":true,"pages":[{"title":"Algolia documentation | Search API guides, SDK and developer docs","mode":"custom","href":"/doc"},{"title":"Algolia glossary","sidebarTitle":"Glossary","href":"/doc/glossary"}]},{"group":"Get started","icon":"zap","root":{"title":"Get started with Algolia","sidebarTitle":"Get started","href":"/doc/guides/get-started"},"pages":[{"title":"Build your first search experience","href":"/doc/guides/get-started/quickstart"},{"title":"Build with AI agents","href":"/doc/guides/get-started/build-with-ai"},{"title":"Understand the basics","href":"/doc/guides/get-started/concepts"}]},{"group":"Search and Discovery platform","icon":"search","pages":[{"group":"Index your data","root":{"title":"Index your data","href":"/doc/guides/sending-and-managing-data/send-and-update-your-data"},"pages":[{"group":"Prepare your data","root":{"title":"Prepare your data","href":"/doc/guides/sending-and-managing-data/prepare-your-data"},"pages":[{"title":"What is in a record","href":"/doc/guides/sending-and-managing-data/prepare-your-data/in-depth/what-is-in-a-record"},{"title":"Structure your records","href":"/doc/guides/sending-and-managing-data/prepare-your-data/in-depth/prepare-data-in-depth"},{"title":"Create nested attributes","sidebarTitle":"Nested attributes","href":"/doc/guides/sending-and-managing-data/prepare-your-data/how-to/creating-and-using-nested-attributes"},{"title":"Reduce record size","sidebarTitle":"Reducing record size","href":"/doc/guides/sending-and-managing-data/prepare-your-data/how-to/reducing-object-size"},{"title":"Indexing long documents","href":"/doc/guides/sending-and-managing-data/prepare-your-data/how-to/indexing-long-documents"},{"title":"Data cleaning","href":"/doc/guides/sending-and-managing-data/prepare-your-data/in-depth/data-sanitization"}]},{"group":"Send data","pages":[{"title":"Upload a local file","href":"/doc/guides/sending-and-managing-data/send-and-update-your-data/how-to/importing-from-the-dashboard"},{"title":"Send records with an API client","href":"/doc/guides/sending-and-managing-data/send-and-update-your-data/how-to/importing-with-the-api"},{"title":"Sending records in batches","sidebarTitle":"Send records in batches","href":"/doc/guides/sending-and-managing-data/send-and-update-your-data/how-to/sending-records-in-batches"},{"title":"Connectors","sidebarTitle":"Connectors overview","href":"/doc/guides/sending-and-managing-data/send-and-update-your-data/connectors"},{"title":"Import a hosted JSON file","href":"/doc/guides/sending-and-managing-data/send-and-update-your-data/connectors/json"},{"title":"Import a hosted CSV file","href":"/doc/guides/sending-and-managing-data/send-and-update-your-data/connectors/csv"},{"title":"Import from BigQuery","href":"/doc/guides/sending-and-managing-data/send-and-update-your-data/connectors/bigquery"},{"title":"Import from MySQL","href":"/doc/guides/sending-and-managing-data/send-and-update-your-data/connectors/mysql"},{"title":"Import from Elasticsearch","href":"/doc/guides/sending-and-managing-data/send-and-update-your-data/connectors/elasticsearch"},{"title":"Import from Supabase","href":"/doc/guides/sending-and-managing-data/send-and-update-your-data/connectors/supabase"},{"title":"Send records through managed transformations","href":"/doc/guides/sending-and-managing-data/send-and-update-your-data/connectors/push"}]},{"group":"Transform and enrich data","pages":[{"title":"Transform your data with code","sidebarTitle":"Transform your data with code","href":"/doc/guides/sending-and-managing-data/send-and-update-your-data/how-to/transform-your-data-with-code"},{"title":"Transform your data without code","sidebarTitle":"Transform your data without code","href":"/doc/guides/sending-and-managing-data/send-and-update-your-data/how-to/transform-your-data-without-code"},{"title":"AI-assisted transformations","sidebarTitle":"AI-assisted transformations","href":"/doc/guides/sending-and-managing-data/send-and-update-your-data/how-to/ai-assisted-transformations"},{"title":"Enrich your records with Fetch","sidebarTitle":"Enrich your records with Fetch","href":"/doc/guides/sending-and-managing-data/send-and-update-your-data/how-to/enrich-your-records-with-fetch"},{"title":"Post-indexing transformations","sidebarTitle":"Post-indexing transformations","href":"/doc/guides/sending-and-managing-data/send-and-update-your-data/how-to/post-indexing-transformations"},{"title":"Make measures and dimensions searchable","sidebarTitle":"Searchable dimensions","href":"/doc/guides/sending-and-managing-data/prepare-your-data/how-to/dimensional-data"}]},{"group":"Keep data in sync","pages":[{"title":"Data synchronization strategies","sidebarTitle":"Choose a synchronization strategy","href":"/doc/guides/sending-and-managing-data/send-and-update-your-data/in-depth/the-different-synchronization-strategies"},{"title":"Incremental updates","sidebarTitle":"Incremental updates","href":"/doc/guides/sending-and-managing-data/send-and-update-your-data/how-to/incremental-updates"},{"title":"Handling concurrency with versioning","sidebarTitle":"Handling concurrency with versioning","description":"Learn how to use versioning and optimistic locking in your indexing pipeline to guarantee data consistency, even in concurrent environments.","href":"/doc/guides/sending-and-managing-data/send-and-update-your-data/in-depth/handling-concurrency-with-versioning"},{"title":"Wait for indexing to finish","href":"/doc/guides/sending-and-managing-data/send-and-update-your-data/in-depth/index-operations-are-asynchronous"}]},{"group":"Manage indices","pages":[{"title":"Manage indices","sidebarTitle":"Manage indices","description":"Learn how to copy, rename, or delete your indices and understand the effect on analytics. Learn how you can build a sitemap from your index for SEO.","href":"/doc/guides/sending-and-managing-data/manage-indices-and-apps/manage-indices"},{"title":"Choose how many indices to use","href":"/doc/guides/sending-and-managing-data/manage-indices-and-apps/manage-indices/concepts/one-or-more-indices"},{"title":"Copy and move indices","sidebarTitle":"Copy or move indices","href":"/doc/guides/sending-and-managing-data/manage-indices-and-apps/manage-indices/how-to/copy-move-indices"},{"title":"Export and import indices and settings","sidebarTitle":"Export and import indices","href":"/doc/guides/sending-and-managing-data/manage-indices-and-apps/manage-indices/how-to/export-import-indices"},{"title":"Delete indices","sidebarTitle":"Delete indices","href":"/doc/guides/sending-and-managing-data/manage-indices-and-apps/manage-indices/how-to/delete-indices"},{"title":"Indices and analytics","sidebarTitle":"Indices and analytics","href":"/doc/guides/sending-and-managing-data/manage-indices-and-apps/manage-indices/concepts/indices-analytics"},{"title":"Generate a sitemap from an Algolia index","sidebarTitle":"Generate a sitemap from an index","href":"/doc/guides/sending-and-managing-data/manage-indices-and-apps/manage-indices/tutorial/generate-sitemap-from-index"}]}]},{"group":"Manage results","pages":[{"group":"Relevance overview","root":{"title":"Relevance overview","href":"/doc/guides/managing-results/relevance-overview"},"pages":[{"title":"The eight ranking criteria","href":"/doc/guides/managing-results/relevance-overview/in-depth/ranking-criteria"},{"title":"Relevance","href":"/doc/guides/managing-results/relevance-overview/in-depth/defining-relevance"},{"title":"Search is more than textual matching","href":"/doc/guides/managing-results/relevance-overview/in-depth/textual-matching"}]},{"group":"Essential steps","pages":[{"group":"Searchable attributes","root":{"title":"Searchable attributes","href":"/doc/guides/managing-results/must-do/searchable-attributes"},"pages":[{"title":"Configure searchable attributes the right way","href":"/doc/guides/managing-results/must-do/searchable-attributes/how-to/configuring-searchable-attributes-the-right-way"}]},{"group":"Custom ranking","root":{"title":"Custom ranking","href":"/doc/guides/managing-results/must-do/custom-ranking"},"pages":[{"title":"Create custom ranking attributes","href":"/doc/guides/managing-results/must-do/custom-ranking/how-to/configure-custom-ranking"},{"title":"Boost or penalize records","href":"/doc/guides/managing-results/must-do/custom-ranking/how-to/boost-or-penalize-some-records"},{"title":"Precision of custom ranking metrics","href":"/doc/guides/managing-results/must-do/custom-ranking/how-to/controlling-custom-ranking-metrics-precision"},{"title":"Bayesian averages in custom ranking","href":"/doc/guides/managing-results/must-do/custom-ranking/how-to/bayesian-average"},{"title":"Custom ranking of results per category","href":"/doc/guides/managing-results/must-do/custom-ranking/how-to/custom-ranking-per-category"}]}]},{"group":"Refine results","pages":[{"group":"Sorting results","pages":[{"title":"Sorting results","sidebarTitle":"Overview","href":"/doc/guides/managing-results/refine-results/sorting"},{"group":"How to","pages":[{"title":"Sort by attribute","href":"/doc/guides/managing-results/refine-results/sorting/how-to/sort-by-attribute"},{"title":"Sort an index by date","href":"/doc/guides/managing-results/refine-results/sorting/how-to/sort-an-index-by-date"},{"title":"Create a replica index","href":"/doc/guides/managing-results/refine-results/sorting/how-to/creating-replicas"},{"title":"Search in a replica index","href":"/doc/guides/managing-results/refine-results/sorting/how-to/search-in-a-replica-index"},{"title":"Rename replica indices","href":"/doc/guides/managing-results/refine-results/sorting/how-to/rename-a-replica-index"},{"title":"Manage multiple indices","href":"/doc/guides/managing-results/refine-results/sorting/how-to/set-settings-and-forward-to-replicas"},{"title":"UI sorting widgets","href":"/doc/guides/managing-results/refine-results/sorting/how-to/use-sorting-ui-widget"}]},{"group":"In depth","pages":[{"title":"Exhaustive sorting","href":"/doc/guides/managing-results/refine-results/sorting/in-depth/exhaustive-sort"},{"title":"Relevant sorting","href":"/doc/guides/managing-results/refine-results/sorting/in-depth/relevant-sort"},{"title":"Understanding replicas","href":"/doc/guides/managing-results/refine-results/sorting/in-depth/replicas"},{"title":"What is the effect of a replica on the number of records?","href":"/doc/guides/managing-results/refine-results/sorting/in-depth/replicas-impact-on-pricing"}]}]},{"group":"Faceting","root":{"title":"Faceting","sidebarTitle":"Overview","href":"/doc/guides/managing-results/refine-results/faceting"},"pages":[{"title":"How to declare attributes for faceting with the API","href":"/doc/guides/managing-results/refine-results/faceting/how-to/declaring-attributes-for-faceting"},{"title":"How to declare attributes for faceting in the dashboard","href":"/doc/guides/managing-results/refine-results/faceting/how-to/declaring-attributes-for-faceting-with-dashboard"}]},{"group":"Filtering","root":{"title":"Filtering","sidebarTitle":"Overview","href":"/doc/guides/managing-results/refine-results/filtering"},"pages":[{"title":"Filter by attributes","href":"/doc/guides/managing-results/refine-results/filtering/how-to/filter-by-attributes"},{"title":"Filters and boolean operators","href":"/doc/guides/managing-results/refine-results/filtering/in-depth/combining-boolean-operators"},{"title":"Filter scoring","href":"/doc/guides/managing-results/refine-results/filtering/in-depth/filter-scoring"},{"title":"Filters and arrays of objects","href":"/doc/guides/managing-results/refine-results/filtering/in-depth/arrays-of-objects"},{"title":"Filters and facet filters","href":"/doc/guides/managing-results/refine-results/filtering/in-depth/filters-and-facetfilters"}]},{"title":"Deduplicate results with distinct","href":"/doc/guides/managing-results/refine-results/grouping"},{"group":"Geo location","pages":[{"title":"Geo location","sidebarTitle":"Overview","href":"/doc/guides/managing-results/refine-results/geolocation"},{"title":"Filter results around a location","href":"/doc/guides/managing-results/refine-results/geolocation/how-to/filter-results-around-a-location"},{"title":"Filter results inside a rectangle","href":"/doc/guides/managing-results/refine-results/geolocation/how-to/filter-results-inside-a-rectangle-area"},{"title":"Filter results inside a polygon","href":"/doc/guides/managing-results/refine-results/geolocation/how-to/filter-results-inside-a-polygonal-area"},{"title":"Geo ranking information","href":"/doc/guides/managing-results/refine-results/geolocation/how-to/geo-ranking-info"},{"title":"How to solve the 180th meridian issue","href":"/doc/guides/managing-results/refine-results/geolocation/how-to/how-to-resolve-180-meridian-issue"},{"title":"Geographical ranking precision","href":"/doc/guides/managing-results/refine-results/geolocation/in-depth/geo-ranking-precision"}]}]},{"group":"Rules","pages":[{"group":"Rules overview","root":{"title":"Rules overview","sidebarTitle":"Overview","href":"/doc/guides/managing-results/rules/rules-overview"},"pages":[{"title":"Implement rules","href":"/doc/guides/managing-results/rules/rules-overview/in-depth/implementing-rules"},{"title":"Add default search parameters with rules","href":"/doc/guides/managing-results/rules/rules-overview/how-to/add-default-search-parameters-with-rules"},{"title":"Customize search results by device","href":"/doc/guides/managing-results/rules/rules-overview/how-to/customize-search-results-by-platform"},{"title":"Rules matching algorithm","href":"/doc/guides/managing-results/rules/rules-overview/in-depth/rule-matching-algorithm"},{"title":"Debug rules","href":"/doc/guides/managing-results/rules/rules-overview/in-depth/debugging-rules"}]},{"group":"Detect intent","pages":[{"title":"Detect intent","sidebarTitle":"Overview","href":"/doc/guides/managing-results/rules/detecting-intent"},{"title":"Add filters based on the query","href":"/doc/guides/managing-results/rules/detecting-intent/how-to/applying-a-custom-filter-for-a-specific-query"},{"title":"Dynamic filtering with Rules","href":"/doc/guides/managing-results/rules/detecting-intent/how-to/applying-a-filter-if-the-query-match-a-facet-value"},{"title":"Enhance search results with query-based rules","href":"/doc/guides/managing-results/rules/detecting-intent/how-to/applying-search-parameters-for-a-specific-query"},{"title":"Detect keywords","href":"/doc/guides/managing-results/rules/detecting-intent/how-to/detecting-keywords"}]},{"group":"Merchandising","root":{"title":"Merchandising","sidebarTitle":"Overview","href":"/doc/guides/managing-results/rules/merchandising-and-promoting"},"pages":[{"title":"Promote results with rules","href":"/doc/guides/managing-results/rules/merchandising-and-promoting/how-to/promote-hits"},{"title":"Keep pinned items together with pin blocks","sidebarTitle":"Pin blocks","href":"/doc/guides/managing-results/rules/merchandising-and-promoting/how-to/pin-blocks"},{"title":"Hide results with rules","href":"/doc/guides/managing-results/rules/merchandising-and-promoting/how-to/how-to-hide-hits"},{"title":"Promote records with optional filters","href":"/doc/guides/managing-results/rules/merchandising-and-promoting/how-to/how-to-promote-with-optional-filters"},{"title":"Redirect searches to a URL","href":"/doc/guides/managing-results/rules/merchandising-and-promoting/how-to/redirects"},{"title":"Add banners","href":"/doc/guides/managing-results/rules/merchandising-and-promoting/how-to/add-banners"},{"title":"Merchandise on empty queries","href":"/doc/guides/managing-results/rules/merchandising-and-promoting/how-to/merchandise-on-empty-query"},{"title":"Multiple consequences","href":"/doc/guides/managing-results/rules/merchandising-and-promoting/how-to/combining-multiple-consequences"},{"title":"Merchandise category pages","href":"/doc/guides/managing-results/rules/merchandising-and-promoting/how-to/merchandising-category-pages"},{"title":"Merchandise facets","href":"/doc/guides/managing-results/rules/merchandising-and-promoting/how-to/merchandising-facets"},{"title":"Add search parameters with JSON","href":"/doc/guides/managing-results/rules/merchandising-and-promoting/how-to/rules-query-parameters"},{"title":"Optional filters","href":"/doc/guides/managing-results/rules/merchandising-and-promoting/in-depth/optional-filters"}]}]},{"group":"Optimize search results","pages":[{"group":"Synonyms","pages":[{"title":"Synonyms","sidebarTitle":"Overview","href":"/doc/guides/managing-results/optimize-search-results/adding-synonyms"},{"title":"Manage synonyms in the dashboard","href":"/doc/guides/managing-results/optimize-search-results/adding-synonyms/how-to/managing-synonyms-from-the-dashboard"}]},{"group":"Typo tolerance","root":{"title":"Typo tolerance","sidebarTitle":"Overview","href":"/doc/guides/managing-results/optimize-search-results/typo-tolerance"},"pages":[{"title":"Prevent typosquatting","href":"/doc/guides/managing-results/optimize-search-results/typo-tolerance/how-to/how-to-prevent-typosquatting"},{"title":"Search in hyphenated attributes","href":"/doc/guides/managing-results/optimize-search-results/typo-tolerance/how-to/how-to-search-in-hyphenated-attributes"},{"title":"Configure typo tolerance","href":"/doc/guides/managing-results/optimize-search-results/typo-tolerance/in-depth/configuring-typo-tolerance"}]},{"group":"Natural languages","pages":[{"title":"Natural languages","sidebarTitle":"Overview","href":"/doc/guides/managing-results/optimize-search-results/handling-natural-languages-nlp"},{"group":"How to","pages":[{"title":"Multilingual search","href":"/doc/guides/managing-results/optimize-search-results/handling-natural-languages-nlp/how-to/multilingual-search"},{"title":"Set an index's query language","href":"/doc/guides/managing-results/optimize-search-results/handling-natural-languages-nlp/how-to/how-to-set-an-index-query-language"},{"title":"Customize stop words","href":"/doc/guides/managing-results/optimize-search-results/handling-natural-languages-nlp/how-to/customize-stop-words"},{"title":"Customize plurals and other declensions","href":"/doc/guides/managing-results/optimize-search-results/handling-natural-languages-nlp/how-to/customize-plurals-and-other-declensions"},{"title":"Customize word segmentation","href":"/doc/guides/managing-results/optimize-search-results/handling-natural-languages-nlp/how-to/customize-segmentation"}]},{"group":"In depth","pages":[{"title":"Language-specific configurations","href":"/doc/guides/managing-results/optimize-search-results/handling-natural-languages-nlp/in-depth/language-specific-configurations"},{"title":"Normalization","href":"/doc/guides/managing-results/optimize-search-results/handling-natural-languages-nlp/in-depth/normalization"},{"title":"Tokenization","href":"/doc/guides/managing-results/optimize-search-results/handling-natural-languages-nlp/in-depth/tokenization"},{"title":"Splitting and concatenation","href":"/doc/guides/managing-results/optimize-search-results/handling-natural-languages-nlp/in-depth/splitting-and-concatenation"},{"title":"Supported languages","href":"/doc/guides/managing-results/optimize-search-results/handling-natural-languages-nlp/in-depth/supported-languages"}]}]},{"group":"Empty or insufficient results","root":{"title":"Empty or insufficient results","href":"/doc/guides/managing-results/optimize-search-results/empty-or-insufficient-results"},"pages":[{"title":"Improve results by removing less-important words","href":"/doc/guides/managing-results/optimize-search-results/empty-or-insufficient-results/in-depth/why-use-remove-words-if-no-results"}]},{"group":"Override engine defaults","pages":[{"title":"Override Algolia defaults","sidebarTitle":"Overview","href":"/doc/guides/managing-results/optimize-search-results/override-search-engine-defaults"},{"title":"Match queries in the middle or end of words","href":"/doc/guides/managing-results/optimize-search-results/override-search-engine-defaults/how-to/how-can-i-make-queries-within-the-middle-of-a-word"},{"title":"Prefix search","href":"/doc/guides/managing-results/optimize-search-results/override-search-engine-defaults/in-depth/prefix-searching"},{"title":"Adjusting the Exact criterion","href":"/doc/guides/managing-results/optimize-search-results/override-search-engine-defaults/in-depth/adjust-exact-settings"}]}]},{"group":"Troubleshooting","pages":[{"title":"Troubleshooting search","href":"/doc/guides/managing-results/troubleshooting/troubleshooting-search"},{"title":"Troubleshooting relevance","href":"/doc/guides/managing-results/troubleshooting/troubleshooting-relevance"}]}]},{"group":"Compose results","root":{"title":"Compositions","href":"/doc/guides/compositions"},"pages":[{"group":"Solutions","pages":[{"group":"Search","pages":[{"title":"Place sponsored products in search results","sidebarTitle":"Sponsored products","href":"/doc/guides/compositions/solutions/search/sponsored-products"},{"title":"Federated search with multifeed compositions","sidebarTitle":"Federated search","href":"/doc/guides/compositions/solutions/search/federated-search"}]}]},{"group":"Building blocks","pages":[{"group":"Smart Groups","root":{"title":"Smart Groups","href":"/doc/guides/compositions/smart-groups/smart-groups"},"pages":[{"group":"Group types","pages":[{"title":"Search-based groups","href":"/doc/guides/compositions/smart-groups/search-based-groups"},{"title":"Native retail media orchestration","href":"/doc/guides/compositions/smart-groups/native-rmn-orchestration"},{"title":"External source groups","href":"/doc/guides/compositions/smart-groups/external-source-groups"},{"title":"Recommend-based groups","href":"/doc/guides/compositions/smart-groups/recommend-based-groups"}]}]}]},{"group":"Configure","pages":[{"title":"Return multiple result sets with multifeed compositions","sidebarTitle":"Multifeed compositions","href":"/doc/guides/compositions/multifeed-compositions"},{"title":"Choose how to deduplicate results","href":"/doc/guides/compositions/smart-groups/deduplication-strategy"},{"title":"Sort organic results","href":"/doc/guides/compositions/sorting-strategy"}]}]},{"group":"AI relevance","pages":[{"title":"Dynamic Facets","href":"/doc/guides/algolia-ai/dynamic-facets"},{"title":"AI Synonyms","href":"/doc/guides/algolia-ai/dynamic-synonym-suggestions"},{"group":"Dynamic Re-Ranking","root":{"title":"Dynamic Re-Ranking","href":"/doc/guides/algolia-ai/re-ranking"},"pages":[{"title":"Enable Dynamic Re-Ranking on category pages","href":"/doc/guides/algolia-ai/re-ranking/tutorials/re-rank-category-pages"}]},{"group":"NeuralSearch","pages":[{"title":"Get started with NeuralSearch","sidebarTitle":"Get started","href":"/doc/guides/ai-relevance/neuralsearch/get-started"},{"title":"Adaptive Intent","href":"/doc/guides/ai-relevance/neuralsearch/adaptive-intent"},{"title":"NeuralSearch A/B testing","sidebarTitle":"A/B testing","href":"/doc/guides/ai-relevance/neuralsearch/ab-testing"},{"title":"NeuralSearch limits and unsupported features","sidebarTitle":"Limitations","href":"/doc/guides/ai-relevance/neuralsearch/limitations"},{"title":"Manage model training preferences","sidebarTitle":"Model training preferences","href":"/doc/guides/ai-relevance/neuralsearch/model-training"}]},{"title":"Query Categorization","href":"/doc/guides/algolia-ai/query-categorization"},{"title":"Optimize search settings with AI Assist","href":"/doc/guides/algolia-ai/optimize-search-settings"}]},{"group":"Build Search UI","pages":[{"group":"InstantSearch.js","pages":[{"title":"What is InstantSearch.js?","href":"/doc/guides/building-search-ui/what-is-instantsearch/js"},{"title":"How to install InstantSearch.js","sidebarTitle":"Installation","href":"/doc/guides/building-search-ui/installation/js"},{"sidebarTitle":"Quickstart","title":"Get started with InstantSearch.js","href":"/doc/guides/building-search-ui/getting-started/js"},{"sidebarTitle":"Click and conversion events","title":"Send click and conversion events with InstantSearch.js","href":"/doc/guides/building-search-ui/events/js"},{"title":"Styling and theming","href":"/doc/guides/building-search-ui/styling/js"},{"sidebarTitle":"Upgrade","title":"Upgrade InstantSearch.js","href":"/doc/guides/building-search-ui/upgrade-guides/js"},{"group":"Widgets","pages":[{"title":"Showcase for InstantSearch.js widgets","sidebarTitle":"Widgets showcase","mode":"wide","href":"/doc/guides/building-search-ui/widgets/showcase/js"},{"title":"Customize existing widgets","href":"/doc/guides/building-search-ui/widgets/customize-an-existing-widget/js"},{"title":"Create your own widgets","href":"/doc/guides/building-search-ui/widgets/create-your-own-widgets/js"},{"sidebarTitle":"Change browser defaults for custom search inputs","title":"Change browser defaults for InstantSearch.js","href":"/doc/guides/building-search-ui/widgets/disabling-default-browser-behavior/js"}]},{"group":"UI \u0026 UX patterns","pages":[{"group":"Autocomplete","pages":[{"title":"Autocomplete","sidebarTitle":"Overview","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/autocomplete/js"},{"title":"Build a Query Suggestions UI","sidebarTitle":"Query Suggestions","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/autocomplete/query-suggestions/js"},{"title":"Federated two-column autocomplete","sidebarTitle":"Federated search","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/autocomplete/examples/federated/js"},{"title":"Build a mentions text box","sidebarTitle":"Mentions text box","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/autocomplete/examples/mentions/js"}]},{"title":"Multi-index search","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/multi-index-search/js"},{"title":"Query Suggestions","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/query-suggestions/js"},{"sidebarTitle":"Highlighting and snippeting","title":"Highlighting in InstantSearch.js","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/highlighting-snippeting/js"},{"title":"Pagination","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/pagination/js"},{"sidebarTitle":"Infinite scroll","title":"Infinite scroll with InstantSearch.js","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/infinite-scroll/js"},{"title":"Geo search","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/geo-search/js"},{"sidebarTitle":"Recommendations","title":"Recommendations in InstantSearch.js","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/recommend/js"},{"sidebarTitle":"OpenSearch protocol","title":"Implement the OpenSearch protocol with InstantSearch.js","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/opensearch/js"},{"sidebarTitle":"Redirects","title":"Redirects in InstantSearch.js","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/redirects/js"},{"sidebarTitle":"Structured results","title":"Structured results in InstantSearch.js","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/structured-results/js"},{"title":"Facet display","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/facet-display/js"},{"title":"Facet drop-down menus","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/facet-dropdown/js"},{"sidebarTitle":"Loading indicator","title":"Loading indicator with InstantSearch.js","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/loading-indicator/js"}]},{"group":"Going further","pages":[{"sidebarTitle":"Conditional display","title":"Conditional display in InstantSearch.js","href":"/doc/guides/building-search-ui/going-further/conditional-display/js"},{"sidebarTitle":"Conditional requests","title":"Conditional requests with InstantSearch.js","href":"/doc/guides/building-search-ui/going-further/conditional-requests/js"},{"sidebarTitle":"API keys/security","title":"Secured API keys in InstantSearch.js","href":"/doc/guides/building-search-ui/going-further/api-keys-security/js"},{"sidebarTitle":"Routing URLs","title":"Routing and URL syncing in InstantSearch.js","href":"/doc/guides/building-search-ui/going-further/routing-urls/js"},{"title":"Integrate Google Analytics","href":"/doc/guides/building-search-ui/going-further/integrate-google-analytics/js"},{"title":"Improve performance","href":"/doc/guides/building-search-ui/going-further/improve-performance/js"},{"sidebarTitle":"Optimize search requests","title":"Optimize InstantSearch.js search requests","href":"/doc/guides/building-search-ui/going-further/optimize-search-request-usage/js"},{"group":"Backend search","pages":[{"title":"Backend search with InstantSearch.js","sidebarTitle":"Overview","href":"/doc/guides/building-search-ui/going-further/backend-search/js"},{"title":"Understand the API response","href":"/doc/guides/building-search-ui/going-further/backend-search/in-depth/understanding-the-api-response/js"},{"title":"Implement backend search with InstantSearch.js","sidebarTitle":"Backend search with InstantSearch","href":"/doc/guides/building-search-ui/going-further/backend-search/in-depth/backend-instantsearch/js"},{"title":"Backend search with an API client","href":"/doc/guides/building-search-ui/going-further/backend-search/in-depth/backend-search-with-an-api-client/js"}]},{"title":"Access state outside the lifecycle","href":"/doc/guides/building-search-ui/going-further/access-state-outside-lifecycle/js"},{"sidebarTitle":"Server-side rendering","title":"Dynamic rendering with InstantSearch.js","href":"/doc/guides/building-search-ui/going-further/server-side-rendering/js"},{"sidebarTitle":"Automatic filtering","title":"Turn off automatic filtering in InstantSearch.js","href":"/doc/guides/building-search-ui/going-further/automatic-filtering/js"},{"title":"Using InstantSearch.js on mobile","sidebarTitle":"Native","href":"/doc/guides/building-search-ui/going-further/native/js"},{"group":"Customize chat","pages":[{"sidebarTitle":"AI search experience","title":"Build an AI-powered search experience","href":"/doc/guides/building-search-ui/going-further/chat-customization/ai-search-experience/js"},{"sidebarTitle":"Loader content","title":"Customize the chat loader","href":"/doc/guides/building-search-ui/going-further/chat-customization/loading-message/js"},{"sidebarTitle":"Loader behavior","title":"Control when and where the chat loader shows","href":"/doc/guides/building-search-ui/going-further/chat-customization/loader-behavior/js"},{"sidebarTitle":"Results carousel","title":"Customize the chat results carousel","href":"/doc/guides/building-search-ui/going-further/chat-customization/results-carousel/js"},{"sidebarTitle":"Welcome screen","title":"Show starter prompts on the chat welcome screen","href":"/doc/guides/building-search-ui/going-further/chat-customization/welcome-screen/js"}]}]},{"group":"Resources","pages":[{"sidebarTitle":"UI Design Kit","title":"UI Design Kit (Figma)","href":"/doc/guides/building-search-ui/resources/ui-kit/js"},{"sidebarTitle":"Demos","title":"UI examples for InstantSearch.js","href":"/doc/guides/building-search-ui/resources/demos/js"},{"title":"SEO checklist","href":"/doc/guides/building-search-ui/resources/seo/js"}]}]},{"group":"React InstantSearch","pages":[{"title":"What is React InstantSearch?","href":"/doc/guides/building-search-ui/what-is-instantsearch/react"},{"title":"Install React InstantSearch","sidebarTitle":"Installation","href":"/doc/guides/building-search-ui/installation/react"},{"sidebarTitle":"Quickstart","title":"Get started with React InstantSearch","href":"/doc/guides/building-search-ui/getting-started/react"},{"sidebarTitle":"Click and conversion events","title":"Send click and conversion events with React InstantSearch","href":"/doc/guides/building-search-ui/events/react"},{"title":"Styling and theming","href":"/doc/guides/building-search-ui/styling/react"},{"sidebarTitle":"Upgrade guide","title":"Upgrade React InstantSearch","href":"/doc/guides/building-search-ui/upgrade-guides/react"},{"group":"Widgets","pages":[{"title":"Showcase for React InstantSearch widgets","sidebarTitle":"Widget showcase","mode":"wide","href":"/doc/guides/building-search-ui/widgets/showcase/react"},{"title":"Customize existing widgets","href":"/doc/guides/building-search-ui/widgets/customize-an-existing-widget/react"},{"title":"Create your own widgets","href":"/doc/guides/building-search-ui/widgets/create-your-own-widgets/react"},{"sidebarTitle":"Show and hide widgets","title":"Show and hide React InstantSearch widgets","href":"/doc/guides/building-search-ui/widgets/show-and-hide-widgets/react"},{"title":"Change browser defaults","href":"/doc/guides/building-search-ui/widgets/disabling-default-browser-behavior/react"}]},{"group":"UI \u0026 UX patterns","pages":[{"group":"Autocomplete","pages":[{"title":"Autocomplete","sidebarTitle":"Overview","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/autocomplete/react"},{"title":"Build a Query Suggestions UI","sidebarTitle":"Query Suggestions","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/autocomplete/query-suggestions/react"},{"title":"Federated two-column autocomplete","sidebarTitle":"Federated search","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/autocomplete/examples/federated/react"},{"title":"Build a mentions text box","sidebarTitle":"Mentions text box","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/autocomplete/examples/mentions/react"}]},{"title":"Multi-index search","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/multi-index-search/react"},{"title":"Query Suggestions","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/query-suggestions/react"},{"title":"Highlighting and snippeting","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/highlighting-snippeting/react"},{"title":"Pagination","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/pagination/react"},{"title":"Infinite scroll with React InstantSearch","sidebarTitle":"Infinite scroll","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/infinite-scroll/react"},{"title":"Geo search","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/geo-search/react"},{"title":"Recommendations","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/recommend/react"},{"sidebarTitle":"OpenSearch protocol","title":"Implement the OpenSearch protocol with React InstantSearch","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/opensearch/react"},{"title":"Redirects","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/redirects/react"},{"title":"Structured results","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/structured-results/react"},{"title":"Facet display","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/facet-display/react"},{"title":"Facet drop-down menus","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/facet-dropdown/react"},{"title":"Loading indicator","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/loading-indicator/react"}]},{"group":"Going further","pages":[{"title":"Conditional display","href":"/doc/guides/building-search-ui/going-further/conditional-display/react"},{"title":"Conditional requests","href":"/doc/guides/building-search-ui/going-further/conditional-requests/react"},{"title":"Secured API keys","href":"/doc/guides/building-search-ui/going-further/api-keys-security/react"},{"sidebarTitle":"Routing URLs","title":"Routing and URL syncing in React InstantSearch","href":"/doc/guides/building-search-ui/going-further/routing-urls/react"},{"title":"Integrate Google Analytics","href":"/doc/guides/building-search-ui/going-further/integrate-google-analytics/react"},{"title":"Improve performance","href":"/doc/guides/building-search-ui/going-further/improve-performance/react"},{"title":"Optimize search requests","href":"/doc/guides/building-search-ui/going-further/optimize-search-request-usage/react"},{"group":"Backend search","pages":[{"title":"Backend search with React InstantSearch","sidebarTitle":"Overview","href":"/doc/guides/building-search-ui/going-further/backend-search/react"},{"title":"Understand the API response","href":"/doc/guides/building-search-ui/going-further/backend-search/in-depth/understanding-the-api-response/react"},{"title":"Implement backend search with React InstantSearch","sidebarTitle":"Backend search with InstantSearch","href":"/doc/guides/building-search-ui/going-further/backend-search/in-depth/backend-instantsearch/react"},{"title":"Backend search with an API client","href":"/doc/guides/building-search-ui/going-further/backend-search/in-depth/backend-search-with-an-api-client/react"}]},{"title":"React Native","href":"/doc/guides/building-search-ui/going-further/native/react"},{"title":"Server-side rendering","href":"/doc/guides/building-search-ui/going-further/server-side-rendering/react"},{"sidebarTitle":"Automatic filtering","title":"Turn off automatic filtering in React InstantSearch","href":"/doc/guides/building-search-ui/going-further/automatic-filtering/react"},{"group":"Customize chat","pages":[{"sidebarTitle":"AI search experience","title":"Build an AI-powered search experience","href":"/doc/guides/building-search-ui/going-further/chat-customization/ai-search-experience/react"},{"sidebarTitle":"Legal notice","title":"Add a legal notice to the chat widget","href":"/doc/guides/building-search-ui/going-further/chat-customization/legal-notice/react"},{"sidebarTitle":"Loader content","title":"Customize the chat loader","href":"/doc/guides/building-search-ui/going-further/chat-customization/loading-message/react"},{"sidebarTitle":"Loader behavior","title":"Control when and where the chat loader shows","href":"/doc/guides/building-search-ui/going-further/chat-customization/loader-behavior/react"},{"sidebarTitle":"Results carousel","title":"Customize the chat results carousel","href":"/doc/guides/building-search-ui/going-further/chat-customization/results-carousel/react"},{"sidebarTitle":"Welcome screen","title":"Show starter prompts on the chat welcome screen","href":"/doc/guides/building-search-ui/going-further/chat-customization/welcome-screen/react"}]}]},{"group":"Resources","pages":[{"sidebarTitle":"UI Design Kit","title":"UI Design Kit (Figma)","href":"/doc/guides/building-search-ui/resources/ui-kit/react"},{"sidebarTitle":"Demos","title":"UI examples for React InstantSearch","href":"/doc/guides/building-search-ui/resources/demos/react"},{"title":"SEO checklist","href":"/doc/guides/building-search-ui/resources/seo/react"}]}]},{"group":"Vue InstantSearch","pages":[{"title":"What is Vue InstantSearch?","href":"/doc/guides/building-search-ui/what-is-instantsearch/vue"},{"title":"How to install Vue InstantSearch","sidebarTitle":"Installation","href":"/doc/guides/building-search-ui/installation/vue"},{"sidebarTitle":"Quickstart","title":"Get started with Vue InstantSearch","href":"/doc/guides/building-search-ui/getting-started/vue"},{"sidebarTitle":"Click and conversion events","title":"Send click and conversion events with Vue InstantSearch","href":"/doc/guides/building-search-ui/events/vue"},{"title":"Styling and theming","href":"/doc/guides/building-search-ui/styling/vue"},{"sidebarTitle":"Upgrade","title":"Upgrade Vue InstantSearch","href":"/doc/guides/building-search-ui/upgrade-guides/vue"},{"group":"Widgets","pages":[{"title":"Showcase for Vue InstantSearch widgets","sidebarTitle":"Widget showcase","mode":"wide","href":"/doc/guides/building-search-ui/widgets/showcase/vue"},{"title":"Customize existing widgets","href":"/doc/guides/building-search-ui/widgets/customize-an-existing-widget/vue"},{"title":"Create your widgets","href":"/doc/guides/building-search-ui/widgets/create-your-own-widgets/vue"},{"title":"Show and hide widgets","href":"/doc/guides/building-search-ui/widgets/show-and-hide-widgets/vue"},{"sidebarTitle":"Change browser defaults for custom search inputs","title":"Change browser defaults for Vue InstantSearch","href":"/doc/guides/building-search-ui/widgets/disabling-default-browser-behavior/vue"}]},{"group":"UI \u0026 UX patterns","pages":[{"title":"Autocomplete","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/autocomplete/vue"},{"title":"Multi-index search","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/multi-index-search/vue"},{"group":"Query Suggestions","root":{"title":"Query Suggestions","sidebarTitle":"Overview","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/query-suggestions/vue"},"pages":[{"title":"Build a Query Suggestions UI","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/query-suggestions/tutorials/building-query-suggestions-ui/vue"}]},{"sidebarTitle":"Highlighting and snippeting","title":"Highlighting in Vue InstantSearch","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/highlighting-snippeting/vue"},{"title":"Pagination","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/pagination/vue"},{"sidebarTitle":"Infinite scroll","title":"Infinite scroll with Vue InstantSearch","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/infinite-scroll/vue"},{"title":"Geo search","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/geo-search/vue"},{"sidebarTitle":"OpenSearch protocol","title":"Implement the OpenSearch protocol with Vue InstantSearch","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/opensearch/vue"},{"sidebarTitle":"Redirects","title":"Redirects in Vue InstantSearch","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/redirects/vue"},{"sidebarTitle":"Structured results","title":"Structured results in Vue InstantSearch","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/structured-results/vue"},{"title":"Facet display","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/facet-display/vue"},{"sidebarTitle":"Loading indicator","title":"Loading indicator with Vue InstantSearch","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/loading-indicator/vue"}]},{"group":"Going further","pages":[{"sidebarTitle":"Conditional display","title":"Conditional display in Vue InstantSearch","href":"/doc/guides/building-search-ui/going-further/conditional-display/vue"},{"sidebarTitle":"Conditional requests","title":"Conditional requests with Vue InstantSearch","href":"/doc/guides/building-search-ui/going-further/conditional-requests/vue"},{"sidebarTitle":"API keys/security","title":"Secured API keys in Vue InstantSearch","href":"/doc/guides/building-search-ui/going-further/api-keys-security/vue"},{"sidebarTitle":"Routing URLs","title":"Routing and URL syncing in Vue InstantSearch","href":"/doc/guides/building-search-ui/going-further/routing-urls/vue"},{"title":"Integrate Google Analytics","href":"/doc/guides/building-search-ui/going-further/integrate-google-analytics/vue"},{"sidebarTitle":"Improve performance","title":"Improve performance for Vue InstantSearch","href":"/doc/guides/building-search-ui/going-further/improve-performance/vue"},{"sidebarTitle":"Optimize search requests","title":"Optimize Vue InstantSearch search requests","href":"/doc/guides/building-search-ui/going-further/optimize-search-request-usage/vue"},{"group":"Backend search","pages":[{"title":"Backend search with Vue InstantSearch","sidebarTitle":"Overview","href":"/doc/guides/building-search-ui/going-further/backend-search/vue"},{"title":"Understand the API response","href":"/doc/guides/building-search-ui/going-further/backend-search/in-depth/understanding-the-api-response/vue"},{"title":"Implement backend search with Vue InstantSearch","sidebarTitle":"Backend search with InstantSearch","href":"/doc/guides/building-search-ui/going-further/backend-search/in-depth/backend-instantsearch/vue"},{"title":"Backend search with an API client","href":"/doc/guides/building-search-ui/going-further/backend-search/in-depth/backend-search-with-an-api-client/vue"}]},{"title":"Use Vue InstantSearch with mobile frameworks","sidebarTitle":"Native","href":"/doc/guides/building-search-ui/going-further/native/vue"},{"title":"Server-side rendering","href":"/doc/guides/building-search-ui/going-further/server-side-rendering/vue"}]},{"group":"Resources","pages":[{"sidebarTitle":"UI Design Kit","title":"UI Design Kit (Figma)","href":"/doc/guides/building-search-ui/resources/ui-kit/vue"},{"sidebarTitle":"Demos","title":"UI examples for Vue InstantSearch","href":"/doc/guides/building-search-ui/resources/demos/vue"},{"title":"SEO checklist","href":"/doc/guides/building-search-ui/resources/seo/vue"}]}]},{"group":"With Angular","pages":[{"sidebarTitle":"Get started","title":"Get started with InstantSearch.js in Angular","href":"/doc/guides/building-search-ui/getting-started/angular"}]},{"group":"InstantSearch iOS","pages":[{"title":"What is InstantSearch iOS","href":"/doc/guides/building-search-ui/what-is-instantsearch/ios"},{"title":"Install InstantSearch iOS","sidebarTitle":"Installation","href":"/doc/guides/building-search-ui/installation/ios"},{"group":"Get started","root":{"title":"Get started with InstantSearch iOS","sidebarTitle":"Get started","href":"/doc/guides/building-search-ui/getting-started/ios"},"pages":[{"title":"Get started programmatically","href":"/doc/guides/building-search-ui/getting-started/how-to/programmatically/ios"},{"title":"Get started with SwiftUI","href":"/doc/guides/building-search-ui/getting-started/how-to/declarative/ios"}]},{"sidebarTitle":"Click and conversion events","title":"Send click and conversion events with InstantSearch iOS","href":"/doc/guides/building-search-ui/events/ios"},{"sidebarTitle":"Upgrade","title":"Upgrading InstantSearch iOS","href":"/doc/guides/building-search-ui/upgrade-guides/ios"},{"group":"Widgets","pages":[{"sidebarTitle":"Widgets showcase","title":"Showcase for InstantSearch iOS widgets","href":"/doc/guides/building-search-ui/widgets/showcase/ios"},{"title":"Customize existing widgets","href":"/doc/guides/building-search-ui/widgets/customize-an-existing-widget/ios"},{"title":"Create your own widgets","href":"/doc/guides/building-search-ui/widgets/create-your-own-widgets/ios"}]},{"group":"UI \u0026 UX patterns","pages":[{"sidebarTitle":"Autocomplete","title":"Build an autocomplete with InstantSearch iOS","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/autocomplete/ios"},{"title":"Multi-index search","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/multi-index-search/ios"},{"group":"Query Suggestions","root":{"title":"Query Suggestions","sidebarTitle":"Overview","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/query-suggestions/ios"},"pages":[{"title":"Build a Query Suggestions UI","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/query-suggestions/tutorials/building-query-suggestions-ui/ios"},{"title":"Build a Query Suggestions UI with UIKit","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/query-suggestions/tutorials/building-query-suggestions-ui/programatically/ios"},{"title":"Build a Query Suggestions UI with SwiftUI","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/query-suggestions/tutorials/building-query-suggestions-ui/declarative/ios"}]},{"title":"Highlighting and snippeting","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/highlighting-snippeting/ios"},{"title":"Pagination","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/pagination/ios"},{"title":"Infinite scroll with InstantSearch iOS","sidebarTitle":"Infinite scroll","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/infinite-scroll/ios"},{"title":"Geo search","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/geo-search/ios"},{"title":"Sorting refinements","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/sorting-refinements/ios"},{"sidebarTitle":"Filtering patterns","title":"Filtering patterns for InstantSearch iOS","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/filtering-patterns/ios"},{"title":"Redirects","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/redirects/ios"},{"title":"Facet display","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/facet-display/ios"},{"title":"Voice search","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/voice-search/ios"}]},{"group":"Going further","pages":[{"sidebarTitle":"Conditional display","title":"Conditional display in InstantSearch iOS","href":"/doc/guides/building-search-ui/going-further/conditional-display/ios"},{"title":"Conditional requests","href":"/doc/guides/building-search-ui/going-further/conditional-requests/ios"},{"title":"Secured API keys","href":"/doc/guides/building-search-ui/going-further/api-keys-security/ios"},{"sidebarTitle":"Improve performance","title":"Improve performance for InstantSearch iOS","href":"/doc/guides/building-search-ui/going-further/improve-performance/ios"},{"title":"Optimize search requests","href":"/doc/guides/building-search-ui/going-further/optimize-search-request-usage/ios"},{"group":"Backend search","pages":[{"title":"Backend search with InstantSearch iOS","sidebarTitle":"Overview","href":"/doc/guides/building-search-ui/going-further/backend-search/ios"},{"title":"Understand the API response","href":"/doc/guides/building-search-ui/going-further/backend-search/in-depth/understanding-the-api-response/ios"},{"title":"Implement backend search with InstantSearch on iOS","sidebarTitle":"Backend search with InstantSearch","href":"/doc/guides/building-search-ui/going-further/backend-search/in-depth/backend-instantsearch/ios"},{"title":"Backend search with an API client","href":"/doc/guides/building-search-ui/going-further/backend-search/in-depth/backend-search-with-an-api-client/ios"}]},{"title":"Telemetry","href":"/doc/guides/building-search-ui/going-further/telemetry/ios"}]},{"group":"Resources","pages":[{"sidebarTitle":"UI Design Kit","title":"UI Design Kit (Figma)","href":"/doc/guides/building-search-ui/resources/ui-kit/ios"},{"sidebarTitle":"Demos","title":"UI examples for InstantSearch iOS","href":"/doc/guides/building-search-ui/resources/demos/ios"},{"title":"Privacy manifests","href":"/doc/guides/building-search-ui/resources/privacy-manifest/ios"}]}]},{"group":"InstantSearch Android","pages":[{"title":"What is InstantSearch Android?","href":"/doc/guides/building-search-ui/what-is-instantsearch/android"},{"title":"How to install InstantSearch Android","sidebarTitle":"Installation","href":"/doc/guides/building-search-ui/installation/android"},{"group":"Get started","root":{"title":"Get started with InstantSearch Android","sidebarTitle":"Get started","href":"/doc/guides/building-search-ui/getting-started/android"},"pages":[{"title":"Get started with imperative UI","href":"/doc/guides/building-search-ui/getting-started/how-to/programmatically/android"},{"title":"Get started with declarative UI","href":"/doc/guides/building-search-ui/getting-started/how-to/declarative/android"}]},{"sidebarTitle":"Click and conversion events","title":"Send click and conversion events with InstantSearch Android","href":"/doc/guides/building-search-ui/events/android"},{"sidebarTitle":"Upgrade guide","title":"Upgrading InstantSearch Android","href":"/doc/guides/building-search-ui/upgrade-guides/android"},{"group":"Widgets","pages":[{"sidebarTitle":"Widget showcase","title":"Showcase for InstantSearch Android widgets","href":"/doc/guides/building-search-ui/widgets/showcase/android"},{"sidebarTitle":"Customize an existing widget","title":"Customize an InstantSearch Android widget","href":"/doc/guides/building-search-ui/widgets/customize-an-existing-widget/android"},{"sidebarTitle":"Create your own widgets","title":"Create your own InstantSearch Android widgets","href":"/doc/guides/building-search-ui/widgets/create-your-own-widgets/android"}]},{"group":"UI \u0026 UX patterns","pages":[{"sidebarTitle":"Autocomplete","title":"Build an autocomplete with InstantSearch Android","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/autocomplete/android"},{"sidebarTitle":"Multi-index search","title":"Multi-index search","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/multi-index-search/android"},{"group":"Query Suggestions","root":{"title":"Query Suggestions","sidebarTitle":"Overview","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/query-suggestions/android"},"pages":[{"title":"Build a Query Suggestions UI","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/query-suggestions/tutorials/building-query-suggestions-ui/android"}]},{"sidebarTitle":"Highlighting and snippeting","title":"Highlighting in InstantSearch Android","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/highlighting-snippeting/android"},{"title":"Pagination","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/pagination/android"},{"title":"Infinite scroll with InstantSearch Android","sidebarTitle":"Infinite scroll","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/infinite-scroll/android"},{"title":"Geo search","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/geo-search/android"},{"sidebarTitle":"Sorting refinements","title":"Sorting refinements in InstantSearch Android","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/sorting-refinements/android"},{"sidebarTitle":"Filtering patterns","title":"Filtering patterns for InstantSearch Android","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/filtering-patterns/android"},{"sidebarTitle":"Redirects","title":"Redirects in InstantSearch Android","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/redirects/android"},{"title":"Facet display","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/facet-display/android"},{"title":"Voice search","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/voice-search/android"}]},{"group":"Going further","pages":[{"sidebarTitle":"Conditional display","title":"Conditional display in InstantSearch Android","href":"/doc/guides/building-search-ui/going-further/conditional-display/android"},{"sidebarTitle":"Conditional requests","title":"Conditional requests with InstantSearch Android","href":"/doc/guides/building-search-ui/going-further/conditional-requests/android"},{"sidebarTitle":"API keys/security","title":"Secured API keys in InstantSearch for Android","href":"/doc/guides/building-search-ui/going-further/api-keys-security/android"},{"sidebarTitle":"Improve performance","title":"Improve performance for InstantSearch Android","href":"/doc/guides/building-search-ui/going-further/improve-performance/android"},{"sidebarTitle":"Optimize search requests","title":"Optimize InstantSearch Android search requests","href":"/doc/guides/building-search-ui/going-further/optimize-search-request-usage/android"},{"group":"Backend search","pages":[{"title":"Backend search with InstantSearch Android","sidebarTitle":"Overview","href":"/doc/guides/building-search-ui/going-further/backend-search/android"},{"title":"Understand the API response","href":"/doc/guides/building-search-ui/going-further/backend-search/in-depth/understanding-the-api-response/android"},{"title":"Implement backend search with InstantSearch on Android","sidebarTitle":"Backend search with InstantSearch","href":"/doc/guides/building-search-ui/going-further/backend-search/in-depth/backend-instantsearch/android"},{"title":"Backend search with an API client","href":"/doc/guides/building-search-ui/going-further/backend-search/in-depth/backend-search-with-an-api-client/android"}]},{"sidebarTitle":"Telemetry","title":"Telemetry collection in InstantSearch Android","href":"/doc/guides/building-search-ui/going-further/telemetry/android"}]},{"group":"Resources","pages":[{"sidebarTitle":"UI Design Kit","title":"UI Design Kit (Figma)","href":"/doc/guides/building-search-ui/resources/ui-kit/android"},{"sidebarTitle":"Demos","title":"UI examples for InstantSearch Android","href":"/doc/guides/building-search-ui/resources/demos/android"}]}]},{"group":"Algolia for Flutter","pages":[{"title":"Algolia for Flutter","href":"/doc/guides/building-search-ui/what-is-instantsearch/flutter"},{"title":"How to install the Flutter Helper","sidebarTitle":"Installation","href":"/doc/guides/building-search-ui/installation/flutter"},{"title":"Get started with Flutter Helper","sidebarTitle":"Get started","href":"/doc/guides/building-search-ui/getting-started/flutter"},{"sidebarTitle":"Click and conversion events","title":"Send click and conversion events with the Flutter Helper","href":"/doc/guides/building-search-ui/events/flutter"},{"group":"Widgets","pages":[{"title":"Showcase for Flutter helper components","sidebarTitle":"Widgets showcase","href":"/doc/guides/building-search-ui/widgets/showcase/flutter"}]},{"group":"UI \u0026 UX patterns","pages":[{"sidebarTitle":"Highlighting and snippeting","title":"Highlighting in Algolia for Flutter","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/highlighting-snippeting/flutter"}]},{"group":"Ecommerce UI template","pages":[{"title":"Ecommerce UI template","sidebarTitle":"Overview","href":"/doc/guides/building-search-ui/ecommerce-ui-template/overview/flutter"},{"title":"Get started with the Ecommerce UI template","sidebarTitle":"Get started","href":"/doc/guides/building-search-ui/ecommerce-ui-template/getting-started/flutter"},{"group":"Components","pages":[{"title":"Components","href":"/doc/guides/building-search-ui/ecommerce-ui-template/components/flutter"},{"title":"Showcase","href":"/doc/guides/building-search-ui/ecommerce-ui-template/components/in-depth/showcase/flutter"},{"title":"Autocomplete","href":"/doc/guides/building-search-ui/ecommerce-ui-template/components/in-depth/search-autocomplete/flutter"},{"group":"Product listing page","pages":[{"title":"Display products","href":"/doc/guides/building-search-ui/ecommerce-ui-template/components/in-depth/product-listing-page-display/display-products/flutter"},{"title":"Product card","href":"/doc/guides/building-search-ui/ecommerce-ui-template/components/in-depth/product-listing-page-display/product-card/flutter"},{"title":"No results handler","href":"/doc/guides/building-search-ui/ecommerce-ui-template/components/in-depth/product-listing-page-display/no-results-handler/flutter"}]},{"group":"Filters and sorting","pages":[{"title":"Refinements","href":"/doc/guides/building-search-ui/ecommerce-ui-template/components/in-depth/product-listing-page-filter-and-nav/filters-refinements/flutter"},{"title":"Refinement widgets","href":"/doc/guides/building-search-ui/ecommerce-ui-template/components/in-depth/product-listing-page-filter-and-nav/refinement-widgets/flutter"},{"title":"Sort UI components","href":"/doc/guides/building-search-ui/ecommerce-ui-template/components/in-depth/product-listing-page-filter-and-nav/sort/flutter"}]},{"group":"Data sources","pages":[{"title":"ProductRepository","href":"/doc/guides/building-search-ui/ecommerce-ui-template/components/in-depth/data-sources/product-repository/flutter"},{"title":"SuggestionRepository","href":"/doc/guides/building-search-ui/ecommerce-ui-template/components/in-depth/data-sources/suggestion-repository/flutter"},{"title":"SearchRepository","href":"/doc/guides/building-search-ui/ecommerce-ui-template/components/in-depth/data-sources/search-repository/flutter"}]}]}]},{"group":"Resources","pages":[{"sidebarTitle":"UI Design Kit","title":"UI Design Kit (Figma)","href":"/doc/guides/building-search-ui/resources/ui-kit/flutter"}]}]},{"group":"Algolia Experiences","tag":"pilot","pages":[{"title":"Get started with Algolia Experiences","sidebarTitle":"Get started","href":"/doc/guides/building-search-ui/algolia-experiences/get-started"},{"title":"Use Algolia Experiences in a React app","sidebarTitle":"Use in React","href":"/doc/guides/building-search-ui/algolia-experiences/use-in-react"},{"title":"Edit and preview your experience from your website","sidebarTitle":"Edit from your website","href":"/doc/guides/building-search-ui/algolia-experiences/preview-changes"},{"title":"Troubleshoot Algolia Experiences","sidebarTitle":"Troubleshooting","href":"/doc/guides/building-search-ui/algolia-experiences/troubleshooting"}]}]},{"group":"Click and conversion events","root":{"title":"Click and conversion events","href":"/doc/guides/sending-events"},"pages":[{"title":"Choose how to send events","sidebarTitle":"Implementation paths","href":"/doc/guides/sending-events/getting-started"},{"group":"Concepts","pages":[{"title":"Event types","href":"/doc/guides/sending-events/concepts/event-types"},{"title":"User token","href":"/doc/guides/sending-events/concepts/usertoken"}]},{"group":"Guides","pages":[{"title":"Which events to track","href":"/doc/guides/sending-events/guides/plan"},{"title":"Keep track of query IDs","href":"/doc/guides/sending-events/guides/queryid"},{"title":"Validate your events","href":"/doc/guides/sending-events/guides/validate"},{"group":"Send events with InstantSearch","pages":[{"title":"Send ecommerce events","sidebarTitle":"Ecommerce events","href":"/doc/guides/sending-events/instantsearch/send-ecommerce-events"},{"title":"Send media events","sidebarTitle":"Media events","href":"/doc/guides/sending-events/instantsearch/send-media-events"},{"title":"Send events","sidebarTitle":"Events","href":"/doc/guides/sending-events/instantsearch/send-events"}]},{"group":"Send events with API clients","pages":[{"title":"Send ecommerce events","sidebarTitle":"Ecommerce events","href":"/doc/guides/sending-events/api-client/send-ecommerce-events"},{"title":"Send media events","sidebarTitle":"Media events","href":"/doc/guides/sending-events/api-client/send-media-events"},{"title":"Send events","sidebarTitle":"Events","href":"/doc/guides/sending-events/api-client/send-events"}]}]},{"group":"Connectors","pages":[{"title":"Google Tag Manager","href":"/doc/guides/sending-events/connectors/google-tag-manager"},{"title":"Segment","href":"/doc/guides/sending-events/connectors/segment"},{"title":"Tealium","href":"/doc/guides/sending-events/connectors/tealium"},{"title":"Google Analytics BigQuery Export","sidebarTitle":"GA4 BigQuery Export","href":"/doc/guides/sending-events/connectors/google-analytics-big-query-export"}]}]},{"group":"Search analytics","root":{"title":"Search analytics","sidebarTitle":"Overview","href":"/doc/guides/search-analytics/overview"},"pages":[{"group":"Concepts","pages":[{"title":"Search analytics metrics","href":"/doc/guides/search-analytics/concepts/metrics"},{"title":"Query aggregation and processing","href":"/doc/guides/search-analytics/concepts/query-aggregation"}]},{"group":"Guides","pages":[{"title":"Distinguish users for analytics","href":"/doc/guides/search-analytics/guides/usertoken"},{"title":"Exclude search queries from analytics","href":"/doc/guides/search-analytics/guides/exclude-queries"},{"title":"Segment your analytics data","href":"/doc/guides/search-analytics/guides/segments"}]}]},{"group":"Solutions","pages":[{"group":"Search","root":{"title":"Search","href":"/doc/guides/solutions/ecommerce/search"},"pages":[{"title":"Autocomplete with Federated Search","href":"/doc/guides/solutions/ecommerce/search/autocomplete/federated-search"},{"title":"Animated placeholders","href":"/doc/guides/solutions/ecommerce/search/autocomplete/animated-placeholder"},{"title":"Predictive search suggestions","href":"/doc/guides/solutions/ecommerce/search/autocomplete/predictive-search-suggestions"}]},{"group":"Browse","root":{"title":"Browse","href":"/doc/guides/solutions/ecommerce/browse"},"pages":[{"title":"Category pages","href":"/doc/guides/solutions/ecommerce/browse/tutorials/category-pages"},{"title":"Collections","href":"/doc/guides/solutions/ecommerce/browse/tutorials/collections"},{"group":"Product carousels","pages":[{"title":"Static product carousels","href":"/doc/guides/solutions/ecommerce/browse/product-carousels/static-product-carousels"},{"title":"Dynamic product carousels","href":"/doc/guides/solutions/ecommerce/browse/product-carousels/dynamic-product-carousels"}]}]},{"group":"Filtering and Navigation","root":{"title":"Filtering and Navigation","href":"/doc/guides/solutions/ecommerce/filtering-and-navigation"},"pages":[{"title":"Show automatically applied filters","href":"/doc/guides/solutions/ecommerce/filtering-and-navigation/tutorials/auto-selected-facets"},{"title":"Visual facets","href":"/doc/guides/solutions/ecommerce/filtering-and-navigation/tutorials/visual-facets"},{"title":"Guided search","href":"/doc/guides/solutions/ecommerce/filtering-and-navigation/tutorials/guided-search"}]},{"group":"B2B catalog management","root":{"title":"B2B catalog management","href":"/doc/guides/solutions/ecommerce/b2b-catalog-management"},"pages":[{"title":"Search by SKU","href":"/doc/guides/solutions/ecommerce/b2b-catalog-management/tutorials/search-by-sku"},{"title":"Personalized catalogs","href":"/doc/guides/solutions/ecommerce/b2b-catalog-management/tutorials/personalized-catalogs"},{"title":"Personalized pricing","href":"/doc/guides/solutions/ecommerce/b2b-catalog-management/tutorials/personalized-pricing"}]},{"group":"Visual image search","root":{"title":"Visual image search","sidebarTitle":"Overview","href":"/doc/guides/solutions/ecommerce/visual-image-search"},"pages":[{"title":"Image classification and tagging","href":"/doc/guides/solutions/ecommerce/visual-image-search/tutorials/image-classification-tagging"},{"title":"Search by image","href":"/doc/guides/solutions/ecommerce/visual-image-search/tutorials/search-by-image"}]},{"title":"Build a voice to text search","href":"/doc/guides/solutions/ecommerce/voice-search"}]}]},{"group":"Optimization and Personalization","icon":"cpu","pages":[{"group":"Algolia Recommend","root":{"title":"Algolia Recommend","sidebarTitle":"Overview","href":"/doc/guides/algolia-recommend/overview"},"pages":[{"group":"Upgrade","pages":[{"title":"Upgrade from Recommend JS to InstantSearch.js","sidebarTitle":"From Recommend JS","href":"/doc/guides/algolia-recommend/upgrade/recommend-js"},{"title":"Upgrade from Recommend React to React InstantSearch","sidebarTitle":"From Recommend React","href":"/doc/guides/algolia-recommend/upgrade/recommend-react"}]},{"group":"Guides","pages":[{"title":"Upload events from a CSV file","sidebarTitle":"Upload from CSV","href":"/doc/guides/algolia-recommend/how-to/csv-upload"},{"title":"Set up Algolia Recommend","sidebarTitle":"Set up Recommend","href":"/doc/guides/algolia-recommend/how-to/set-up"},{"title":"Get image-based recommendations with Looking similar","href":"/doc/guides/algolia-recommend/how-to/lookingSimilar"},{"title":"Recommended for you","href":"/doc/guides/algolia-recommend/how-to/recommended-for-you"},{"title":"Personalized recommendations","href":"/doc/guides/algolia-recommend/how-to/personalized-recommendations"},{"title":"Refine recommendations with rules","sidebarTitle":"Recommend rules","href":"/doc/guides/algolia-recommend/how-to/rules"},{"title":"Deduplicate recommendations","href":"/doc/guides/algolia-recommend/how-to/deduplication"}]},{"group":"Analytics","pages":[{"title":"Recommend analytics","sidebarTitle":"Overview","href":"/doc/guides/algolia-recommend/analytics/recommend-analytics"},{"title":"Recommend analytics metrics","sidebarTitle":"Metrics","href":"/doc/guides/algolia-recommend/analytics/metrics"},{"title":"Send events for Recommend analytics","sidebarTitle":"Send events","href":"/doc/guides/algolia-recommend/analytics/send-events"}]}]},{"group":"Personalization","pages":[{"group":"Advanced Personalization","pages":[{"group":"What is Advanced Personalization","root":{"title":"What is Advanced Personalization?","href":"/doc/guides/personalization/advanced-personalization/what-is-advanced-personalization"},"pages":[{"title":"How does Advanced Personalization work?","href":"/doc/guides/personalization/advanced-personalization/what-is-advanced-personalization/in-depth/how-does-advanced-personalization-work"},{"title":"Real-time personalization and historical personalization","href":"/doc/guides/personalization/advanced-personalization/what-is-advanced-personalization/in-depth/real-time-personalization-and-historical-personalization"},{"title":"Migrate from Classic Personalization","href":"/doc/guides/personalization/advanced-personalization/what-is-advanced-personalization/in-depth/migrate-from-classic-personalization"},{"title":"User profiles","href":"/doc/guides/personalization/advanced-personalization/what-is-advanced-personalization/concepts/user-profiles"}]},{"group":"Configure personalization","root":{"title":"Configure personalization","href":"/doc/guides/personalization/advanced-personalization/configure"},"pages":[{"group":"Prerequisites","pages":[{"title":"Prepare your index structure","href":"/doc/guides/personalization/advanced-personalization/configure/prerequisites/index-structure"},{"title":"Prepare your event implementation","href":"/doc/guides/personalization/advanced-personalization/configure/prerequisites/event-implementation"},{"title":"Prepare your search implementation","href":"/doc/guides/personalization/advanced-personalization/configure/prerequisites/search-implementation"},{"title":"Requirements and limits","href":"/doc/guides/personalization/advanced-personalization/configure/prerequisites/consider-requirements-limits"}]},{"group":"Setup","pages":[{"title":"Configure indices to personalize","href":"/doc/guides/personalization/advanced-personalization/configure/setup/indices"},{"title":"Configure user events","href":"/doc/guides/personalization/advanced-personalization/configure/setup/events"},{"title":"Set personalization re-ranking","href":"/doc/guides/personalization/advanced-personalization/configure/setup/personalization-reranking"},{"title":"Enable real-time personalization","href":"/doc/guides/personalization/advanced-personalization/configure/setup/enable-real-time-personalization"}]}]},{"group":"Monitor personalization","root":{"title":"Monitor personalization","href":"/doc/guides/personalization/advanced-personalization/monitor"},"pages":[{"title":"A/B test Advanced Personalization","href":"/doc/guides/personalization/advanced-personalization/monitor/in-depth/ab-test"},{"title":"Troubleshoot Advanced Personalization","href":"/doc/guides/personalization/advanced-personalization/monitor/in-depth/troubleshoot"},{"title":"Inspect a user profile","href":"/doc/guides/personalization/advanced-personalization/monitor/in-depth/inspect-a-user-profile"},{"title":"Delete user profiles","href":"/doc/guides/personalization/advanced-personalization/monitor/in-depth/delete-a-user-profile"},{"title":"Error codes","href":"/doc/guides/personalization/advanced-personalization/monitor/in-depth/error-codes"}]},{"group":"Implement personalization","root":{"title":"Implement personalization","href":"/doc/guides/personalization/advanced-personalization/implement"},"pages":[{"title":"Segment users with rule contexts","href":"/doc/guides/personalization/advanced-personalization/implement/guides/segment-users-with-rule-contexts"},{"title":"Applying contextual affinities","href":"/doc/guides/personalization/advanced-personalization/implement/guides/applying-contextual-affinities"},{"title":"Fetching a user profile","href":"/doc/guides/personalization/advanced-personalization/implement/guides/fetching-a-user-profile"},{"title":"Personalizing search facets","href":"/doc/guides/personalization/advanced-personalization/implement/guides/personalizing-search-facets"},{"title":"Display content with inline segmentation","href":"/doc/guides/personalization/advanced-personalization/implement/guides/inline-segmentation"},{"title":"Label and boost purchased items in search results","href":"/doc/guides/personalization/advanced-personalization/implement/guides/label-and-boost-purchased-items"},{"title":"Personalize product display","href":"/doc/guides/personalization/advanced-personalization/implement/guides/personalizing-product-display"},{"title":"Export user profiles to an audience","href":"/doc/guides/personalization/advanced-personalization/implement/guides/export-audience"}]}]},{"group":"Classic Personalization","pages":[{"group":"What is Personalization","root":{"title":"What is Personalization?","href":"/doc/guides/personalization/classic-personalization/what-is-personalization"},"pages":[{"title":"How Personalization works","href":"/doc/guides/personalization/classic-personalization/what-is-personalization/in-depth/how-personalization-works"}]},{"group":"Personalize results","pages":[{"title":"Personalizing results","href":"/doc/guides/personalization/classic-personalization/personalizing-results"},{"title":"Configure Personalization","href":"/doc/guides/personalization/classic-personalization/personalizing-results/in-depth/configuring-personalization"}]},{"group":"Going to production","root":{"title":"Going to production","href":"/doc/guides/personalization/classic-personalization/going-to-production"},"pages":[{"title":"A/B testing Personalization","href":"/doc/guides/personalization/classic-personalization/going-to-production/how-to/ab-testing-personalization"},{"title":"Enabling Personalization","href":"/doc/guides/personalization/classic-personalization/going-to-production/how-to/enabling-personalization"},{"title":"Personalization implementation checklist","href":"/doc/guides/personalization/classic-personalization/going-to-production/in-depth/implementation-checklist"}]}]}]},{"group":"A/B testing","pages":[{"group":"What is A/B testing","root":{"title":"What is A/B testing","href":"/doc/guides/ab-testing/what-is-ab-testing"},"pages":[{"title":"Create and run an A/B test","href":"/doc/guides/ab-testing/what-is-ab-testing/how-to/create-and-run-an-ab-test"},{"title":"A/B testing API version 3","href":"/doc/guides/ab-testing/what-is-ab-testing/in-depth/api-version-3"},{"title":"Why do A/B testing?","href":"/doc/guides/ab-testing/what-is-ab-testing/in-depth/why-do-ab-testing"},{"title":"How A/B test scores are calculated","href":"/doc/guides/ab-testing/what-is-ab-testing/in-depth/how-ab-test-scores-are-calculated"},{"title":"Bayesian experimentation","href":"/doc/guides/ab-testing/what-is-ab-testing/in-depth/bayesian-experimentation"},{"title":"How traffic splits affect A/B test results","href":"/doc/guides/ab-testing/what-is-ab-testing/in-depth/how-traffic-splits-affect-results"},{"title":"Multi-variant testing","href":"/doc/guides/ab-testing/what-is-ab-testing/in-depth/multi-variant-testing"},{"title":"Declare and adopt an A/B test winner","href":"/doc/guides/ab-testing/what-is-ab-testing/how-to/adopt-ab-test-winner"}]},{"title":"A/B test implementation checklist","href":"/doc/guides/ab-testing/ab-test-implementation-checklist"},{"title":"How to read your A/B test results","href":"/doc/guides/ab-testing/how-to-read-your-a-b-test-results"}]}]},{"group":"AI-powered experiences","icon":"brain","pages":[{"group":"AI Guides","root":{"title":"AI guides","href":"/doc/guides/algolia-ai/generative-experiences"},"pages":[{"group":"How to","pages":[{"title":"Create Guides","href":"/doc/guides/algolia-ai/generative-experiences/guides/generating-guides"},{"title":"Integrate Guides into your website","sidebarTitle":"Integrate Guides","href":"/doc/guides/algolia-ai/generative-experiences/guides/using-guides"},{"title":"Publish Guides","href":"/doc/guides/algolia-ai/generative-experiences/guides/publishing-guides"}]},{"group":"UI components","pages":[{"title":"GuidesHeadlines","href":"/doc/guides/algolia-ai/generative-experiences/ui-library/headlines"},{"title":"GuideContent","href":"/doc/guides/algolia-ai/generative-experiences/ui-library/content"},{"title":"GuidesFeedback","href":"/doc/guides/algolia-ai/generative-experiences/ui-library/feedback"},{"title":"Alternative implementations","href":"/doc/guides/algolia-ai/generative-experiences/ui-library/alternatives"}]}]},{"group":"Agent Studio","root":{"title":"Agent Studio","sidebarTitle":"Overview","href":"/doc/guides/algolia-ai/agent-studio"},"pages":[{"group":"Get started","root":{"title":"Build your first agent","href":"/doc/guides/algolia-ai/agent-studio/how-to/quickstart"},"pages":[{"title":"Create and edit agents in the dashboard","sidebarTitle":"Dashboard","href":"/doc/guides/algolia-ai/agent-studio/how-to/dashboard"},{"title":"Connect LLM providers","sidebarTitle":"LLM providers","href":"/doc/guides/algolia-ai/agent-studio/how-to/llm-providers"},{"title":"Integrate Agent Studio","href":"/doc/guides/algolia-ai/agent-studio/how-to/integration"}]},{"group":"Extend","root":{"title":"Use tools in Agent Studio","sidebarTitle":"Tools overview","href":"/doc/guides/algolia-ai/agent-studio/how-to/tools/overview"},"pages":[{"title":"Algolia Search tool","sidebarTitle":"Search tool","href":"/doc/guides/algolia-ai/agent-studio/how-to/tools/algolia-search"},{"title":"Grouped Results tool","href":"/doc/guides/algolia-ai/agent-studio/how-to/tools/grouped-results"},{"title":"Client-side tools","href":"/doc/guides/algolia-ai/agent-studio/how-to/tools/client-side-tools"},{"title":"MCP tools","href":"/doc/guides/algolia-ai/agent-studio/how-to/tools/mcp-tools"},{"title":"Memory","href":"/doc/guides/algolia-ai/agent-studio/how-to/memory/overview"},{"title":"Agent-to-agent (A2A)","href":"/doc/guides/algolia-ai/agent-studio/how-to/agent-to-agent"}]},{"group":"Customize","pages":[{"title":"Tips for writing efficient prompts","sidebarTitle":"Prompting","href":"/doc/guides/algolia-ai/agent-studio/how-to/prompting"},{"title":"Generate prompt suggestions for your pages","sidebarTitle":"Prompt suggestions","href":"/doc/guides/algolia-ai/agent-studio/how-to/prompt-suggestions"},{"title":"Generate searchable prompt suggestions","sidebarTitle":"Searchable prompt suggestions","href":"/doc/guides/algolia-ai/agent-studio/how-to/searchable-prompt-suggestions"},{"title":"Compare products in chat","sidebarTitle":"Product comparison","href":"/doc/guides/algolia-ai/agent-studio/how-to/product-comparison"},{"title":"Add an AI Overview card to search results","sidebarTitle":"Result card","href":"/doc/guides/algolia-ai/agent-studio/how-to/result-card"},{"title":"Conversations","href":"/doc/guides/algolia-ai/agent-studio/how-to/conversations"},{"title":"Shrink long conversations","sidebarTitle":"Context management","href":"/doc/guides/algolia-ai/agent-studio/how-to/context-management"},{"title":"Per-turn context","href":"/doc/guides/algolia-ai/agent-studio/how-to/turn-context"},{"title":"Cache agent responses","sidebarTitle":"Caching","href":"/doc/guides/algolia-ai/agent-studio/how-to/caching"},{"title":"Analytics","href":"/doc/guides/algolia-ai/agent-studio/how-to/analytics"},{"title":"Evaluations","href":"/doc/guides/algolia-ai/agent-studio/how-to/evaluations"},{"title":"Collect feedback on agent messages","sidebarTitle":"Collecting feedback","href":"/doc/guides/algolia-ai/agent-studio/how-to/feedback"},{"title":"Experimental features","href":"/doc/guides/algolia-ai/agent-studio/how-to/experimental-features"},{"title":"Search prefetch","href":"/doc/guides/algolia-ai/agent-studio/how-to/search-prefetch"}]},{"group":"Security","pages":[{"title":"User authentication","href":"/doc/guides/algolia-ai/agent-studio/how-to/user-authentication"},{"title":"Approved domains","href":"/doc/guides/algolia-ai/agent-studio/how-to/approved-domains"},{"title":"Guardrails","sidebarTitle":"Guardrails","href":"/doc/guides/algolia-ai/agent-studio/how-to/guardrails"},{"title":"Security and credentials","href":"/doc/guides/algolia-ai/agent-studio/how-to/tools/security"}]},{"group":"Reference","pages":[{"title":"Configure your agents and app","sidebarTitle":"Configuration","href":"/doc/guides/algolia-ai/agent-studio/how-to/agent-configuration"}]}]},{"group":"Model Context Protocol","root":{"title":"MCP Server (Model Context Protocol)","sidebarTitle":"Overview","href":"/doc/guides/model-context-protocol"},"pages":[{"title":"Get started with Algolia Public MCP","sidebarTitle":"Public MCP","href":"/doc/guides/model-context-protocol/public-mcp"},{"title":"Get started with Algolia Productivity MCP","sidebarTitle":"Productivity MCP","href":"/doc/guides/model-context-protocol/productivity-mcp"},{"title":"Add Algolia to your app with DevEx MCP","sidebarTitle":"DevEx MCP","href":"/doc/guides/model-context-protocol/devex-mcp"}]},{"group":"Ask AI","root":{"title":"Ask AI","href":"/doc/guides/algolia-ai/askai"},"pages":[{"title":"Migrate Ask AI to Agent Studio","href":"/doc/guides/algolia-ai/askai/guides/migrate-to-agent-studio"},{"title":"Enable and configure Ask AI","href":"/doc/guides/algolia-ai/askai/guides/setup"},{"title":"Supported LLMs","mode":"wide","href":"/doc/guides/algolia-ai/askai/guides/models"},{"title":"Markdown indexing","href":"/doc/guides/algolia-ai/askai/guides/markdown-indexing"},{"title":"Suggested questions","href":"/doc/guides/algolia-ai/askai/guides/suggested-questions"},{"title":"Measure Ask AI performance","href":"/doc/guides/algolia-ai/askai/guides/metrics"},{"title":"Safeguards","href":"/doc/guides/algolia-ai/askai/guides/safety"},{"title":"Reduce token usage","href":"/doc/guides/algolia-ai/askai/guides/cost-optimization"},{"title":"Ask AI API reference","href":"/doc/guides/algolia-ai/askai/reference/api"}]}]},{"group":"Production and scale","icon":"layers","pages":[{"group":"Going to production","pages":[{"title":"Implementation checklist","href":"/doc/guides/going-to-production/implementation-checklist"},{"title":"Track usage and performance in the dashboard","href":"/doc/guides/going-to-production/track-usage"},{"title":"Case study for an online clothing company","href":"/doc/guides/going-to-production/case-study"}]},{"group":"Scaling","pages":[{"group":"Infrastructure","root":{"title":"Infrastructure","sidebarTitle":"Overview","href":"/doc/guides/scaling/infrastructure"},"pages":[{"group":"Classic","pages":[{"title":"Servers and clusters","href":"/doc/guides/scaling/infrastructure/classic/servers-clusters"},{"title":"Distributed Search Network (DSN)","href":"/doc/guides/scaling/infrastructure/classic/distributed-search-network-dsn"},{"title":"Capacity alerts","href":"/doc/guides/scaling/infrastructure/classic/capacity-alerts"}]},{"title":"Dynamic scaling infrastructure","href":"/doc/guides/scaling/infrastructure/dynamic/dynamic"}]},{"title":"Large indexing jobs","href":"/doc/guides/scaling/scaling-to-larger-datasets"},{"title":"Algolia service limits","href":"/doc/guides/scaling/algolia-service-limits"},{"group":" ","hidden":true,"searchable":true,"pages":[{"title":"Multi-cluster management (MCM)","href":"/doc/guides/scaling/managing-multiple-clusters-mcm"},{"title":"Implementing MCM","href":"/doc/guides/scaling/managing-multiple-clusters-mcm/how-to/implement-multi-clusters"}]}]},{"group":"Security","pages":[{"group":"API keys","root":{"title":"API keys","sidebarTitle":"Overview","href":"/doc/guides/security/api-keys"},"pages":[{"title":"User-restricted access to data","href":"/doc/guides/security/api-keys/how-to/user-restricted-access-to-data"},{"title":"How to restore an API key","href":"/doc/guides/security/api-keys/how-to/how-to-restore-an-api-key"},{"title":"API key restrictions","href":"/doc/guides/security/api-keys/in-depth/api-key-restrictions"}]},{"title":"Security best practices","href":"/doc/guides/security/security-best-practices"},{"title":"Shared responsibility","href":"/doc/guides/security/security-best-practices/in-depth/shared-responsibility"},{"title":"Algolia Vault","href":"/doc/guides/security/algolia-vault"}]},{"group":"Value Engineering","root":{"title":"Value Engineering","href":"/doc/value-engineering"},"pages":[{"title":"Radar","href":"/doc/value-engineering/radar"},{"title":"Deploy Radar","href":"/doc/value-engineering/deploy"},{"title":"Radar data and privacy","sidebarTitle":"Data and privacy","href":"/doc/value-engineering/data-and-privacy"}]},{"group":"Account management","pages":[{"title":"Manage your Algolia applications","sidebarTitle":"Manage your apps","href":"/doc/guides/sending-and-managing-data/manage-indices-and-apps/manage-your-apps"},{"title":"Set up Algolia through the AWS Marketplace","sidebarTitle":"Set up billing through AWS Marketplace","href":"/doc/guides/billing/marketplaces/amazon-web-services"}]}]}]},{"tab":"Libraries and tools","icon":"wrench","menu":[{"item":"API clients","versions":[{"version":"current","groups":[{"group":"current","pages":[{"title":"current","href":"/doc/libraries/sdk"}]}]},{"version":"legacy","groups":[{"group":"legacy","pages":[{"title":"legacy","href":"/doc/libraries/sdk/v1/install"}]}]}]},{"item":"Algolia CLI","pages":[{"title":"Algolia CLI","href":"/doc/tools/cli/get-started"}]},{"item":"Algolia Wizard","pages":[{"title":"Algolia Wizard","href":"/doc/tools/algolia-wizard"}]},{"item":"Crawler","pages":[{"title":"Crawler","href":"/doc/tools/crawler/getting-started/overview"}]},{"item":"Django","pages":[{"title":"Django","href":"/doc/framework-integration/django/setup"}]},{"item":"Laravel","pages":[{"title":"Laravel","href":"/doc/framework-integration/laravel/getting-started/introduction-to-scout-extended"}]},{"item":"Ruby on Rails","pages":[{"title":"Ruby on Rails","href":"/doc/framework-integration/rails/getting-started/setup"}]},{"item":"Symfony","pages":[{"title":"Symfony","href":"/doc/framework-integration/symfony/getting-started/algolia-searchbundle"}]},{"item":"All libraries and tools","pages":[{"title":"All libraries and tools","href":"/doc/libraries"}]}],"pages":[{"title":"Libraries and tools","href":"/doc/libraries/sdk"}]},{"tab":"UI libraries","icon":"proportions","menu":[{"item":"InstantSearch.js","pages":[{"title":"InstantSearch.js","href":"/doc/api-reference/widgets/js"}]},{"item":"React InstantSearch","pages":[{"title":"React InstantSearch","href":"/doc/api-reference/widgets/react"}]},{"item":"Vue InstantSearch","pages":[{"title":"Vue InstantSearch","href":"/doc/api-reference/widgets/vue"}]},{"item":"InstantSearch iOS","pages":[{"title":"InstantSearch iOS","href":"/doc/api-reference/widgets/ios"}]},{"item":"InstantSearch Android","pages":[{"title":"InstantSearch Android","href":"/doc/api-reference/widgets/android"}]},{"item":"Algolia for Flutter","pages":[{"title":"Algolia for Flutter","href":"/doc/api-reference/widgets/flutter"}]},{"item":"Autocomplete","pages":[{"title":"Autocomplete","href":"/doc/ui-libraries/autocomplete/introduction/what-is-autocomplete"}]},{"item":"All UI libraries","pages":[{"title":"All UI libraries","href":"/doc/ui-libraries"}]}],"pages":[{"title":"UI libraries","href":"/doc/api-reference/widgets/js"}]},{"tab":"Integrations","icon":"plug","menu":[{"item":"Adobe Commerce/Magento","pages":[{"title":"Adobe Commerce/Magento","href":"/doc/integration/magento-2/getting-started/quick-start"}]},{"item":"BigCommerce","pages":[{"title":"BigCommerce","href":"/doc/integration/bigcommerce/get-started/installation"}]},{"item":"commercetools","pages":[{"title":"commercetools","href":"/doc/integration/commercetools/get-started/installation"}]},{"item":"Make","pages":[{"title":"Make","href":"/doc/integration/make"}]},{"item":"n8n","pages":[{"title":"n8n","href":"/doc/integration/n8n"}]},{"item":"Salesforce B2C Commerce","pages":[{"title":"Salesforce B2C Commerce","href":"/doc/integration/salesforce-commerce-cloud-b2c/getting-started/introduction"}]},{"item":"Shopify","pages":[{"title":"Shopify","href":"/doc/integration/shopify/getting-started/quick-start"}]},{"item":"Stripe Projects","pages":[{"title":"Stripe Projects","href":"/doc/integration/stripe-projects"}]},{"item":"Zapier","pages":[{"title":"Zapier","href":"/doc/integration/zapier"}]},{"item":"Zendesk","pages":[{"title":"Zendesk","href":"/doc/integration/zendesk/get-started"}]},{"item":"Vercel","pages":[{"title":"Vercel","href":"/doc/integration/vercel"}]},{"item":"All integrations","pages":[{"title":"All integrations","href":"/doc/integration"}]}],"pages":[{"title":"Integrations","href":"/doc/integration/magento-2/getting-started/quick-start"}]},{"tab":"API reference","icon":"code","menu":[{"item":"Search","pages":[{"title":"Search","href":"/doc/rest-api/search"}]},{"item":"Agent Studio","pages":[{"title":"Agent Studio","href":"/doc/rest-api/agent-studio"}]},{"item":"A/B testing","pages":[{"title":"A/B testing","href":"/doc/rest-api/abtesting-v3"}]},{"item":"Advanced Personalization","pages":[{"title":"Advanced Personalization","href":"/doc/rest-api/advanced-personalization"}]},{"item":"Analytics","pages":[{"title":"Analytics","href":"/doc/rest-api/analytics"}]},{"item":"Classic Personalization","pages":[{"title":"Classic Personalization","href":"/doc/rest-api/personalization"}]},{"item":"Composition","pages":[{"title":"Composition","href":"/doc/rest-api/composition"}]},{"item":"Crawler","pages":[{"title":"Crawler","href":"/doc/rest-api/crawler"}]},{"item":"Ingestion","pages":[{"title":"Ingestion","href":"/doc/rest-api/ingestion"}]},{"item":"Insights","pages":[{"title":"Insights","href":"/doc/rest-api/insights"}]},{"item":"Monitoring","pages":[{"title":"Monitoring","href":"/doc/rest-api/monitoring"}]},{"item":"Recommend","pages":[{"title":"Recommend","href":"/doc/rest-api/recommend"}]},{"item":"Query Suggestions","pages":[{"title":"Query Suggestions","href":"/doc/rest-api/query-suggestions"}]},{"item":"Suggested Actions","pages":[{"title":"Suggested Actions","href":"/doc/rest-api/suggested-actions"}]},{"item":"Usage","pages":[{"title":"Usage","href":"/doc/rest-api/usage"}]},{"item":"All APIs","pages":[{"title":"All APIs","href":"/doc/rest-api"}]}],"pages":[{"title":"API reference","href":"/doc/rest-api/search"}]}]},"basePath":"","title":"Wait for indexing to finish - Algolia","buildId":"dpl_596ePT575z4qnAFksq1biRW97aLY","deploymentId":"dpl_596ePT575z4qnAFksq1biRW97aLY","dynamics":[],"chunks":[]}