# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand. overlay: 1.0.0 info: title: API Evangelist conversational phrasing for Search API version: 1.0.0 extends: openapi/algolia-search-api-openapi.yml actions: - target: $.info update: x-apievangelist-phrasing: method: generated generated: '2026-09-26' generator: build-phrasing.py label: Generated by API Evangelist operations: 78 - target: $.paths['/{path}'].get update: x-apievangelist-phrasing: intent: Send a custom GET request to the Search API effect: read questions: - Can I call a Search API endpoint the client library doesn't wrap yet with a raw GET? - Is there a generic way to read from an arbitrary Search API path? instructions: - text: Send a raw GET request to the Search API path {path}. slots: path: path.path - text: Call GET on Search endpoint {path} with query parameters {parameters}. slots: path: path.path parameters: query.parameters method: generated generated: '2026-09-26' - target: $.paths['/{path}'].put update: x-apievangelist-phrasing: intent: Send a custom PUT request to the Search API effect: write questions: - How can I send a PUT to a Search API path that has no dedicated method? - Can I replace something at a custom Search endpoint using a raw PUT call? instructions: - text: Send a raw PUT request to the Search API path {path}. slots: path: path.path - text: Issue a PUT to Search endpoint {path} with query parameters {parameters}. slots: path: path.path parameters: query.parameters method: generated generated: '2026-09-26' - target: $.paths['/{path}'].post update: x-apievangelist-phrasing: intent: Send a custom POST request to the Search API effect: write questions: - What's the way to POST to a new Search API endpoint before the SDK supports it? - Can I make a raw POST call to any Search path? instructions: - text: Send a raw POST request to the Search API path {path}. slots: path: path.path - text: POST to Search endpoint {path} passing query parameters {parameters}. slots: path: path.path parameters: query.parameters method: generated generated: '2026-09-26' - target: $.paths['/{path}'].delete update: x-apievangelist-phrasing: intent: Send a custom DELETE request to the Search API effect: destructive questions: - How do I send a raw DELETE to a Search API path the client doesn't cover? - Can I call DELETE on an arbitrary Search endpoint? instructions: - text: Send a raw DELETE request to the Search API path {path}. slots: path: path.path - text: Issue a DELETE against Search endpoint {path} with query parameters {parameters}. slots: path: path.path parameters: query.parameters method: generated generated: '2026-09-26' - target: $.paths['/1/indexes/{indexName}/query'].post update: x-apievangelist-phrasing: intent: Search one index effect: read questions: - How do I run a search query against my products index? - What's the maximum number of hits a single search can return? instructions: - text: Search the index {indexName}. slots: indexName: path.indexName - text: Run a query against just the {indexName} index and return the matching hits. slots: indexName: path.indexName method: generated generated: '2026-09-26' - target: $.paths['/1/indexes/*/queries'].post update: x-apievangelist-phrasing: intent: Run several search queries in one request effect: read questions: - Can I search my products and my articles indices in a single API call? - Is it possible to stop running the remaining queries once one returns enough hits? instructions: - text: 'Run these search queries together in one request: {requests}.' slots: requests: requestBody.requests - text: Execute multi-index queries {requests} using strategy {strategy}. slots: requests: requestBody.requests strategy: requestBody.strategy method: generated generated: '2026-09-26' - target: $.paths['/1/indexes/{indexName}/facets/{facetName}/query'].post update: x-apievangelist-phrasing: intent: Search the values of a facet effect: read questions: - How can I let users search within a long list of brand filter values? - Why doesn't facet value search work when I have many searchable facets? instructions: - text: Search the values of facet {facetName} in index {indexName} for {facetQuery}. slots: facetName: path.facetName indexName: path.indexName facetQuery: requestBody.facetQuery - text: Return up to {maxFacetHits} {facetName} values from {indexName}. slots: maxFacetHits: requestBody.maxFacetHits facetName: path.facetName indexName: path.indexName method: generated generated: '2026-09-26' - target: $.paths['/1/indexes/{indexName}/browse'].post update: x-apievangelist-phrasing: intent: Browse records in an index page by page effect: read questions: - What's the difference between browsing and searching when I want raw matching records? - How can I page through more than 1,000 records in one index using a cursor? instructions: - text: Browse the records in index {indexName}. slots: indexName: path.indexName - text: Fetch the next page of up to 1,000 records from {indexName} with the browse endpoint. slots: indexName: path.indexName method: generated generated: '2026-09-26' - target: $.paths['/1/indexes/{indexName}'].post update: x-apievangelist-phrasing: intent: Add a record with an auto-generated ID effect: write questions: - How do I add a new record to an index and let Algolia generate its ID? - Does adding a record create the index if it doesn't exist? instructions: - text: Add a new record to index {indexName} with an auto-generated object ID. slots: indexName: path.indexName - text: Insert this record into {indexName} and return its new objectID. slots: indexName: path.indexName method: generated generated: '2026-09-26' - target: $.paths['/1/indexes/{indexName}'].delete update: x-apievangelist-phrasing: intent: Delete an index effect: destructive questions: - How do I delete an entire index along with its settings? - What happens to replica indices and analytics when I delete an index? instructions: - text: Delete the index {indexName}. slots: indexName: path.indexName - text: Permanently remove index {indexName} and all its settings. slots: indexName: path.indexName method: generated generated: '2026-09-26' - target: $.paths['/1/indexes/{indexName}/{objectID}'].get update: x-apievangelist-phrasing: intent: Retrieve one record by its ID effect: read questions: - How can I fetch a single record if I know its object ID? - Can I only return certain attributes when retrieving a record? instructions: - text: Get record {objectID} from index {indexName}. slots: objectID: path.objectID indexName: path.indexName - text: Retrieve only {attributesToRetrieve} of record {objectID} in {indexName}. slots: attributesToRetrieve: query.attributesToRetrieve objectID: path.objectID indexName: path.indexName method: generated generated: '2026-09-26' - target: $.paths['/1/indexes/{indexName}/{objectID}'].put update: x-apievangelist-phrasing: intent: Add or replace a record by its ID effect: write questions: - How do I overwrite a record completely when I know its object ID? - Will saving a record with an existing ID replace the whole thing? instructions: - text: Replace record {objectID} in index {indexName} with this content. slots: objectID: path.objectID indexName: path.indexName - text: Create or fully overwrite the record with ID {objectID} in {indexName}. slots: objectID: path.objectID indexName: path.indexName method: generated generated: '2026-09-26' - target: $.paths['/1/indexes/{indexName}/{objectID}'].delete update: x-apievangelist-phrasing: intent: Delete one record effect: destructive questions: - How do I remove a single record from my index by ID? - Can I delete one product from search without touching the rest? instructions: - text: Delete record {objectID} from index {indexName}. slots: objectID: path.objectID indexName: path.indexName - text: Remove the single object {objectID} from {indexName}. slots: objectID: path.objectID indexName: path.indexName method: generated generated: '2026-09-26' - target: $.paths['/1/indexes/{indexName}/deleteByQuery'].post update: x-apievangelist-phrasing: intent: Delete records matching a filter effect: destructive questions: - Can I delete all records that match a filter, like everything out of stock? - Why is deleting by query discouraged, and does it accept an empty filter? instructions: - text: Delete every record in {indexName} matching filter {filters}. slots: indexName: path.indexName filters: requestBody.filters - text: Remove records from {indexName} whose facets match {facetFilters}. slots: indexName: path.indexName facetFilters: requestBody.facetFilters - text: Delete records in {indexName} located within {aroundRadius} meters of {aroundLatLng}. slots: indexName: path.indexName aroundRadius: requestBody.aroundRadius aroundLatLng: requestBody.aroundLatLng method: generated generated: '2026-09-26' - target: $.paths['/1/indexes/{indexName}/clear'].post update: x-apievangelist-phrasing: intent: Delete all records but keep index settings effect: destructive questions: - How do I empty an index but keep its settings, synonyms and rules? - Can I wipe every record from an index without deleting the index itself? instructions: - text: Clear all records from index {indexName}. slots: indexName: path.indexName - text: Empty {indexName} of records while keeping its settings, synonyms and rules. slots: indexName: path.indexName method: generated generated: '2026-09-26' - target: $.paths['/1/indexes/{indexName}/{objectID}/partial'].post update: x-apievangelist-phrasing: intent: Update some attributes of one record effect: write questions: - How can I change just the price of one record without resending the whole thing? - Can a partial update create the record if it doesn't exist yet? instructions: - text: Update only the given attributes of record {objectID} in {indexName}. slots: objectID: path.objectID indexName: path.indexName - text: 'Partially update record {objectID} in {indexName}, creating it if missing: {createIfNotExists}.' slots: objectID: path.objectID indexName: path.indexName createIfNotExists: query.createIfNotExists method: generated generated: '2026-09-26' - target: $.paths['/1/indexes/{indexName}/batch'].post update: x-apievangelist-phrasing: intent: Batch add, update or delete records in one index effect: write questions: - How can I send many record additions and deletions to a single index in one request? - Are batch actions applied in the order I list them? instructions: - text: 'Apply these batch actions to index {indexName}: {requests}.' slots: indexName: path.indexName requests: requestBody.requests - text: Send one batch of adds, updates and deletes {requests} to {indexName}. slots: requests: requestBody.requests indexName: path.indexName method: generated generated: '2026-09-26' - target: $.paths['/1/indexes/*/batch'].post update: x-apievangelist-phrasing: intent: Batch record changes across multiple indices effect: write questions: - Can one request update records in several different indices at once? - Is there a single call to write to my products and categories indices together? instructions: - text: 'Run these cross-index batch actions: {requests}.' slots: requests: requestBody.requests - text: Apply record changes {requests} spanning several indices in a single request. slots: requests: requestBody.requests method: generated generated: '2026-09-26' - target: $.paths['/1/indexes/*/objects'].post update: x-apievangelist-phrasing: intent: Retrieve several records, across indices effect: read questions: - How do I fetch several records by ID, possibly from different indices, in one call? - Are records returned in the same order I requested them? instructions: - text: 'Retrieve these records by object ID: {requests}.' slots: requests: requestBody.requests - text: Fetch multiple records from different indices in one call using {requests}. slots: requests: requestBody.requests method: generated generated: '2026-09-26' - target: $.paths['/1/indexes/{indexName}/settings'].get update: x-apievangelist-phrasing: intent: Retrieve an index's settings effect: read questions: - What searchable attributes and ranking does my index currently use? - How can I read the current configuration of an index? instructions: - text: Get the settings of index {indexName}. slots: indexName: path.indexName - text: Show me the current ranking and relevance configuration of {indexName}. slots: indexName: path.indexName method: generated generated: '2026-09-26' - target: $.paths['/1/indexes/{indexName}/settings'].put update: x-apievangelist-phrasing: intent: Update an index's settings effect: write questions: - How do I change which attributes are searchable and in what order? - Can I push settings changes to replica indices too? - How do I reset a setting back to its default value? instructions: - text: Set the searchable attributes of {indexName} to {searchableAttributes}. slots: indexName: path.indexName searchableAttributes: requestBody.searchableAttributes - text: Make {attributesForFaceting} filterable facets on index {indexName}. slots: attributesForFaceting: requestBody.attributesForFaceting indexName: path.indexName - text: Update custom ranking on {indexName} to {customRanking} and forward it to replicas. slots: indexName: path.indexName customRanking: requestBody.customRanking - text: Set {hitsPerPage} hits per page and typo tolerance {typoTolerance} on {indexName}. slots: hitsPerPage: requestBody.hitsPerPage typoTolerance: requestBody.typoTolerance indexName: path.indexName method: generated generated: '2026-09-26' - target: $.paths['/1/indexes/{indexName}/synonyms/{objectID}'].get update: x-apievangelist-phrasing: intent: Retrieve a synonym effect: read questions: - How do I look up one synonym definition by its ID? - What words does a particular synonym entry map together? instructions: - text: Get synonym {objectID} from index {indexName}. slots: objectID: path.objectID indexName: path.indexName - text: Show the definition of synonym {objectID} in {indexName}. slots: objectID: path.objectID indexName: path.indexName method: generated generated: '2026-09-26' - target: $.paths['/1/indexes/{indexName}/synonyms/{objectID}'].put update: x-apievangelist-phrasing: intent: Create or replace a synonym effect: write questions: - How do I make 'tee' and 't-shirt' match each other in search? - Can I add a one-way synonym or an alternative correction? instructions: - text: Save synonym {objectID} in {indexName} as type {type} linking {synonyms}. slots: objectID: path.objectID indexName: path.indexName type: requestBody.type synonyms: requestBody.synonyms - text: Create a one-way synonym {objectID} on {indexName} from {input} to {synonyms}. slots: objectID: path.objectID indexName: path.indexName input: requestBody.input synonyms: requestBody.synonyms method: generated generated: '2026-09-26' - target: $.paths['/1/indexes/{indexName}/synonyms/{objectID}'].delete update: x-apievangelist-phrasing: intent: Delete a synonym effect: destructive questions: - How do I remove a single synonym from an index? - Can I delete a synonym and have replicas drop it too? instructions: - text: Delete synonym {objectID} from index {indexName}. slots: objectID: path.objectID indexName: path.indexName - text: Remove synonym {objectID} from {indexName} and its replicas. slots: objectID: path.objectID indexName: path.indexName method: generated generated: '2026-09-26' - target: $.paths['/1/indexes/{indexName}/synonyms/batch'].post update: x-apievangelist-phrasing: intent: Create or replace many synonyms at once effect: write questions: - Can I upload a whole list of synonyms in one request? - Is it possible to replace all existing synonyms with a new set? instructions: - text: Upload a batch of synonyms to index {indexName}. slots: indexName: path.indexName - text: Replace every existing synonym in {indexName} with this new batch. slots: indexName: path.indexName method: generated generated: '2026-09-26' - target: $.paths['/1/indexes/{indexName}/synonyms/clear'].post update: x-apievangelist-phrasing: intent: Delete all synonyms from an index effect: destructive questions: - How do I wipe out all synonyms on an index? - Can I clear synonyms on the primary and its replicas together? instructions: - text: Delete all synonyms from index {indexName}. slots: indexName: path.indexName - text: Clear every synonym in {indexName}. slots: indexName: path.indexName method: generated generated: '2026-09-26' - target: $.paths['/1/indexes/{indexName}/synonyms/search'].post update: x-apievangelist-phrasing: intent: Search an index's synonyms effect: read questions: - Which synonyms are defined on my index? - Can I find synonyms of a certain type that mention a word? instructions: - text: List the synonyms on index {indexName}. slots: indexName: path.indexName - text: Search {indexName}'s synonyms for {query} of type {type}. slots: indexName: path.indexName query: requestBody.query type: requestBody.type method: generated generated: '2026-09-26' - target: $.paths['/1/keys'].get update: x-apievangelist-phrasing: intent: List API keys effect: read questions: - Which API keys exist for my Algolia application? - What permissions do each of my API keys have? instructions: - text: List all API keys for this application. - text: Show every API key with its permissions and restrictions. method: generated generated: '2026-09-26' - target: $.paths['/1/keys'].post update: x-apievangelist-phrasing: intent: Create an API key effect: write questions: - How do I create a search-only key restricted to certain indices? - Can I limit a new key's queries per IP per hour or give it an expiry? instructions: - text: Create an API key with permissions {acl}. slots: acl: requestBody.acl - text: Create a key with ACL {acl} limited to indices {indexes}, described as {description}. slots: acl: requestBody.acl indexes: requestBody.indexes description: requestBody.description - text: Make a key with {acl} valid for {validity} seconds and at most {maxQueriesPerIPPerHour} queries per IP hourly. slots: acl: requestBody.acl validity: requestBody.validity maxQueriesPerIPPerHour: requestBody.maxQueriesPerIPPerHour method: generated generated: '2026-09-26' - target: $.paths['/1/keys/{key}'].get update: x-apievangelist-phrasing: intent: Retrieve an API key's permissions effect: read questions: - What can a particular API key do, and which indices can it access? - Can a non-admin key look up its own restrictions? instructions: - text: Get the permissions of API key {key}. slots: key: path.key - text: Show the restrictions and ACL on key {key}. slots: key: path.key method: generated generated: '2026-09-26' - target: $.paths['/1/keys/{key}'].put update: x-apievangelist-phrasing: intent: Replace an API key's permissions effect: write questions: - How do I change the permissions on an existing API key? - Do attributes I leave out when updating a key get reset? instructions: - text: Update API key {key} to have permissions {acl}. slots: key: path.key acl: requestBody.acl - text: Change key {key} to ACL {acl} restricted to indices {indexes}. slots: key: path.key acl: requestBody.acl indexes: requestBody.indexes method: generated generated: '2026-09-26' - target: $.paths['/1/keys/{key}'].delete update: x-apievangelist-phrasing: intent: Delete an API key effect: destructive questions: - How do I revoke an API key that leaked? - Can I delete a key I no longer use? instructions: - text: Delete API key {key}. slots: key: path.key - text: Revoke the key {key} so it stops working. slots: key: path.key method: generated generated: '2026-09-26' - target: $.paths['/1/keys/{key}/restore'].post update: x-apievangelist-phrasing: intent: Restore a deleted API key effect: write questions: - Can I bring back an API key I deleted by mistake? - What happens to a restored key's validity, and are old deleted keys always recoverable? instructions: - text: Restore the deleted API key {key}. slots: key: path.key - text: Undo the deletion of key {key}. slots: key: path.key method: generated generated: '2026-09-26' - target: $.paths['/1/indexes/{indexName}/rules/{objectID}'].get update: x-apievangelist-phrasing: intent: Retrieve a search rule effect: read questions: - How do I look up one merchandising rule by its ID? - What conditions and consequences does a given rule have? instructions: - text: Get rule {objectID} from index {indexName}. slots: objectID: path.objectID indexName: path.indexName - text: Show the conditions and consequence of search rule {objectID} in {indexName}. slots: objectID: path.objectID indexName: path.indexName method: generated generated: '2026-09-26' - target: $.paths['/1/indexes/{indexName}/rules/{objectID}'].put update: x-apievangelist-phrasing: intent: Create or replace a search rule effect: write questions: - How do I pin a product to the top when someone searches a specific term? - Can I create a rule that's only active during a date range? instructions: - text: Save rule {objectID} on {indexName} with consequence {consequence}. slots: objectID: path.objectID indexName: path.indexName consequence: requestBody.consequence - text: Create rule {objectID} on {indexName} that applies {consequence} when {conditions}. slots: objectID: path.objectID indexName: path.indexName consequence: requestBody.consequence conditions: requestBody.conditions - text: Add rule {objectID} to {indexName} active only during {validity}. slots: objectID: path.objectID indexName: path.indexName validity: requestBody.validity method: generated generated: '2026-09-26' - target: $.paths['/1/indexes/{indexName}/rules/{objectID}'].delete update: x-apievangelist-phrasing: intent: Delete a search rule effect: destructive questions: - How can I remove one merchandising rule? - Can I delete a rule from an index and its replicas together? instructions: - text: Delete rule {objectID} from index {indexName}. slots: objectID: path.objectID indexName: path.indexName - text: Remove the search rule {objectID} from {indexName}. slots: objectID: path.objectID indexName: path.indexName method: generated generated: '2026-09-26' - target: $.paths['/1/indexes/{indexName}/rules/batch'].post update: x-apievangelist-phrasing: intent: Create or update many rules at once effect: write questions: - Can I upload a batch of search rules in a single request? - Is there a way to replace all existing rules with a new set? instructions: - text: Upload a batch of rules to index {indexName}. slots: indexName: path.indexName - text: Replace all existing rules on {indexName} with this new batch. slots: indexName: path.indexName method: generated generated: '2026-09-26' - target: $.paths['/1/indexes/{indexName}/rules/clear'].post update: x-apievangelist-phrasing: intent: Delete all rules from an index effect: destructive questions: - How do I remove every rule on an index at once? - Can I wipe all merchandising rules and start over? instructions: - text: Delete all rules from index {indexName}. slots: indexName: path.indexName - text: Clear every search rule in {indexName}. slots: indexName: path.indexName method: generated generated: '2026-09-26' - target: $.paths['/1/indexes/{indexName}/rules/search'].post update: x-apievangelist-phrasing: intent: Search an index's rules effect: read questions: - Which rules are set up on my index? - Can I find only the enabled rules that match a query? instructions: - text: List the rules on index {indexName}. slots: indexName: path.indexName - text: Search {indexName}'s rules for {query}. slots: indexName: path.indexName query: requestBody.query - text: Find rules in {indexName} with context {context}. slots: indexName: path.indexName context: requestBody.context method: generated generated: '2026-09-26' - target: $.paths['/1/dictionaries/{dictionaryName}/batch'].post update: x-apievangelist-phrasing: intent: Add or delete dictionary entries effect: write questions: - How do I add custom stop words or plurals to Algolia's dictionaries? - Can I clear existing custom dictionary entries while adding new ones? instructions: - text: 'Apply these entry changes to the {dictionaryName} dictionary: {requests}.' slots: dictionaryName: path.dictionaryName requests: requestBody.requests - text: Replace all custom entries in {dictionaryName} with {requests}. slots: dictionaryName: path.dictionaryName requests: requestBody.requests method: generated generated: '2026-09-26' - target: $.paths['/1/dictionaries/{dictionaryName}/search'].post update: x-apievangelist-phrasing: intent: Search dictionary entries effect: read questions: - Is a given word already in the stop word dictionary? - Can I look up custom and standard plural entries for a language? instructions: - text: Search the {dictionaryName} dictionary for {query}. slots: dictionaryName: path.dictionaryName query: requestBody.query - text: Find {language} entries matching {query} in {dictionaryName}. slots: language: requestBody.language query: requestBody.query dictionaryName: path.dictionaryName method: generated generated: '2026-09-26' - target: $.paths['/1/dictionaries/*/settings'].get update: x-apievangelist-phrasing: intent: Retrieve dictionary settings effect: read questions: - For which languages have I turned off the standard stop words? - What are my current dictionary settings? instructions: - text: Get my dictionary settings. - text: Show which languages have standard dictionary entries disabled. method: generated generated: '2026-09-26' - target: $.paths['/1/dictionaries/*/settings'].put update: x-apievangelist-phrasing: intent: Turn standard stop words on or off by language effect: write questions: - How do I disable Algolia's built-in stop words for French? - Can I re-enable standard dictionary entries for a language? instructions: - text: Set standard dictionary entries to {disableStandardEntries}. slots: disableStandardEntries: requestBody.disableStandardEntries - text: Turn off standard stop words for the languages in {disableStandardEntries}. slots: disableStandardEntries: requestBody.disableStandardEntries method: generated generated: '2026-09-26' - target: $.paths['/1/dictionaries/*/languages'].get update: x-apievangelist-phrasing: intent: List languages supported by dictionaries effect: read questions: - Which languages support plurals, segmentation or stop word dictionaries? - How many custom dictionary entries do I have per language? instructions: - text: List the supported dictionary languages. - text: Show each language with its dictionary types and custom entry count. method: generated generated: '2026-09-26' - target: $.paths['/1/clusters/mapping'].get update: x-apievangelist-phrasing: intent: List user IDs in a multi-cluster app effect: read questions: - Which user IDs are assigned to my clusters? - Can I page through the user-to-cluster mapping? instructions: - text: List the user IDs mapped to clusters. - text: Show page {page} of user ID assignments with {hitsPerPage} per page. slots: page: query.page hitsPerPage: query.hitsPerPage method: generated generated: '2026-09-26' - target: $.paths['/1/clusters/mapping'].post update: x-apievangelist-phrasing: intent: Assign or move a user to a cluster effect: write questions: - How do I move one user's data to a different cluster? - How long does it take to reassign a user ID to another cluster? instructions: - text: Assign user {userID} to cluster {cluster}. slots: userID: header.X-Algolia-User-ID cluster: requestBody.cluster - text: Move user ID {userID} onto cluster {cluster}. slots: userID: header.X-Algolia-User-ID cluster: requestBody.cluster method: generated generated: '2026-09-26' - target: $.paths['/1/clusters/mapping/batch'].post update: x-apievangelist-phrasing: intent: Assign many new users to a cluster effect: write questions: - Can I assign a whole list of user IDs to a cluster at once? - Does bulk assignment let me move users who are already assigned? instructions: - text: Assign users {users} to cluster {cluster}. slots: users: requestBody.users cluster: requestBody.cluster - text: Bulk-assign the user IDs {users} to {cluster} on behalf of {userID}. slots: users: requestBody.users cluster: requestBody.cluster userID: header.X-Algolia-User-ID method: generated generated: '2026-09-26' - target: $.paths['/1/clusters/mapping/top'].get update: x-apievangelist-phrasing: intent: Get the users with the most records per cluster effect: read questions: - Which users hold the most records on each cluster? - Who are the ten biggest users by record count in my multi-cluster setup? instructions: - text: Show the top user IDs by record count per cluster. - text: List the 10 largest users on each cluster. method: generated generated: '2026-09-26' - target: $.paths['/1/clusters/mapping/{userID}'].get update: x-apievangelist-phrasing: intent: Retrieve one user ID's cluster mapping effect: read questions: - Which cluster is a particular user assigned to? - How many records does one user ID have? instructions: - text: Get the mapping for user ID {userID}. slots: userID: path.userID - text: Show which cluster user {userID} lives on. slots: userID: path.userID method: generated generated: '2026-09-26' - target: $.paths['/1/clusters/mapping/{userID}'].delete update: x-apievangelist-phrasing: intent: Delete a user ID and its data effect: destructive questions: - How do I remove a user and all their data from my clusters? - Can I delete one user ID from a multi-cluster application? instructions: - text: Delete user ID {userID} from the clusters. slots: userID: path.userID - text: Remove user {userID} and their associated data. slots: userID: path.userID method: generated generated: '2026-09-26' - target: $.paths['/1/clusters'].get update: x-apievangelist-phrasing: intent: List available clusters effect: read questions: - Which clusters are available in my multi-cluster setup? - What clusters can I assign users to? instructions: - text: List my clusters. - text: Show all available clusters in this application. method: generated generated: '2026-09-26' - target: $.paths['/1/clusters/mapping/search'].post update: x-apievangelist-phrasing: intent: Search user IDs across clusters effect: read questions: - Can I search for user IDs matching a partial string? - Why don't newly assigned users show up right away when I search user IDs? instructions: - text: Search user IDs for {query}. slots: query: requestBody.query - text: Find user IDs matching {query} on cluster {clusterName}. slots: query: requestBody.query clusterName: requestBody.clusterName method: generated generated: '2026-09-26' - target: $.paths['/1/clusters/mapping/pending'].get update: x-apievangelist-phrasing: intent: Check if user migrations are still pending effect: read questions: - Is my batch user assignment or cluster migration finished? - Are there any pending user mappings right now? instructions: - text: Check whether any user mappings are still pending. - text: Show pending user migrations and the clusters involved. method: generated generated: '2026-09-26' - target: $.paths['/1/security/sources'].get update: x-apievangelist-phrasing: intent: List allowed IP sources effect: read questions: - Which IP addresses are allowed to access my application? - What's on my application's source allowlist? instructions: - text: List the allowed sources for my application. - text: Show every IP range on the access allowlist. method: generated generated: '2026-09-26' - target: $.paths['/1/security/sources'].put update: x-apievangelist-phrasing: intent: Replace the whole IP allowlist effect: destructive questions: - How do I overwrite my entire list of allowed IP sources? - Can I swap the allowlist for a new set of IP ranges in one go? instructions: - text: Replace my allowed sources with this new list. - text: Overwrite the full IP allowlist with the ranges I provide. method: generated generated: '2026-09-26' - target: $.paths['/1/security/sources/append'].post update: x-apievangelist-phrasing: intent: Add an IP source to the allowlist effect: write questions: - How do I allow one more IP address to access my app? - Can I add a description to an allowed IP range? instructions: - text: Add {source} to the allowed sources. slots: source: requestBody.source - text: Allowlist IP range {source} described as {description}. slots: source: requestBody.source description: requestBody.description method: generated generated: '2026-09-26' - target: $.paths['/1/security/sources/{source}'].delete update: x-apievangelist-phrasing: intent: Remove an IP source from the allowlist effect: destructive questions: - How do I revoke access for a single IP range? - Can I take one address off my allowed sources? instructions: - text: Remove {source} from the allowed sources. slots: source: path.source - text: Delete allowlist entry {source}. slots: source: path.source method: generated generated: '2026-09-26' - target: $.paths['/1/logs'].get update: x-apievangelist-phrasing: intent: Retrieve recent API request logs effect: read questions: - Where can I see the recent API calls made to my application? - How long are request logs kept, and can I filter to errors only? instructions: - text: Get the latest API log entries. - text: Show {length} log entries of type {type} for index {indexName}. slots: length: query.length type: query.type indexName: query.indexName method: generated generated: '2026-09-26' - target: $.paths['/1/task/{taskID}'].get update: x-apievangelist-phrasing: intent: Check an application-level task's status effect: read questions: - Has my application-wide task, like a dictionary update, finished? - What's the status of an app-level task ID? instructions: - text: Check the status of application task {taskID}. slots: taskID: path.taskID - text: Tell me if app-level task {taskID} is published. slots: taskID: path.taskID method: generated generated: '2026-09-26' - target: $.paths['/1/indexes/{indexName}/task/{taskID}'].get update: x-apievangelist-phrasing: intent: Check an indexing task's status effect: read questions: - How can I tell when my record updates have been applied to the index? - Is an indexing task still pending? instructions: - text: Check the status of task {taskID} on index {indexName}. slots: taskID: path.taskID indexName: path.indexName - text: Tell me whether indexing task {taskID} for {indexName} is done. slots: taskID: path.taskID indexName: path.indexName method: generated generated: '2026-09-26' - target: $.paths['/1/indexes/{indexName}/operation'].post update: x-apievangelist-phrasing: intent: Copy or rename an index effect: write questions: - How do I duplicate an index, or rename it, within the same application? - Can I copy only the settings and synonyms, not the records? - Does copying overwrite an existing destination index? instructions: - text: Copy index {indexName} to {destination}. slots: indexName: path.indexName destination: requestBody.destination - text: Perform {operation} of {indexName} into {destination}. slots: operation: requestBody.operation indexName: path.indexName destination: requestBody.destination - text: Copy only {scope} from {indexName} to {destination}. slots: scope: requestBody.scope indexName: path.indexName destination: requestBody.destination method: generated generated: '2026-09-26' - target: $.paths['/1/indexes'].get update: x-apievangelist-phrasing: intent: List indices effect: read questions: - Which indices exist in my Algolia application? - Can I see how many records each index has? instructions: - text: List all my indices. - text: Show page {page} of my indices, {hitsPerPage} at a time. slots: page: query.page hitsPerPage: query.hitsPerPage method: generated generated: '2026-09-26' - target: $.paths['/waitForApiKey'].get update: x-apievangelist-phrasing: intent: Wait until an API key change takes effect effect: read questions: - How do I wait until a newly created API key is usable? - Can my code block until a key update or deletion has propagated? instructions: - text: Wait for the {operation} of API key {key} to complete. slots: operation: query.operation key: query.key - text: Block until key {key} has finished being {operation}. slots: key: query.key operation: query.operation method: generated generated: '2026-09-26' - target: $.paths['/waitForTask'].get update: x-apievangelist-phrasing: intent: Wait for an indexing task to finish effect: read questions: - How can my code wait until records I added are searchable? - Is there a helper that polls until an index write is done? instructions: - text: Wait for task {taskID} on index {indexName} to finish. slots: taskID: query.taskID indexName: query.indexName - text: Poll until indexing task {taskID} in {indexName} is published. slots: taskID: query.taskID indexName: query.indexName method: generated generated: '2026-09-26' - target: $.paths['/waitForAppTask'].get update: x-apievangelist-phrasing: intent: Wait for an application-level task to finish effect: read questions: - Can I wait for an app-wide operation to complete before continuing? - Is there a helper that polls an application task until it's published? instructions: - text: Wait for application task {taskID} to complete. slots: taskID: query.taskID - text: Block until app-level task {taskID} is done. slots: taskID: query.taskID method: generated generated: '2026-09-26' - target: $.paths['/browseObjects'].get update: x-apievangelist-phrasing: intent: Export all records from an index effect: read questions: - How do I export every record in my index as a backup? - Is there a helper that handles browse pagination for me? instructions: - text: Export all records from index {indexName}. slots: indexName: query.indexName - text: Iterate through every record in {indexName} with browse parameters {browseParams}. slots: indexName: query.indexName browseParams: query.browseParams method: generated generated: '2026-09-26' - target: $.paths['/generateSecuredApiKey'].get update: x-apievangelist-phrasing: intent: Generate a secured API key locally effect: write questions: - How can I give each user a key that only sees their own records? - Can I create a restricted key on my server without calling Algolia? instructions: - text: Generate a secured key from {parentApiKey} with restrictions {restrictions}. slots: parentApiKey: query.parentApiKey restrictions: query.restrictions - text: Derive a user-scoped secured API key from parent key {parentApiKey} applying {restrictions}. slots: parentApiKey: query.parentApiKey restrictions: query.restrictions method: generated generated: '2026-09-26' - target: $.paths['/accountCopyIndex'].get update: x-apievangelist-phrasing: intent: Copy an index to another Algolia application effect: write questions: - How do I copy an index, with its rules and synonyms, to a different application? - Can I migrate an index between two Algolia accounts? instructions: - text: Copy index {sourceIndexName} to {destinationIndexName} in app {destinationAppID} using key {destinationApiKey}. slots: sourceIndexName: query.sourceIndexName destinationIndexName: query.destinationIndexName destinationAppID: query.destinationAppID destinationApiKey: query.destinationApiKey - text: Migrate {sourceIndexName} to application {destinationAppID} as {destinationIndexName} with key {destinationApiKey}. slots: sourceIndexName: query.sourceIndexName destinationAppID: query.destinationAppID destinationIndexName: query.destinationIndexName destinationApiKey: query.destinationApiKey method: generated generated: '2026-09-26' - target: $.paths['/replaceAllObjects'].get update: x-apievangelist-phrasing: intent: Replace all records without search downtime effect: destructive questions: - How do I swap in a complete new set of records without interrupting live searches? - Can I fully reindex my catalog atomically via a temporary index? instructions: - text: Replace all records in {indexName} with {objects}. slots: indexName: query.indexName objects: query.objects - text: Atomically reindex {indexName} with the new record set {objects} in batches of {batchSize}. slots: indexName: query.indexName objects: query.objects batchSize: query.batchSize method: generated generated: '2026-09-26' - target: $.paths['/replaceAllObjectsWithTransformation'].get update: x-apievangelist-phrasing: intent: Replace all records through the Push connector effect: destructive questions: - Can I replace every record while running them through my Push connector transformation? - How do I do a zero-downtime full reindex that applies my data transformation? instructions: - text: Replace all records in {indexName} with {objects} using the transformation pipeline. slots: indexName: query.indexName objects: query.objects - text: Transform and fully reindex {indexName} from {objects} via the Push connector. slots: indexName: query.indexName objects: query.objects method: generated generated: '2026-09-26' - target: $.paths['/chunkedBatch'].get update: x-apievangelist-phrasing: intent: Split a large record list into batch chunks effect: write questions: - How do I send more than 1,000 records when a batch request has a size limit? - Is there a helper that chunks my objects into multiple batch calls? instructions: - text: Chunk {objects} into batch requests for {indexName}. slots: objects: query.objects indexName: query.indexName - text: Send {objects} to {indexName} with action {action} in chunks of {batchSize}. slots: objects: query.objects indexName: query.indexName action: query.action batchSize: query.batchSize method: generated generated: '2026-09-26' - target: $.paths['/saveObjects'].get update: x-apievangelist-phrasing: intent: Save a list of records to an index effect: write questions: - What's the easiest way to add an array of records to an index? - Can the helper wait until all saved records are indexed? instructions: - text: 'Save these records to {indexName}: {objects}.' slots: indexName: query.indexName objects: query.objects - text: Add the array {objects} to {indexName} and wait for indexing to finish. slots: objects: query.objects indexName: query.indexName method: generated generated: '2026-09-26' - target: $.paths['/saveObjectsWithTransformation'].get update: x-apievangelist-phrasing: intent: Save records through the Push connector transform effect: write questions: - Can I add records that get transformed by my Push connector before indexing? - Is there a helper to push raw objects through my transformation pipeline? instructions: - text: Save {objects} to {indexName} through the transformation pipeline. slots: objects: query.objects indexName: query.indexName - text: Push raw records {objects} via the Push connector into {indexName}. slots: objects: query.objects indexName: query.indexName method: generated generated: '2026-09-26' - target: $.paths['/deleteObjects'].post update: x-apievangelist-phrasing: intent: Delete a list of records by ID effect: destructive questions: - How do I delete many records at once when I have their IDs? - Is there a helper that deletes a long list of object IDs in chunks? instructions: - text: Delete records {objectIDs} from {indexName}. slots: objectIDs: query.objectIDs indexName: query.indexName - text: Remove every object in the ID list {objectIDs} from index {indexName}. slots: objectIDs: query.objectIDs indexName: query.indexName method: generated generated: '2026-09-26' - target: $.paths['/partialUpdateObjects'].post update: x-apievangelist-phrasing: intent: Partially update a list of records effect: write questions: - Can I update a few attributes on many records in one helper call? - Will a bulk partial update create records that don't exist yet? instructions: - text: 'Partially update these records in {indexName}: {objects}.' slots: indexName: query.indexName objects: query.objects - text: 'Apply attribute changes {objects} to {indexName}, creating missing ones: {createIfNotExists}.' slots: objects: query.objects indexName: query.indexName createIfNotExists: query.createIfNotExists method: generated generated: '2026-09-26' - target: $.paths['/partialUpdateObjectsWithTransformation'].post update: x-apievangelist-phrasing: intent: Partially update records via the Push connector effect: write questions: - Can I send partial record updates through my Push connector transformation? - How do I apply transformed attribute changes to many records? instructions: - text: Partially update {objects} in {indexName} through the transformation pipeline. slots: objects: query.objects indexName: query.indexName - text: Run attribute updates {objects} through the Push connector into {indexName}. slots: objects: query.objects indexName: query.indexName method: generated generated: '2026-09-26' - target: $.paths['/indexExists'].get update: x-apievangelist-phrasing: intent: Check whether an index exists effect: read questions: - How can I check if an index exists before writing to it? - Is there a way to avoid accidentally creating a new index by typo? instructions: - text: Check if index {indexName} exists. slots: indexName: query.indexName - text: Tell me whether there's already an index named {indexName}. slots: indexName: query.indexName method: generated generated: '2026-09-26' - target: $.paths['/setClientApiKey'].get update: x-apievangelist-phrasing: intent: Switch the API key the Search client uses effect: write questions: - Can I change which API key my Search client authenticates with without recreating it? - Is it possible to rotate the key used for search and indexing calls at runtime? instructions: - text: Switch the Search client to authenticate with API key {apiKey}. slots: apiKey: query.apiKey - text: Use {apiKey} as the key for subsequent Search API requests. slots: apiKey: query.apiKey method: generated generated: '2026-09-26'