Antfly
Antfly provides a self‑learning retrieval engine for AI agents, enabling hybrid search over user‑owned data sources such as PostgreSQL, S3, and file systems. It offers built‑in vector embeddings, reranking, multimodal support (text, images, audio, video), and a knowledge graph, all running locally or in the Antfly Cloud. The platform is open‑source, free for self‑hosted use, and includes managed growth and enterprise plans with RBAC, SSO, autoscaling, and unlimited queries.
Antfly publishes 20 API contracts indexed on the APIs.io network, including AI API, Cluster Management API, Data Operations API, and 17 more. Tagged areas include AI, Search, Retrieval, Vector, and Hybrid.
The Antfly catalog on APIs.io includes 1 event-driven AsyncAPI specification, 1 JSON-LD context, and 1 Spectral governance ruleset.
Antfly’s developer surface includes changelog, authentication, documentation, API reference, getting-started guide, engineering blog, pricing, and 23 more developer resources.
1 published contract
Individual APIs this provider publishes, each with its own machine-readable definition.
Published pricing tiers and plan structures.
AsyncAPI definitions for this provider's event-driven and streaming APIs.
JSON-LD contexts and semantic vocabularies used across these APIs.
Spectral governance rulesets for linting and validating these APIs.
Standalone JSON Schema definitions for this provider's data models.
Authentication, domain security, vulnerability disclosure, and trust-center signals.
Recommended x-agentic-access execution contracts for AI agents.
aid: antfly
name: Antfly
description: Antfly provides a self‑learning retrieval engine for AI agents, enabling hybrid search over user‑owned data sources
such as PostgreSQL, S3, and file systems. It offers built‑in vector embeddings, reranking, multimodal support (text, images,
audio, video), and a knowledge graph, all running locally or in the Antfly Cloud. The platform is open‑source, free for
self‑hosted use, and includes managed growth and enterprise plans with RBAC, SSO, autoscaling, and unlimited queries.
url: https://artifacts.apis.io/antfly/apis.yml
image: https://antfly.io/af-logo.svg
x-type: company
x-source: harvest:vc-portfolio
x-tier: profiled
x-tier-reason: enrichment pass 2026-10-29 (modular-v1; was harvest)
specificationVersion: '0.20'
created: '2026-10-29'
modified: '2026-10-29'
tags:
- AI
- Search
- Retrieval
- Vector
- Hybrid
maintainers:
- FN: Kin Lane
email: kin@apievangelist.com
- FN: APIs.json
email: info@apis.io
common:
- type: AgenticAccess
url: agentic-access/antfly-agentic-access.yml
- type: Plans
url: plans/antfly-plans-pricing.yml
- type: Spectral
url: rules/antfly-rules.yml
- type: JSONLD
url: json-ld/antfly-context.jsonld
- type: Vocabulary
url: vocabulary/antfly-vocabulary.yml
- type: AgentSkill
url: skills/_index.yml
- type: Webhooks
url: asyncapi/antfly-webhooks.yml
- type: DataModel
url: data-model/antfly-data-model.yml
- type: ChangeLog
url: changelog/antfly-changelog.yml
- type: Idempotency
url: conventions/antfly-conventions.yml
- type: Conventions
url: conventions/antfly-conventions.yml
- type: ErrorCatalog
url: errors/antfly-problem-types.yml
- type: Conformance
url: conformance/antfly-conformance.yml
- type: Hosts
url: hosts/antfly-hosts.yml
- type: Vendors
url: vendors/antfly-vendors.yml
- type: SDKs
url: packages/antfly-packages.yml
- type: Packages
url: packages/antfly-packages.yml
- type: Leadership
url: https://antfly.io/team
- type: ChangeLog
url: https://antfly.io/releases
- type: Authentication
url: authentication/antfly-authentication.yml
- type: DomainSecurity
url: security/antfly-domain-security.yml
- type: Website
url: https://www.antfly.io
- type: Documentation
url: https://antfly.io/docs
- type: APIReference
url: https://antfly.io/docs/api
- type: GettingStarted
url: https://antfly.io/docs/guides/quickstart
- type: Blog
url: https://antfly.io/thoughts
- type: GitHubOrganization
url: https://github.com/antflydb/antfly
- type: Pricing
url: https://antfly.io/pricing
- type: TermsOfService
url: https://antfly.io/terms
- type: PrivacyPolicy
url: https://antfly.io/privacy
apis:
- aid: antfly:antfly-ai-api
name: Antfly AI API
description: The Ai API from Antfly — 24 operation(s) for ai.
humanURL: https://antfly.io/docs/api
baseURL: https://api.antfly.io
tags:
- Ai
properties:
- type: OpenAPI
url: openapi/antfly-ai-api-openapi.yml
- type: JSONSchema
url: json-schema/antfly-memory-recall-result-schema.json
- type: JSONSchema
url: json-schema/antfly-memory-inspection-schema.json
- type: JSONSchema
url: json-schema/antfly-memory-record-page-schema.json
- type: JSONSchema
url: json-schema/antfly-memory-record-schema.json
- type: JSONSchema
url: json-schema/antfly-memory-relationship-proposal-schema.json
- type: JSONSchema
url: json-schema/antfly-inference-generate-request-schema.json
- aid: antfly:antfly-cluster-management-api
name: Antfly Cluster Management API
description: 'Monitor and manage your Antfly cluster''s health and status.
## Cluster Health
The cluster health endpoint provides real-time status of all stores and shards:
- **healthy**: All nodes and shards operational
- **degraded**: Some shards unavailable but cluster functional
- **unhealthy**: Critical failures affecting availability
- **error**: Cluster-wide failures
## Monitoring
- Health check endpoint: `GET /healthz`
- Prometheus metrics: `GET /metrics` on port 4200
Use these endpoints to integrate with monitoring systems and alerting infrastructure.'
humanURL: https://antfly.io/docs/api
baseURL: https://api.antfly.io
tags:
- cluster_management
properties:
- type: OpenAPI
url: openapi/antfly-cluster-management-api-openapi.yml
- type: JSONSchema
url: json-schema/antfly-memory-recall-result-schema.json
- type: JSONSchema
url: json-schema/antfly-memory-inspection-schema.json
- type: JSONSchema
url: json-schema/antfly-memory-record-page-schema.json
- type: JSONSchema
url: json-schema/antfly-memory-record-schema.json
- type: JSONSchema
url: json-schema/antfly-memory-relationship-proposal-schema.json
- type: JSONSchema
url: json-schema/antfly-inference-generate-request-schema.json
- aid: antfly:antfly-data-operations-api
name: Antfly Data Operations API
description: "Perform data operations including batch inserts/deletes, linear merge sync,\nbackup/restore, and individual\
\ key lookups.\n\n## Batch Operations\n\nEfficiently insert or delete multiple documents in a single request. The batch\n\
endpoint accepts both inserts (map of key-value pairs) and deletes (array of keys).\n\n## Distributed Transactions\n\n\
Antfly provides atomic cross-shard write transactions using a coordinator-based\n2-phase commit (2PC) protocol. When a\
\ batch operation spans multiple shards, Antfly\nautomatically executes it as a distributed transaction.\n\n**How it works:**\n\
1. Metadata server allocates HLC timestamp and selects coordinator shard\n2. Coordinator writes transaction record, participants\
\ write intents\n3. After all intents succeed, coordinator commits transaction\n4. Participants are notified asynchronously\
\ to resolve intents\n5. Recovery loop ensures notifications complete even after coordinator failure\n\n**Features:**\n\
- **Automatic**: No special API required - just use the batch endpoint\n- **Atomic**: All writes across all shards commit\
\ or abort together\n- **Recoverable**: Coordinator failures are handled via recovery loops\n- **Efficient**: ~20ms latency\
\ for cross-shard transactions\n\n**Performance:**\n- Single-shard batches: < 5ms latency\n- Cross-shard transactions:\
\ ~20ms latency\n- Intent resolution: < 30 seconds worst-case (via recovery loop)\n\n**Guarantees:**\n- All writes succeed\
\ or all fail (atomicity)\n- Coordinator failure is recoverable (new leader resumes notifications)\n- Idempotent resolution\
\ (duplicate notifications are safe)\n\n**Use Cases:**\n- Updating related records across shards (e.g., user profile +\
\ preferences)\n- Multi-table inserts that must succeed together\n- Bulk imports requiring all-or-nothing semantics\n\n\
## Linear Merge (Data Sync)\n\nSynchronize and keep Antfly in sync with external data sources like Shopify,\nPostgres,\
\ S3, or any sorted record source. Also known as: data synchronization,\ndatabase sync, incremental sync, e-commerce sync.\n\
\nBoth source and Antfly must be sorted by the same key. Performs three-way merge:\ninserts new records, updates changed\
\ records, deletes records absent from source.\n\n**How it works:**\n1. Query external source with pagination (sorted\
\ by key)\n2. Send sorted page to linear merge endpoint\n3. Antfly merges: upserts present records, deletes Antfly records\
\ absent from page\n4. Repeat for next page - no sync state required between pages\n\n**Use Cases:**\n\n- **Postgres/MySQL**:\
\ `SELECT * FROM products ORDER BY id LIMIT 1000 OFFSET 0`\n - Sync production DB to Antfly for hybrid search\n - Run\
\ periodically (hourly/daily) to stay in sync\n\n- **Shopify API**: `GET /admin/api/2024-01/products.json?order=id&limit=250`\n\
\ - Sync e-commerce catalog with cursor pagination\n - Antfly becomes searchable product index\n\n- **S3 Data Lake**:\
\ Sorted JSON files (`data/0001.json`, `data/0002.json`, ...)\n - Batch import from data warehouse exports\n - Process\
\ files in order, send contents page by page\n\n- **Databricks**: `SELECT * FROM delta_table ORDER BY key LIMIT 10000`\n\
\ - Sync data warehouse tables to Antfly\n - Enable low-latency search over warehouse data\n\n**Benefits:**\n- **Stateless**:\
\ No cursors or checkpoints - restart from any page\n- **Idempotent**: Safe to re-run if interrupted\n- **Efficient**:\
\ Stream comparison, no random access needed\n\n**WARNING**: Not safe for concurrent merges with overlapping ranges.\n\
Single-client sync API only.\n\n## Backup and Restore\n\nCreate backups to various storage backends:\n- `file:///path/to/backup`\
\ - Local filesystem\n- `s3://bucket/path` - Amazon S3\n\nRestore operations rebuild tables from backup snapshots.\n\n\
## Key Lookups\n\nDirect key-value lookups for retrieving individual documents by their unique key."
humanURL: https://antfly.io/docs/api
baseURL: https://api.antfly.io
tags:
- data_operations
properties:
- type: OpenAPI
url: openapi/antfly-data-operations-api-openapi.yml
- type: JSONSchema
url: json-schema/antfly-memory-recall-result-schema.json
- type: JSONSchema
url: json-schema/antfly-memory-inspection-schema.json
- type: JSONSchema
url: json-schema/antfly-memory-record-page-schema.json
- type: JSONSchema
url: json-schema/antfly-memory-record-schema.json
- type: JSONSchema
url: json-schema/antfly-memory-relationship-proposal-schema.json
- type: JSONSchema
url: json-schema/antfly-inference-generate-request-schema.json
- aid: antfly:antfly-documents-api
name: Antfly Documents API
description: The Documents API from Antfly — 12 operation(s) for documents.
humanURL: https://antfly.io/docs/api
baseURL: https://api.antfly.io
tags:
- Documents
properties:
- type: OpenAPI
url: openapi/antfly-documents-api-openapi.yml
- type: JSONSchema
url: json-schema/antfly-memory-recall-result-schema.json
- type: JSONSchema
url: json-schema/antfly-memory-inspection-schema.json
- type: JSONSchema
url: json-schema/antfly-memory-record-page-schema.json
- type: JSONSchema
url: json-schema/antfly-memory-record-schema.json
- type: JSONSchema
url: json-schema/antfly-memory-relationship-proposal-schema.json
- type: JSONSchema
url: json-schema/antfly-inference-generate-request-schema.json
- aid: antfly:antfly-index-management-api
name: Antfly Index Management API
description: "Create and manage indexes for full-text search, vector similarity search, and multimodal content.\n\n## Index\
\ Types\n\nAntfly supports two primary index types:\n\n### `full_text` - Full-Text Search Index\nBM25-based full-text\
\ search using Antfly's native Zig full-text index (a segmented, Lucene-style inverted index). Automatically uses schema\
\ information for field mappings.\n\n**Configuration**:\n```json\n{\n \"type\": \"full_text\",\n \"name\": \"search_idx\"\
,\n \"mem_only\": false\n}\n```\n\n**Options**:\n- `mem_only` (optional): If true, stores index in memory only (useful\
\ for testing)\n\n**Features**:\n- BM25 ranking algorithm\n- Field-specific queries (`title:computer`)\n- Boolean operators\
\ (`AND`, `OR`, `NOT`)\n- Range queries (`year:>2020`)\n- Phrase queries (`\"exact phrase\"`)\n- Uses schema's `x-antfly-types`\
\ for field analyzers\n- Respects `x-antfly-include-in-all` for cross-field search\n\n### `embeddings` - Vector Similarity\
\ Index\nApproximate k-nearest neighbors (AKNN) index for semantic similarity search using vector embeddings.\n\n**Performance\
\ Features**:\n- Hardware-accelerated distance calculations using SIMD instructions\n- x86/AMD: AVX2 and AVX-512 optimizations\
\ for vector operations\n- ARM: NEON and SME (Scalable Matrix Extension) acceleration\n- RaBitQ quantization for reduced\
\ memory footprint and faster search\n- No GPU required - optimized for CPU-based deployments\n\n**Basic Configuration**:\n\
```json\n{\n \"type\": \"embeddings\",\n \"name\": \"embedding_idx\",\n \"field\": \"description\",\n \"embedder\"\
: {\n \"provider\": \"ollama\",\n \"model\": \"all-minilm\",\n \"url\": \"http://localhost:11434\"\n }\n}\n\
```\n\n**Index Modes**:\n\n**Managed indexes** (`external: false`, default)\n- Antfly owns embedding generation\n- Must\
\ specify `field` or `template`\n- Must specify `embedder`\n- Reject manual `_embeddings` writes for that index\n\n**External\
\ indexes** (`external: true`)\n- Your application owns embedding generation\n- Must not specify `field`, `template`,\
\ or `embedder`\n- Dense external indexes must specify `dimension`\n- Vectors are written directly through the document\
\ `_embeddings` field\n\n**Managed Index Fields**:\n- `field`: Field to embed using JSONPath syntax (e.g., `\"description\"\
`, `\"metadata.content\"`, `\"$.user.bio\"`)\n- `template`: Handlebars template for custom prompt generation\n- `embedder`:\
\ Embedder configuration for generating vectors\n- `dimension`: Optional for dense indexes; inferred from the embedder\
\ if omitted\n- `mem_only`: Store index in memory only\n\n**External Index Fields**:\n- `external: true`\n- `dimension`:\
\ Required for dense indexes\n- `sparse: true`: Use sparse vectors supplied through `_embeddings`\n\n**External Dense\
\ Example**:\n```json\n{\n \"type\": \"embeddings\",\n \"name\": \"manual_dense_idx\",\n \"external\": true,\n \"\
dimension\": 384\n}\n```\n\n**External Sparse Example**:\n```json\n{\n \"type\": \"embeddings\",\n \"name\": \"manual_sparse_idx\"\
,\n \"external\": true,\n \"sparse\": true\n}\n```\n\n**Writing Manual Embeddings**:\n- Manual `_embeddings` writes\
\ are only accepted for `external: true` indexes\n- Dense vectors use arrays: `\"_embeddings\": { \"manual_dense_idx\"\
: [0.1, 0.2, 0.3] }`\n- Sparse vectors use token-weight maps: `\"_embeddings\": { \"manual_sparse_idx\": { \"7\": 1.5,\
\ \"42\": 2.0 } }`\n- Explicit delete uses `null`: `\"_embeddings\": { \"manual_dense_idx\": null }`\n- Omitting `_embeddings[<index>]`\
\ is a no-op; it does not delete the stored vector\n\n## Embedder Providers\n\nManaged index creation supports `antfly`,\
\ `ollama`, `openai`, and `bedrock`\nthrough the purpose-specific `IndexEmbedderConfig`. Other providers in the\nbroader\
\ `EmbedderConfig` are available only on surfaces whose runtime can\nexecute them.\n\n### Antfly Inference\n```json\n\
{\n \"provider\": \"antfly\",\n \"model\": \"BAAI/bge-small-en-v1.5\"\n}\n```\n\n### Ollama (Local Models)\n```json\n\
{\n \"provider\": \"ollama\",\n \"model\": \"all-minilm\",\n \"url\": \"http://localhost:11434\"\n}\n```\nPopular models:\
\ `all-minilm`, `nomic-embed-text`, `mxbai-embed-large`\n\n### OpenAI\n```json\n{\n \"provider\": \"openai\",\n \"model\"\
: \"text-embedding-3-small\",\n \"api_key\": \"sk-...\"\n}\n```\nModels: `text-embedding-3-small` (1536d), `text-embedding-3-large`\
\ (3072d), `text-embedding-ada-002` (1536d)\n\n### AWS Bedrock\n```json\n{\n \"provider\": \"bedrock\",\n \"model\"\
: \"amazon.titan-embed-text-v1\",\n \"region\": \"us-east-1\"\n}\n```\nModels: `amazon.titan-embed-text-v1`, `amazon.titan-embed-text-v2`,\
\ `cohere.embed-english-v3`, `cohere.embed-multilingual-v3`\n\n## Multimodal Indexing\n\n`EmbeddingsIndexConfig` does\
\ not accept a `summarizer`. For two-stage\nmultimodal indexing, generate a textual description into a document field\n\
before indexing and configure the managed index against that field. If the\napplication already owns the final vectors,\
\ use an `external: true` index\nand write them through `_embeddings`.\n\n## Template-Based Prompts\n\nCustomize how documents\
\ are converted to text before embedding using Handlebars templates:\n\n```json\n{\n \"type\": \"embeddings\",\n \"\
dimension\": 384,\n \"field\": \"description\",\n \"template\": \"Product: {{title}}\\nCategory: {{category}}\\nDescription:\
\ {{description}}\",\n \"embedder\": {\n \"provider\": \"ollama\",\n \"model\": \"all-minilm\"\n }\n}\n```\n\n\
**Template System:**\n- **Syntax**: Handlebars templating (https://handlebarsjs.com/guide/)\n- **Caching**: Templates\
\ are automatically cached with configurable TTL (default: 5 minutes)\n- **Context**: Templates receive the full document\
\ as context\n\n**Basic Syntax:**\n- `{{fieldName}}`: Insert field value\n- `{{#if field}}...{{/if}}`: Conditional logic\n\
- `{{#each array}}...{{/each}}`: Iterate arrays\n- `{{#unless condition}}...{{/unless}}`: Inverse conditional\n- `{{@index}}`,\
\ `{{@key}}`, `{{@first}}`, `{{@last}}`: Loop variables\n\n**Built-in Helpers:**\n\n1. **scrubHtml** - Remove script/style\
\ tags and extract clean text from HTML\n ```handlebars\n {{scrubHtml html_content}}\n ```\n - Removes `<script>`\
\ and `<style>` tags\n - Adds newlines after block elements (p, div, h1-h6, li, etc.)\n - Returns plain text with\
\ preserved readability\n\n2. **eq** - Equality comparison for conditionals\n ```handlebars\n {{#if (eq status \"\
active\")}}Active{{/if}}\n {{#if (eq @key \"special\")}}Special field{{/if}}\n ```\n\n3. **media** - GenKit dotprompt\
\ media directive for multimodal content\n ```handlebars\n {{media url=imageDataURI}}\n {{media url=this.image_url}}\n\
\ {{media url=\"https://example.com/image.jpg\"}}\n {{media url=\"s3://endpoint/bucket/image.png\"}}\n {{media url=\"\
file:///path/to/image.jpg\"}}\n ```\n\n **Supported URL Schemes:**\n - `data:` - Base64 encoded data URIs (e.g.,\
\ `data:image/jpeg;base64,...`)\n - `http://` / `https://` - Web URLs with automatic content type detection\n - `file://`\
\ - Local filesystem paths\n - `s3://` - S3-compatible storage (format: `s3://endpoint/bucket/key`)\n\n **Automatic\
\ Content Processing:**\n - **Images**: Downloaded, resized (if needed), converted to data URIs\n - **PDFs**: Text\
\ extracted or first page rendered as image\n - **HTML**: Readable text extracted using Mozilla Readability\n\n **Security\
\ Controls:**\n Downloads are protected by content security settings:\n - Allowed host whitelist\n - Private IP\
\ blocking (prevents SSRF attacks)\n - Download size limits (default: 100MB)\n - HTTP downloads time out after 30\
\ seconds by default; zero disables the deadline\n - Image dimension limits (default: 2048px, auto-resized)\n\n See:\
\ https://antfly.io/docs/configuration#security--cors\n\n4. **encodeToon** is not available in these templates. It is\
\ a helper of the\n retrieval agent's `document_renderer`, which renders documents into the\n generation prompt as\
\ TOON by default.\n\nWithout a template, the `field` value is used directly, or the entire document is serialized.\n\n\
## Field Extraction with JSONPath\n\nThe `field` parameter supports JSONPath syntax for extracting values from nested\
\ document structures:\n\n```json\n{\n \"type\": \"embeddings\",\n \"field\": \"metadata.description\",\n \"embedder\"\
: {\"provider\": \"ollama\", \"model\": \"all-minilm\"}\n}\n```\n\n**JSONPath Examples**:\n- `\"title\"` - Top-level field\n\
- `\"user.bio\"` - Nested field (auto-prepends `$.` if not present)\n- `\"$.metadata.content\"` - Explicit JSONPath\n\
- `\"$.items[0].name\"` - Array indexing\n\nThe extracted value must be a string. Use `template` for complex transformations\
\ or combining multiple fields.\n\n## Configuration Examples\n\n### Simple Text Embedding\n```json\n{\n \"type\": \"\
embeddings\",\n \"field\": \"content\",\n \"embedder\": {\n \"provider\": \"ollama\",\n \"model\": \"all-minilm\"\
\n }\n}\n```\nNote: `dimension` is omitted and will be inferred from the `all-minilm` model (384).\n\n### Text Embedding\
\ with Custom Template\n```json\n{\n \"type\": \"embeddings\",\n \"dimension\": 1536,\n \"template\": \"{{title}}:\
\ {{description}}\",\n \"embedder\": {\n \"provider\": \"openai\",\n \"model\": \"text-embedding-3-small\"\n }\n\
}\n```\n\n### Production OpenAI Setup\n```json\n{\n \"type\": \"embeddings\",\n \"dimension\": 1536,\n \"field\": \"\
body\",\n \"embedder\": {\n \"provider\": \"openai\",\n \"model\": \"text-embedding-3-small\",\n \"api_key\"\
: \"${OPENAI_API_KEY}\"\n }\n}\n```\n\n## Best Practices\n\n- **Choose dimension wisely**: Higher dimensions improve\
\ accuracy but increase storage/compute costs\n- **Use templates for structured data**: Combine multiple fields into meaningful\
\ prompts\n- **Local vs Cloud**: Ollama for development/privacy, cloud providers for production/scale\n- **Field specification**:\
\ Specify `field` when embedding a single field to avoid whole-document serialization\n\n## Implementing Autocomplete\
\ Search\n\nTo implement autocomplete/search-as-you-type functionality:\n\n**1. Define schema with search_as_you_type\
\ type:**\n```json\n{\n \"document_schemas\": {\n \"product\": {\n \"schema\": {\n \"type\": \"object\"\
,\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"x-antfly-types\"\
: [\"text\", \"search_as_you_type\"]\n }\n }\n }\n }\n }\n}\n```\n\n**2. Create full-text index:**\n\
```json\n{\n \"indexes\": {\n \"search_idx\": {\n \"type\": \"full_text\"\n }\n }\n}\n```\n\n**3. Query with\
\ bool-prefix multi-match:**\n```json\n{\n \"full_text_search\": {\n \"multi_match\": {\n \"query\": \"lap\"\
,\n \"type\": \"bool_prefix\",\n \"fields\": [\"name\"]\n }\n }\n}\n```\n\nThe `search_as_you_type` type\
\ creates shingle and prefix subfields that match partial input\nas users type. For example, \"lap\" matches \"laptop\"\
, \"lapel\", etc.\n\n## Reindexing Data\n\nWhat happens when you need to reindex? Antfly handles reindexing through async\
\ enrichment,\nautomatically rebuilding indexes in the background. Here's what to expect when reindexing\ndata (after\
\ adding a new index or changing configuration):\n\n### Adding a New Index to Existing Table\n\nAntfly handles reindexing\
\ automatically through async enrichment:\n\n**1. Add the index:**\n```bash\nPOST /tables/{tableName}/indexes/{indexName}\n\
{\n \"type\": \"embeddings\",\n \"embedder\": {...}\n}\n```\n\n**2. Enrichment happens automatically:**\n- Existing\
\ documents are enriched in the background\n- New writes are enriched immediately\n- Leader-only processing prevents duplicate\
\ work\n- Check index status to monitor progress\n\n**3. Monitor progress:**\n```bash\nGET /tables/{tableName}/indexes/{indexName}\n\
```\n\nLook at `shard_status` for enrichment progress per shard.\n\n### Error Handling for Async Enrichment\n\nWhen embedding\
\ generation or enrichment fails, Antfly handles errors gracefully:\n\n**Retry Behavior:**\n- Failed enrichments are automatically\
\ retried with exponential backoff\n- Leader-only processing ensures no duplicate work during retries\n- Enrichment continues\
\ for other documents even if some fail\n\n**Monitoring Failures:**\n- Check index status (`GET /tables/{table}/indexes/{index}`)\
\ for error counts\n- Prometheus metrics expose enrichment failure rates\n- Failed documents remain searchable via full-text\
\ index (if configured)\n\n**Common Failure Scenarios:**\n\n1. **Embedding API Unavailable**\n - Enrichment retries\
\ automatically when service recovers\n - Documents remain indexed (without embeddings) for full-text search\n - Use\
\ `sync_level: enrichments` to precompute enrichments before committing.\n A synchronous producer failure rejects\
\ the write. Failures detected after a\n document has committed retain it and may report `committed_repair_required`\
\ so\n operators can repair the derived state.\n\n2. **Rate Limiting**\n - Automatic backoff and retry\n - Consider\
\ using local Ollama to avoid rate limits\n - Or increase API quota with embedding provider\n\n3. **Model Errors (invalid\
\ input, size limits)**\n - Logged with document ID for investigation\n - Retries stop after max attempts\n - Document\
\ remains in table without enrichment\n\n### Changing Index Configuration\n\nTo change index configuration:\n1. Drop the\
\ existing index: `DELETE /tables/{table}/indexes/{index}`\n2. Recreate with new config: `POST /tables/{table}/indexes/{index}`\n\
3. Existing data is automatically re-enriched\n\n**Note:** Full-text indexes (`full_text`) reindex immediately on creation\
\ and automatically\nrebuild when schema changes are made. Vector indexes (`embeddings`) enrich asynchronously in the\
\ background.\n\n### Backup Before Major Reindexing\n\nFor large datasets, backup before reindexing:\n```bash\nPOST /tables/{tableName}/backup\n\
{\n \"backup_id\": \"before-reindex-2025-01\",\n \"location\": \"s3://mybucket/backups/products\"\n}\n```\n\n## Graph\
\ Indexes and Edge TTL\n\nGraph indexes (`graph`) enable relationship modeling and traversal queries.\nEdge TTL is under\
\ development. The stateful runtime currently stamps edge\nartifacts and selects live projected contributors for adjacency\
\ reads, but\nauthoritative cleanup, metric invalidation, and\nserverless visibility are not complete. Do not rely on\
\ graph TTL in\nproduction until those pieces are implemented.\n\n### Graph Index Overview\n\nGraph indexes store directed\
\ edges between documents, enabling queries like:\n- Finding all connections from a document\n- Traversing multi-hop paths\n\
- Filtering relationships by type\n\n**Basic graph index:**\n```json\n{\n \"type\": \"graph\",\n \"name\": \"social_graph\"\
\n}\n```\n\n### Edge TTL Configuration\n\nGraph indexes accept an index-level `ttl.duration` policy. The legacy\n`ttl_duration`\
\ field is an alias; do not specify both.\n\n```json\n{\n \"type\": \"graph\",\n \"name\": \"recent_interactions\",\n\
\ \"ttl\": {\"duration\": \"7d\"}\n}\n```\n\nThe duration uses the same format as document TTL, such as `30s`, `5m`,\n\
`24h`, or `7d`. Each source contribution receives a server-assigned\ncreation timestamp. Stateful graph reads filter expired\
\ contributions\nand select the highest-priority live source when sources overlap.\n\nGraph TTL is currently incomplete.\
\ There is no authoritative edge\ncleanup worker, published graph metric invalidation at a deadline, or\nserverless segment\
\ expiration filter. See `zig/GRAPH.md` for the design\nand current implementation status."
humanURL: https://antfly.io/docs/api
baseURL: https://api.antfly.io
tags:
- index_management
properties:
- type: OpenAPI
url: openapi/antfly-index-management-api-openapi.yml
- type: JSONSchema
url: json-schema/antfly-memory-recall-result-schema.json
- type: JSONSchema
url: json-schema/antfly-memory-inspection-schema.json
- type: JSONSchema
url: json-schema/antfly-memory-record-page-schema.json
- type: JSONSchema
url: json-schema/antfly-memory-record-schema.json
- type: JSONSchema
url: json-schema/antfly-memory-relationship-proposal-schema.json
- type: JSONSchema
url: json-schema/antfly-inference-generate-request-schema.json
- aid: antfly:antfly-inference-api
name: Antfly Inference API
description: The Inference API from Antfly — 1 operation(s) for inference.
humanURL: https://antfly.io/docs/api
baseURL: https://api.antfly.io
tags:
- Inference
properties:
- type: OpenAPI
url: openapi/antfly-inference-api-openapi.yml
- type: JSONSchema
url: json-schema/antfly-memory-recall-result-schema.json
- type: JSONSchema
url: json-schema/antfly-memory-inspection-schema.json
- type: JSONSchema
url: json-schema/antfly-memory-record-page-schema.json
- type: JSONSchema
url: json-schema/antfly-memory-record-schema.json
- type: JSONSchema
url: json-schema/antfly-memory-relationship-proposal-schema.json
- type: JSONSchema
url: json-schema/antfly-inference-generate-request-schema.json
- aid: antfly:antfly-installed-api
name: Antfly Installed API
description: PostgreSQL-style installed extension lifecycle.
humanURL: https://antfly.io/docs/api
baseURL: https://api.antfly.io
tags:
- Installed
properties:
- type: OpenAPI
url: openapi/antfly-installed-api-openapi.yml
- type: JSONSchema
url: json-schema/antfly-memory-recall-result-schema.json
- type: JSONSchema
url: json-schema/antfly-memory-inspection-schema.json
- type: JSONSchema
url: json-schema/antfly-memory-record-page-schema.json
- type: JSONSchema
url: json-schema/antfly-memory-record-schema.json
- type: JSONSchema
url: json-schema/antfly-memory-relationship-proposal-schema.json
- type: JSONSchema
url: json-schema/antfly-inference-generate-request-schema.json
- aid: antfly:antfly-memory-api
name: Antfly Memory API
description: Evidence-backed temporal agent memory
humanURL: https://antfly.io/docs/api
baseURL: https://api.antfly.io
tags:
- memory
properties:
- type: OpenAPI
url: openapi/antfly-memory-api-openapi.yml
- type: JSONSchema
url: json-schema/antfly-memory-recall-result-schema.json
- type: JSONSchema
url: json-schema/antfly-memory-inspection-schema.json
- type: JSONSchema
url: json-schema/antfly-memory-record-page-schema.json
- type: JSONSchema
url: json-schema/antfly-memory-record-schema.json
- type: JSONSchema
url: json-schema/antfly-memory-relationship-proposal-schema.json
- type: JSONSchema
url: json-schema/antfly-inference-generate-request-schema.json
- aid: antfly:antfly-ml-api
name: Antfly Ml API
description: The Ml API from Antfly — 3 operation(s) for ml.
humanURL: https://antfly.io/docs/api
baseURL: https://api.antfly.io
tags:
- Ml
properties:
- type: OpenAPI
url: openapi/antfly-ml-api-openapi.yml
- type: JSONSchema
url: json-schema/antfly-memory-recall-result-schema.json
- type: JSONSchema
url: json-schema/antfly-memory-inspection-schema.json
- type: JSONSchema
url: json-schema/antfly-memory-record-page-schema.json
- type: JSONSchema
url: json-schema/antfly-memory-record-schema.json
- type: JSONSchema
url: json-schema/antfly-memory-relationship-proposal-schema.json
- type: JSONSchema
url: json-schema/antfly-inference-generate-request-schema.json
- aid: antfly:antfly-models-api
name: Antfly Models API
description: The Models API from Antfly — 2 operation(s) for models.
humanURL: https://antfly.io/docs/api
baseURL: https://api.antfly.io
tags:
- Models
properties:
- type: OpenAPI
url: openapi/antfly-models-api-openapi.yml
- type: JSONSchema
url: json-schema/antfly-memory-recall-result-schema.json
- type: JSONSchema
url: json-schema/antfly-memory-inspection-schema.json
- type: JSONSchema
url: json-schema/antfly-memory-record-page-schema.json
- type: JSONSchema
url: json-schema/antfly-memory-record-schema.json
- type: JSONSchema
url: json-schema/antfly-memory-relationship-proposal-schema.json
- type: JSONSchema
url: json-schema/antfly-inference-generate-request-schema.json
- aid: antfly:antfly-packages-api
name: Antfly Packages API
description: Signed installable artifacts known to Antfly.
humanURL: https://antfly.io/docs/api
baseURL: https://api.antfly.io
tags:
- Packages
properties:
- type: OpenAPI
url: openapi/antfly-packages-api-openapi.yml
- type: JSONSchema
url: json-schema/antfly-memory-recall-result-schema.json
- type: JSONSchema
url: json-schema/antfly-memory-inspection-schema.json
- type: JSONSchema
url: json-schema/antfly-memory-record-page-schema.json
- type: JSONSchema
url: json-schema/antfly-memory-record-schema.json
- type: JSONSchema
url: json-schema/antfly-memory-relationship-proposal-schema.json
- type: JSONSchema
url: json-schema/antfly-inference-generate-request-schema.json
- aid: antfly:antfly-permission-api
name: Antfly Permission API
description: Operations related to permissions
humanURL: https://antfly.io/docs/api
baseURL: https://api.antfly.io
tags:
- Permission
properties:
- type: OpenAPI
url: openapi/antfly-permission-api-openapi.yml
- type: JSONSchema
url: json-schema/antfly-memory-recall-result-schema.json
# --- truncated at 32 KB (58 KB total) ---
# Full source: https://artifacts.apis.io/antfly/apis.yml
Every provider here is available over the APIs.io API and to AI agents over MCP.