List the built-in manifest templates
The templates a new context can be seeded from.
GET /manifest/templates
curl --request GET \
--url https://{host}/api/manifest/templates \
--header 'Authorization: Bearer <token>' \
--header 'X-Pinecone-Api-Version: <x-pinecone-api-version>'import requests
url = "https://{host}/api/manifest/templates"
headers = {
"Authorization": "Bearer <token>",
"X-Pinecone-Api-Version": "<x-pinecone-api-version>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: "GET", headers: {"Authorization": "Bearer <token>", "X-Pinecone-Api-Version": "<x-pinecone-api-version>"}};
fetch("https://{host}/api/manifest/templates", options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{host}/api/manifest/templates",
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;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://{host}/api/manifest/templates"
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))
}HttpResponse<String> response = Unirest.get("https://{host}/api/manifest/templates")
.header("Authorization", "Bearer <token>")
.header("X-Pinecone-Api-Version", "<x-pinecone-api-version>")
.asString();require 'uri'
require 'net/http'
url = URI("https://{host}/api/manifest/templates")
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{
"version": 123,
"default_id": "<string>",
"templates": [
{
"id": "<string>",
"label": "<string>",
"description": "<string>",
"when_to_use": "<string>",
"default": true,
"sample_questions": [
"<string>"
],
"manifest": null
}
]
}Authorizations
Section titled “Authorizations”AuthorizationstringrequiredSession token from POST /auth/login, sent as Authorization: Bearer <token>.
Headers
Section titled “Headers”X-Pinecone-Api-Version?stringDate-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.
Response
Section titled “Response”200 — Template catalog
The built-in manifest templates, baked into the build rather than stored per project.
versionintegerrequiredCatalog revision. Bumped when the baked templates change.
default_idstringrequiredThe id of the template applied when a caller names none.
templatesobject[]requiredThe templates, in display order.
Show child attributes
idstringrequiredStable template id, as matched by explore and named by default_id.
labelstringrequiredShort display name.
descriptionstringrequiredWhat corpus shape the template is built for.
when_to_usestringrequiredGuidance for picking this template over its neighbours.
default?booleanSet on the catalog's default template, and absent on every other.
sample_questionsstring[]requiredQuestions a corpus curated under this template should answer.
manifestobjectrequiredThe manifest document the template seeds a context with.
Show child attributes
curate?objectWhat curate builds out of the sources — the chunk leg, the artifact leg, or both.
Show child attributes
chunks?objectThe chunk leg — sources split into passages, embedded for semantic search and optionally indexed for keyword search.
artifacts?objectThe artifact leg: knowledge an LLM distills out of the sources, as prose files or database rows. Off by default.
optimize?objectThe scheduled self-tuning loop: it clusters the queries that answered badly and tries candidate manifests against an ephemeral index until one reproduces the recorded answers.
Show child attributes
schedule?stringCron expression the tuning loop runs on.
Required string length: 0 - 128
latency_threshold_ms?integerA query slower than this counts as a problem worth tuning for, as does any query that fell back from artifacts to chunks. 0 disables the latency test, leaving only fallback.
Required range: 0 <= x <= 600000
min_group_size?integerHow many near-duplicate problem queries must cluster together before the loop tunes for them. Keeps a one-off slow query from triggering a manifest change.
Required range: 1 <= x <= 100
eval_pass_rate_threshold?numberFraction of eval queries a candidate manifest must answer correctly to be considered ready. 1 demands all of them.
Required range: 0 <= x <= 1
max_iterations?integerHow many candidate manifests the loop tries before stopping with its best.
Required range: 1 <= x <= 100
search?objectStanding instructions for the query runtime, pinned on the context rather than sent per turn.
Show child attributes
instructions?stringThe context's default system prompt, applied to every turn in scope. A session's own system_prompt appends to it rather than replacing it.