---
title: "Create Ai Activate Index Config"
method: POST
path: "/ai_activate/indexes/{volume_id}"
tags: ["AI Activate"]
---

# Create Ai Activate Index Config

`POST /ai_activate/indexes/{volume_id}`

## Request

- Base URL: `https://am1.portal.api.nasuni.com`
- URL: `https://am1.portal.api.nasuni.com/ai_activate/indexes/{volume_id}`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/nasuni/apis/portal-api/docs/ai_activate/indexes/:volume_id/post.ts> (a function with typed inputs; its response is checked against the schema)

Create the AI Activate search configuration for a volume. Returns 409 if one already exists.

## Path parameters

- `volume_id` string, required

## Request body

- AiActivateIndexConfigDto: AI Activate search configuration (include/exclude paths) for a volume. Unified model shared by GET/POST/PATCH request bodies for ``/ai_activate/indexes/{volume_id}``. Fields are optional so PATCH callers can send only what they want to update. Scope writes require at least one visible include path after merging; every visible exclude must equal or descend from an include. POST callers may omit excludes to use an empty list. ``extra="forbid"`` — MCP toggles moved to ``/indexes/{volume_id}/mcp``. Reject legacy PATCH bodies that include ``mcp_enabled`` here so callers fail loudly (422) instead of silently having the field ignored.
  - `include_paths` string[], nullable
  - `exclude_paths` string[], nullable

## Response `201`

AI Activate index configuration created

- AiActivateIndexDetailsDto: Full AI Activate index detail for a volume — list-item fields plus search configuration. Returned by the webapi GET/POST/PATCH ``/ai_activate/indexes/{volume_id}`` endpoints so external API consumers see the same volume/index metadata as the list endpoint alongside the search configuration in a single response.
  - `volume_guid` string, required
  - `volume_name` string, required
  - `provider` string, required
  - `volume_region` string, nullable: Storage region of the volume. May be null when NOC has no volume metadata.
  - `status` 'in_progress' | 'complete' | 'failed' | 'queued_for_deletion', required
  - `file_count` integer, nullable: Number of files indexed for the volume. May be null until NOC reports a count.
  - `volume_size` string, nullable: Human-readable volume size string e.g. '10.5 TB'. May be unavailable until indexing progresses.
  - `removal_deadline_at` string, date-time, nullable: Instant after which a requested removal stops being reversible. Null when no removal is pending for the volume, and on NOC deployments that predate the field.
  - `include_paths` string[]
  - `exclude_paths` string[]
  - `mcp_enabled` boolean, nullable

## Other responses

- `400`: Bad request
- `401`: Not authenticated
- `403`: Insufficient permissions
- `404`: Resource not found
- `408`: Request timeout
- `409`: Resource state conflict
- `422`: Invalid input data
- `500`: Internal server error

---

[API](https://skmtc.dev/nasuni/apis/portal-api.md) - [All operations](https://skmtc.dev/nasuni/apis/portal-api/llms.txt) - [OpenAPI document](https://skmtc.dev/nasuni/apis/portal-api/revisions/2a505bec6d14?raw)
