Skip to main content
Pinecone Docs
current

Search documentation

Type to search this documentation.

List the selectable query models

What the model field on POST /query draws from: the default, every catalog entry, the tier → model-id map, per-phase defaults, and the curate-capable ids. Only entries with available: true are selectable; the rest are rejected with 400.

GET /models

cURL
curl --request GET \
  --url https://{host}/api/models \
  --header 'Authorization: Bearer <token>' \
  --header 'X-Pinecone-Api-Version: <x-pinecone-api-version>'
Python
import requests

url = "https://{host}/api/models"

headers = {
    "Authorization": "Bearer <token>",
    "X-Pinecone-Api-Version": "<x-pinecone-api-version>"
}

response = requests.get(url, headers=headers)

print(response.text)
JavaScript
const options = {method: "GET", headers: {"Authorization": "Bearer <token>", "X-Pinecone-Api-Version": "<x-pinecone-api-version>"}};

fetch("https://{host}/api/models", options)
  .then(res => res.json())
  .then(res => console.log(res))
  .catch(err => console.error(err));
PHP
<?php

$curl = curl_init();

curl_setopt_array($curl, [
  CURLOPT_URL => "https://{host}/api/models",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => [
    "Authorization: Bearer <token>",
    "X-Pinecone-Api-Version: <x-pinecone-api-version>"
  ],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
Go
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://{host}/api/models"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("Authorization", "Bearer <token>")
	req.Header.Add("X-Pinecone-Api-Version", "<x-pinecone-api-version>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(string(body))

}
Java
HttpResponse<String> response = Unirest.get("https://{host}/api/models")
  .header("Authorization", "Bearer <token>")
  .header("X-Pinecone-Api-Version", "<x-pinecone-api-version>")
  .asString();
Ruby
require 'uri'
require 'net/http'

url = URI("https://{host}/api/models")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
request["X-Pinecone-Api-Version"] = '<x-pinecone-api-version>'

response = http.request(request)
puts response.read_body
200
{
  "default": "<string>",
  "models": [
    {
      "id": "<string>",
      "label": "<string>",
      "provider": "<string>",
      "available": true
    }
  ],
  "tiers": {},
  "phase_defaults": {},
  "supported_curate_models": [
    "<string>"
  ],
  "query_defaults": {
    "max_steps": {},
    "thinking_levels": [
      "<string>"
    ],
    "thinking_level": "<string>"
  }
}
Authorizationstringrequired

Session token from POST /auth/login, sent as Authorization: Bearer <token>.

X-Pinecone-Api-Version?string

Date-based contract version, echoed back on the same header. Omit for the default (2026-07); send unstable for the in-development surface. An unrecognized value is rejected with 400 unsupported_api_version.

Typestring
Default2026-07

200 — The model catalog

The models this deployment can run, and the defaults it resolves.

defaultstringrequired

Model id used when model is omitted

Typestring
modelsobject[]required

Every catalog entry, selectable or not.

Typeobject[]
Show child attributes
idstringrequired

Catalog model id, passed as model on POST /query. Some carry a vendor prefix and some do not, so treat it as opaque.

Typestring
labelstringrequired

Display name.

Typestring
providerstringrequired

Who serves the model.

Typestring
availablebooleanrequired

Whether the model can be selected. An unavailable one is rejected with 400.

Typeboolean
tiersobjectrequired

Tier (lite/standard/pro) → resolved model id. A tier name is accepted anywhere a model id is, so a caller can ask for standard and let the deployment choose.

Typeobject
phase_defaultsobjectrequired

Workflow phase → the model id or tier name that phase defaults to.

Typeobject
supported_curate_modelsstring[]required

Model ids the curate runtime accepts — a subset of the catalog, since curate reads the whole corpus and is priced accordingly.

Typestring[]
query_defaultsobjectrequired

The per-turn harness values a turn runs with when the request sets none.

Typeobject
Show child attributes
max_stepsobjectrequired

Workflow selector → its agentic tool-loop step cap. Keyed by the same selectors POST /query accepts, since each runs a different loop.

Typeobject
thinking_levelsstring[]required

Every accepted thinking_level, ascending. A value outside this list is rejected with 400.

Typestring[]
thinking_levelstringrequired

The level a turn runs at when the request omits one.

Typestring
Suggest an edit

Propose a replacement for this page. The site team reviews it before applying any changes.

Export
Documentation menu