Skip to main content
Pinecone Docs
current

Search documentation

Type to search this documentation.

Get the context's manifest

The context's pinned manifest document. A context that pins nothing returns null — the runtime fills defaults. Writes go through the manifest field on PUT /contexts/{slug}.

GET /contexts/{slug}/manifest

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

url = "https://{host}/api/contexts/{slug}/manifest"

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/contexts/{slug}/manifest", 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/contexts/{slug}/manifest",
  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/contexts/{slug}/manifest"

	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/contexts/{slug}/manifest")
  .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/contexts/{slug}/manifest")

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
{
  "curate": {
    "chunks": {
      "enabled": true,
      "embedding_model": "<string>",
      "chunking": {
        "strategy": null,
        "target_size": null,
        "overlap": null,
        "respect_sections": null
      },
      "keyword": {
        "enabled": null
      }
    },
    "artifacts": {
      "enabled": true,
      "artifact_model": "<string>",
      "artifact_types": [
        null
      ],
      "edge_types": [
        null
      ],
      "min_doc_count": 123,
      "max_tokens": 123,
      "max_doc_chars": 123,
      "extraction_window_chars": 123,
      "mention_max_chars": 123,
      "max_mentions_per_artifact": 123,
      "mention_context_chars": 123,
      "max_artifacts_per_type": 123
    }
  },
  "optimize": {
    "schedule": "<string>",
    "latency_threshold_ms": 123,
    "min_group_size": 123,
    "eval_pass_rate_threshold": 123,
    "max_iterations": 123
  },
  "search": {
    "instructions": "<string>"
  }
}
404
{
  "message": "<string>",
  "code": "<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
slugstringrequired

Context slug or UUID.

Typestring

200 — The manifest document, or null when the context pins none

The pinned manifest, or null when the context pins none.

curate?object

What curate builds out of the sources — the chunk leg, the artifact leg, or both.

Typeobject
Show child attributes
chunks?object

The chunk leg — sources split into passages, embedded for semantic search and optionally indexed for keyword search.

Typeobject
Show child attributes
enabled?boolean

Whether curate builds the chunk leg at all.

Typeboolean
Defaulttrue
embedding_model?string

Model that embeds the chunks.

Required string length: 0 - 128

Typestring
Defaultmultilingual-e5-large
chunking?object

How a source is cut into chunks.

Typeobject
Show child attributes
strategy?string

Which structure the splitter cuts on — markdown headings, fixed-size windows, HTML elements, CSV rows, or code syntax. Pick the one that matches the corpus.

Typestring
Defaultmarkdown_heading
target_size?integer

Chunk size the splitter aims for, in tokens. Smaller chunks retrieve more precisely; larger ones carry more surrounding context.

Required range: 64 <= x <= 4096

Typeinteger
Default512
overlap?integer

Tokens each chunk repeats from its predecessor, so a passage split across a boundary is still retrievable whole.

Required range: 0 <= x <= 1024

Typeinteger
Default64
respect_sections?boolean

Never cut across a section boundary, even when that leaves a chunk short of target_size.

Typeboolean
Defaulttrue
keyword?object

The lexical index built alongside the vectors, for exact-term matching.

Typeobject
Show child attributes
enabled?boolean

Whether the lexical index is built.

Typeboolean
Defaulttrue
artifacts?object

The artifact leg: knowledge an LLM distills out of the sources, as prose files or database rows. Off by default.

Typeobject
Show child attributes
enabled?boolean

Whether curate extracts artifacts at all.

Typeboolean
Defaultfalse
artifact_model?string

Model tier that does the extraction. standard reads more carefully at a higher token cost.

Typestring
Defaultlite
artifact_types?object[]

What kinds of artifact to extract. Nothing is extracted until at least one is declared.

Typeobject[]
Show child attributes
namestringrequired

What the type is called. Edge endpoints reference it, and a sqlite type's table is named after it.

Required string length: 0 - 64

Typestring
kind?string

What the artifact represents, which selects the extraction prompt. glossary is the exception — it reads the headings named in sections deterministically, with no LLM call.

Typestring
Defaulttopic
scope?string

How widely the extraction reaches. document extracts one artifact per source; corpus reduces mentions from across every source into one artifact per subject.

Typestring
Defaultcorpus
icon?string

Symbol to display beside artifacts of this kind.

Required string length: 0 - 64

Typestring
description?string

What this type should capture. Goes into the extraction prompt, so it steers the result.

Required string length: 0 - 512

Typestring
coverage?string[]

Topics the extraction is told to address wherever the source speaks to them.

Typestring[]
sections?string[]

Exact section headings a glossary-kind type reads verbatim. Ignored by every other kind.

Typestring[]
min_doc_count?integer

Overrides the manifest-level min_doc_count for this type.

Required range: 1 <= x <= 64

Typeinteger
Default1
format?string

Where the artifacts of this type are written — markdown a prose file each, sqlite rows in the context's structured database.

Typestring
Defaultmarkdown
columns?object[]

Table schema for a sqlite-format type. Ignored for markdown. Two names that normalize to the same column collide, and the first declaration wins.

Typeobject[]
natural_key?string[]

Columns that identify a row uniquely, so re-curating a source upserts its rows rather than duplicating them. sqlite-format types only.

Typestring[]
edge_types?object[]

Typed, directed relationships between artifact types, which turn the artifacts into a graph the agent can traverse.

Typeobject[]
Show child attributes
namestringrequired

What the relationship is called, e.g. mentions.

Required string length: 0 - 64

Typestring
fromstringrequired

Source artifact-type name. May equal to for a self-referential edge.

Required string length: 0 - 64

Typestring
tostringrequired

Target artifact-type name

Required string length: 0 - 64

Typestring
description?string

What the relationship means. Steers the extraction that finds it.

Required string length: 0 - 512

Typestring
attributes?string[]

Extra properties recorded on each edge, e.g. count.

Typestring[]
min_doc_count?integer

How many source documents must mention a corpus-scoped subject before it earns an artifact. Raise it to suppress one-off mentions. An artifact type may override it.

Required range: 1 <= x <= 64

Typeinteger
Default1
max_tokens?integer

Output cap for one extracted artifact, in tokens.

Required range: 128 <= x <= 8192

Typeinteger
Default1500
max_doc_chars?integer

Input cap for one extraction call, in characters. With windowing off this also caps how much of a source is read at all; everything beyond it is dropped.

Required range: 1000 <= x <= 2000000

Typeinteger
Default60000
extraction_window_chars?integer

Window size for walking a long source across several extraction calls, so its back half is covered rather than dropped. 0 opts out and reads only the head, up to max_doc_chars.

Required range: 0 <= x <= 1000000

Typeinteger
Default0
mention_max_chars?integer

Cap on one recorded mention — what a single document says about the subject — in characters.

Required range: 100 <= x <= 4000

Typeinteger
Default400
max_mentions_per_artifact?integer

How many mentions are fed into the pass that reduces them into one corpus-wide artifact.

Required range: 1 <= x <= 500

Typeinteger
Default40
mention_context_chars?integer

Cap on those mentions once concatenated, in characters. Applied after max_mentions_per_artifact.

Required range: 1000 <= x <= 100000

Typeinteger
Default8000
max_artifacts_per_type?integer

How many artifacts one type may produce. Omit for no cap.

Required range: 1 <= x <= 10000

Typeinteger
Default10000
optimize?object

The 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.

Typeobject
Show child attributes
schedule?string

Cron expression the tuning loop runs on.

Required string length: 0 - 128

Typestring
Default0 * * * *
latency_threshold_ms?integer

A 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

Typeinteger
Default60000
min_group_size?integer

How 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

Typeinteger
Default2
eval_pass_rate_threshold?number

Fraction of eval queries a candidate manifest must answer correctly to be considered ready. 1 demands all of them.

Required range: 0 <= x <= 1

Typenumber
Default1
max_iterations?integer

How many candidate manifests the loop tries before stopping with its best.

Required range: 1 <= x <= 100

Typeinteger
Default20
search?object

Standing instructions for the query runtime, pinned on the context rather than sent per turn.

Typeobject
Show child attributes
instructions?string

The context's default system prompt, applied to every turn in scope. A session's own system_prompt appends to it rather than replacing it.

Typestring
Suggest an edit

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

Export
Documentation menu