---
title: "Resolve an index or table (typed-name confirm + create-build poll)"
method: GET
path: "/instances/{id}/index-changes/resolve"
tags: ["Query Insights"]
---

# Resolve an index or table (typed-name confirm + create-build poll)

`GET /instances/{id}/index-changes/resolve`

## Request

- Base URL: `https://api.cloudpepper.io`
- URL: `https://api.cloudpepper.io/instances/{id}/index-changes/resolve`
- Auth: HTTP bearer

Echoes the canonical index/table name so a client can verify a typed-name confirmation before applying a change. For `type=index` it also runs the same version + refuse ladder the drop would (so it never reports an index as droppable that the apply would refuse) and returns `valid` (the catalog indisvalid): poll this after a create_index until `valid: true` — the index reads `valid: false` while CONCURRENTLY is still building it, and not_found after a few minutes means the build failed.

**Key Parameters:**
- `id`: The instance whose database to inspect
- `type`: `index` or `table`
- `name`: The identifier to resolve

## Response `200`

Resolved (body `status`: available)

- object

## Other responses

- `400`: Invalid request (body `status`: invalid, e.g. invalid_resolve_type / invalid_index_name / invalid_table_name)
- `404`: Instance, index, or table not found (body `status`: not_found)
- `409`: Unavailable (body `status`: unavailable, e.g. external_database_not_supported / postgres_version_too_old)

---

[API](https://skmtc.dev/cloudpepper/apis/cloudpepper-api-docs.md) · [All operations](https://skmtc.dev/cloudpepper/apis/cloudpepper-api-docs/llms.txt) · [OpenAPI document](https://skmtc.dev/cloudpepper/apis/cloudpepper-api-docs/revisions/b6a59274cedc?raw)
