POST /v1/indexes 🔒 Bearer

Create an index

Provision a new index with a typed schema.

Creates a new index in your tenant. The schema is required up front — Skryx uses it to allocate the underlying engine collection, decide which fields are filterable/facetable, and pick the right tokenizers.

Index names must be lower-case ASCII letters, digits, hyphens or underscores ([a-z0-9_-]+). They're unique per tenant.

# Body parameters

Name Type Required Description
name string required A unique identifier within your tenant.
schema.fields array required One entry per field. See field types.
schema.default_sorting_field string optional A numeric field to sort by when no sort_by is passed.

# Field types

Type Use it for
string Titles, descriptions, names.
int32 / int64 Counts, identifiers, timestamps.
float Prices, ratings, weights.
bool in_stock, is_featured.
string[] / int32[] / float[] Multi-valued attributes (tags, categories).

Add facet: true to make a field aggregable for faceted search.

# Response

{
  "data": {
    "id": 42,
    "name": "products",
    "schema": { "fields": [ ... ] },
    "records_count": 0,
    "status": "active",
    "created_at": "2026-05-23T08:14:12Z"
  }
}
esc
POST /v1/indexes