Manticore Search Index API
Operations regarding adding, updating or deleting documents
Operations regarding adding, updating or deleting documents
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/manticore-index-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
openapi: 3.1.0
info:
title: Manticore Search Client Index API
description: 'Сlient for Manticore Search.
'
version: 5.0.0
contact:
name: Manticore Software Ltd.
email: info@manticoresearch.com
url: https://manticoresearch.com/contact-us/
license:
name: MIT
url: http://opensource.org/licenses/MIT
servers:
- description: Default Manticore Search HTTP
url: http://127.0.0.1:9308/
tags:
- name: Index
description: Operations regarding adding, updating or deleting documents
paths:
/bulk:
post:
summary: Bulk table operations
description: "Sends multiple operatons like inserts, updates, replaces or deletes. \nFor each operation it's object must have same format as in their dedicated method. \nThe method expects a raw string as the batch in NDJSON.\n Each operation object needs to be serialized to \n JSON and separated by endline (\\n). \n \n An example of raw input:\n \n ```\n {\"insert\": {\"table\": \"movies\", \"doc\": {\"plot\": \"A secret team goes to North Pole\", \"rating\": 9.5, \"language\": [2, 3], \"title\": \"This is an older movie\", \"lon\": 51.99, \"meta\": {\"keywords\":[\"travel\",\"ice\"],\"genre\":[\"adventure\"]}, \"year\": 1950, \"lat\": 60.4, \"advise\": \"PG-13\"}}}\n \\n\n {\"delete\": {\"table\": \"movies\",\"id\":700}}\n ```\n \n Responds with an object telling whenever any errors occured and an array with status for each operation:\n \n ```\n {\n 'items':\n [\n {\n 'update':{'table':'products','id':1,'result':'updated'}\n },\n {\n 'update':{'table':'products','id':2,'result':'updated'}\n }\n ],\n 'errors':false\n }\n ```\n"
operationId: bulk
tags:
- Index
externalDocs:
url: https://manual.manticoresearch.com/Updating_documents/UPDATE
requestBody:
required: true
content:
application/x-ndjson:
schema:
type: string
responses:
'200':
description: item updated
content:
application/json:
schema:
$ref: '#/components/schemas/bulkResponse'
default:
description: error
content:
application/json:
schema:
$ref: '#/components/schemas/errorResponse'
/delete:
post:
summary: Delete a document in a table
operationId: delete
description: "Delete one or several documents.\nThe method has 2 ways of deleting: either by id, in case only one document is deleted or by using a match query, in which case multiple documents can be delete .\nExample of input to delete by id:\n\n ```\n {'table':'movies','id':100}\n ```\n\nExample of input to delete using a query:\n\n ```\n {\n 'table':'movies',\n 'query':\n {\n 'bool':\n {\n 'must':\n [\n {'query_string':'new movie'}\n ]\n }\n }\n }\n ```\n\nThe match query has same syntax as in for searching.\nResponds with an object telling how many documents got deleted: \n\n ```\n {'table':'products','updated':1}\n ```\n"
tags:
- Index
externalDocs:
url: https://manual.manticoresearch.com/Updating_documents/UPDATE
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/deleteDocumentRequest'
example:
table: test
query:
match:
title: apple
responses:
'200':
description: item updated
content:
application/json:
schema:
$ref: '#/components/schemas/deleteResponse'
default:
description: error
content:
application/json:
schema:
$ref: '#/components/schemas/errorResponse'
/insert:
post:
summary: Create a new document in a table
x-is_indexapi: true
x-is_insert: true
operationId: insert
description: "Insert a document. \nExpects an object like:\n \n ```\n {\n 'table':'movies',\n 'id':701,\n 'doc':\n {\n 'title':'This is an old movie',\n 'plot':'A secret team goes to North Pole',\n 'year':1950,\n 'rating':9.5,\n 'lat':60.4,\n 'lon':51.99,\n 'advise':'PG-13',\n 'meta':'{\"keywords\":{\"travel\",\"ice\"},\"genre\":{\"adventure\"}}',\n 'language':[2,3]\n }\n }\n ```\n \nThe document id can also be missing, in which case an autogenerated one will be used:\n \n ```\n {\n 'table':'movies',\n 'doc':\n {\n 'title':'This is a new movie',\n 'plot':'A secret team goes to North Pole',\n 'year':2020,\n 'rating':9.5,\n 'lat':60.4,\n 'lon':51.99,\n 'advise':'PG-13',\n 'meta':'{\"keywords\":{\"travel\",\"ice\"},\"genre\":{\"adventure\"}}',\n 'language':[2,3]\n }\n }\n ```\n \nIt responds with an object in format:\n \n ```\n {'table':'products','id':701,'created':true,'result':'created','status':201}\n ```\n"
tags:
- Index
externalDocs:
url: https://manual.manticoresearch.com/Adding_documents_to_a_table/Adding_documents_to_a_real-time_table#Adding-documents-to-a-real-time-table
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/insertDocumentRequest'
example:
table: test
id: 1
doc:
title: sample title
gid: 10
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/successResponse'
default:
description: error
content:
application/json:
schema:
$ref: '#/components/schemas/errorResponse'
/replace:
post:
summary: Replace new document in a table
x-is_indexapi: true
x-is_replace: true
operationId: replace
description: "Replace an existing document. Input has same format as `insert` operation.\nResponds with an object in format:\n\n ```\n {'table':'products','id':1,'created':false,'result':'updated','status':200}\n ```\n"
tags:
- Index
externalDocs:
url: https://manual.manticoresearch.com/Adding_documents_to_a_table/Adding_documents_to_a_real-time_table#Adding-documents-to-a-real-time-table
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/insertDocumentRequest'
example:
table: test
id: 1
doc:
title: updated title
gid: 15
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/successResponse'
default:
description: error
content:
application/json:
schema:
$ref: '#/components/schemas/errorResponse'
/update:
post:
summary: Update a document in a table
x-is_indexapi: true
x-is_update: true
x-is_modify: true
operationId: update
description: "Update one or several documents.\nThe update can be made by passing the id or by using a match query in case multiple documents can be updated. For example update a document using document id:\n\n ```\n {'table':'movies','doc':{'rating':9.49},'id':100}\n ```\n\nAnd update by using a match query:\n\n ```\n {\n 'table':'movies',\n 'doc':{'rating':9.49},\n 'query':\n {\n 'bool':\n {\n 'must':\n [\n {'query_string':'new movie'}\n ]\n }\n }\n }\n ``` \n\nThe match query has same syntax as for searching.\nResponds with an object that tells how many documents where updated in format: \n\n ```\n {'table':'products','updated':1}\n ```\n"
tags:
- Index
externalDocs:
url: https://manual.manticoresearch.com/Updating_documents/UPDATE
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/updateDocumentRequest'
example:
table: test
doc:
gid: 20
query:
equals:
cat_id: 2
responses:
'200':
description: item updated
content:
application/json:
schema:
$ref: '#/components/schemas/updateResponse'
default:
description: error
content:
application/json:
schema:
$ref: '#/components/schemas/errorResponse'
/{table}/_update/{id}:
post:
summary: Partially replaces a document in a table
operationId: partial_replace
description: "Partially replaces a document with given id in a table\nResponds with an object of the following format: \n\n ```\n {'table':'products','updated':1}\n ```\n"
tags:
- Index
externalDocs:
url: https://manual.manticoresearch.com/Updating_documents/REPLACE#JSON-REPLACE
parameters:
- in: path
name: table
schema:
type: string
required: true
description: Name of the percolate table
- in: path
name: id
schema:
type: integer
format: uint64
required: true
description: Id of the document to replace
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/replaceDocumentRequest'
example:
doc:
price: 20
responses:
'200':
description: item updated
content:
application/json:
schema:
$ref: '#/components/schemas/updateResponse'
default:
description: error
content:
application/json:
schema:
$ref: '#/components/schemas/errorResponse'
components:
schemas:
boolFilter:
type: object
properties:
must:
type: array
items:
$ref: '#/components/schemas/queryFilter'
description: Query clauses that must match for the document to be included
must_not:
type: array
items:
$ref: '#/components/schemas/queryFilterAlias1'
description: Query clauses that must not match for the document to be included
should:
type: array
items:
$ref: '#/components/schemas/queryFilterAlias2'
description: Query clauses that should be matched, but are not required
additionalProperties: false
updateDocumentRequest:
type: object
description: Payload for updating a document or multiple documents in a table
required:
- table
- doc
properties:
table:
type: string
description: Name of the document table
cluster:
type: string
description: Name of the document cluster
doc:
type: object
description: Object containing the document fields to update
additionalProperties: true
example:
gid: 10
id:
type: integer
format: uint64
description: Document ID
query:
oneOf:
- type: null
- $ref: '#/components/schemas/queryFilter'
description: Object defining conditions to perform the updates
example:
query:
match:
title: match me
bulkResponse:
type: object
description: Success response for bulk search requests
properties:
items:
type: array
items:
type: object
description: List of results
errors:
type: boolean
description: Errors occurred during the bulk operation
error:
type: string
description: Error message describing an error if such occurred
current_line:
type: integer
description: Number of the row returned in the response
skipped_lines:
type: integer
description: Number of rows skipped in the response
queryFilterAlias2:
$ref: '#/components/schemas/queryFilter'
responseErrorText:
type: string
description: Error message text returned in case of an error
responseErrorDetails:
type: object
description: Detailed error information returned in case of an error response
required:
- type
properties:
type:
type: string
description: Type or category of the error
reason:
type:
- string
- 'null'
description: Detailed explanation of why the error occurred
table:
type:
- string
- 'null'
description: The table related to the error, if applicable
responseError:
oneOf:
- $ref: '#/components/schemas/responseErrorDetails'
- $ref: '#/components/schemas/responseErrorText'
insertDocumentRequest:
type: object
description: 'Object containing data for inserting a new document into the table
'
required:
- table
- doc
properties:
table:
type: string
description: Name of the table to insert the document into
cluster:
type: string
description: Name of the cluster to insert the document into
id:
type: integer
format: uint64
description: 'Document ID. If not provided, an ID will be auto-generated
'
doc:
type: object
additionalProperties: true
description: 'Object containing document data
'
example:
table: test
doc:
title: This is some title
gid: 100
deleteDocumentRequest:
type: object
description: 'Payload for delete request.
Documents can be deleted either one by one by specifying the document id or by providing a query object.
For more information see [Delete API](https://manual.manticoresearch.com/Deleting_documents)
'
required:
- table
properties:
table:
type: string
description: Table name
cluster:
type: string
description: Cluster name
id:
type: integer
format: uint64
description: The ID of document for deletion
query:
type: object
description: Defines the criteria to match documents for deletion
example:
table: test
id: 1
queryFilter:
allOf:
- $ref: '#/components/schemas/fulltextFilter'
- type: object
properties:
bool:
$ref: '#/components/schemas/boolFilter'
equals:
type: {}
description: Filter to match exact attribute values.
in:
type: object
description: Filter to match a given set of attribute values.
range:
type: object
description: Filter to match a given range of attribute values passed in Range objects
geo_distance:
$ref: '#/components/schemas/geoDistance'
additionalProperties: false
description: Object used to apply various conditions, such as full-text matching or attribute filtering, to a search query
fulltextFilter:
type: object
properties:
query_string:
type: string
description: Filter object defining a query string
match:
type: object
description: Filter object defining a match keyword passed as a string or in a Match object
match_phrase:
type: object
description: Filter object defining a match phrase
match_all:
type: object
description: Filter object to select all documents
additionalProperties: false
description: Defines a type of filter for full-text search queries
replaceDocumentRequest:
type: object
description: Object containing the document data for replacing an existing document in a table.
required:
- doc
properties:
doc:
type: object
additionalProperties: true
description: Object containing the new document data to replace the existing one.
example:
doc:
title: This is some title
gid: 100
errorResponse:
type: object
description: Error response object containing information about the error and a status code
required:
- error
properties:
error:
$ref: '#/components/schemas/responseError'
status:
type: integer
description: HTTP status code of the error response
default: 500
example:
status: 500
error: an error occured
successResponse:
type: object
description: Response object indicating the success of an operation, such as inserting or updating a document
properties:
table:
type: string
description: Name of the document table
id:
type: integer
format: uint64
description: ID of the document affected by the request operation
created:
type: boolean
description: Indicates whether the document was created as a result of the operation
result:
type: string
description: Result of the operation, typically 'created', 'updated', or 'deleted'
found:
type: boolean
description: Indicates whether the document was found in the table
status:
type: integer
description: HTTP status code representing the result of the operation
example:
table: test
id: 1
result: created
created: true
status: 201
geoDistance:
type: object
properties:
location_anchor:
type: object
description: Specifies the location of the pin point used for search
properties:
lat:
type: number
description: Latitude of the anchor point
lon:
type: number
description: Longitude of the anchor point
additionalProperties: false
location_source:
type: string
description: Field name in the document that contains location data
distance_type:
type: string
enum:
- adaptive
- haversine
description: Algorithm used to calculate the distance
distance:
type: string
pattern: /^\.+(km|m|cm|mm|mi|yd|ft|in|NM|nmi|kilometers|meters|centimeters|millimeters|miles|yards|foots|inches|nauticalmiles|)$/
description: The distance from the anchor point to filter results by
additionalProperties: false
description: Object to perform geo-distance based filtering on queries
deleteResponse:
type: object
description: Response object for successful delete request
properties:
table:
type: string
description: The name of the table from which the document was deleted
deleted:
type: integer
description: Number of documents deleted
id:
type: integer
format: uint64
description: The ID of the deleted document. If multiple documents are deleted, the ID of the first deleted document is returned
found:
type: boolean
description: Indicates whether any documents to be deleted were found
result:
type: string
description: Result of the delete operation, typically 'deleted'
example:
table: test
deleted: 29
updateResponse:
type: object
description: Success response returned after updating one or more documents
properties:
table:
type: string
description: Name of the document table
updated:
type: integer
description: Number of documents updated
id:
type: integer
format: uint64
description: Document ID
result:
type: string
description: Result of the update operation, typically 'updated'
example:
table: test
updated: 29
queryFilterAlias1:
$ref: '#/components/schemas/queryFilter'
externalDocs:
description: Find out more about Manticore Search
url: https://manticoresearch.com/