What Hopscotch stores about your requests by default, how capture keeps prompts and responses when turned on, and how to view, delete or bucket them.
By default Hopscotch keeps metadata about each request: the time, the model,
token counts and the cost. It does not keep the prompt or the response. Capture
is the one setting that changes this. When you turn it on for a key, the bodies
of that key’s requests are stored, encrypted, for you to read back in the
dashboard, and they are charged for by the amount of storage they hold.The journey below follows that setting from the first switch to deletion. The
data stance itself is on Data and privacy.
Capture is not yet available to production accounts. Turning it on is refused
in production until the opt-in path ships, so the steps below describe what the
feature does where it is enabled, and every step is gated.
Capture is set one key at a time. A new key starts with capture off, and a key
with capture off stores no bodies for its requests. You turn it on from the
dashboard with a single switch beside the key.Turning capture off is always allowed. It stops new bodies from being stored
for that key. Bodies that were already stored stay until you delete them or
they expire, so turning it off is not a delete.
Each captured request stores its prompt and its response as one encrypted
object, kept together with the metadata that the request already produces.
Bodies are encrypted before they are written, and they are read back through
the dashboard.Responses returned in one piece are captured. Streamed responses are meant to be
captured too, but that part is not shipped yet, so a streamed request stores its
metadata and no body until it is.
Captured history is in the dashboard, under Activity, as a list of your
requests with bodies, newest first. You can narrow it by:
model
outcome
key
a start and end date
an exact request id
The list is paged. Opening a request shows the prompt and the response that
were stored for it. If a stored body cannot be read, the request still opens
with a plain sentence saying so, and the metadata is still shown.There is no search over the text of prompts or responses. Captured history is
dashboard only. The /v1 routing API does not read it.
Storage is charged by the bytes held and the time they are held. A body starts
counting from the moment it is stored and stops counting the moment it is
deleted or expires, so deleting history stops its charge straight away.The charge is worked out once per calendar month from the stored bodies
themselves, not added up run by run. A missed day is picked up by the next
run, and the same month is never charged twice. Each month’s storage charge
appears on the balance ledger as its own line. It is not a request charge, so
it does not appear in per-model spend or in request counts.The storage price, and what your account is charged so far this month, are
shown in the dashboard next to the capture switch. This page does not state a
price.If an account’s balance falls below zero because of storage charges, capture is
switched off for its keys and the account owner is emailed. Requests keep
working. See Credits and billing for how the
balance itself works.
Every stored body expires on its own after a fixed retention window. The window
is not configurable today, and it applies to each body from the moment it was
stored. Expired bodies are removed by a scheduled job, so an expired body can
remain for a short time after its expiry before it is removed. Expired bodies
stop being charged once they expire.
You can delete captured history in any of these ways:
one request, by its id
a time range
everything captured for the workspace
The request returns at once with a deletion receipt and the number of items
targeted. Those items disappear from captured history immediately. Their bodies
are removed from storage right after that. The receipt stays pending until the
removal is checked, and you can read it again by its id until then.Deleting captured history removes the prompts and responses. It does not delete
the metadata recorded for each request, which is time, model, token counts and
cost, or the balance changes recorded for it.If a deletion does not finish, it is recorded and raised as an alert rather than
left looking complete.
Enterprise workspaces can connect a bucket they own on AWS S3 or Cloudflare R2.
The credential must be write-only and scoped to that bucket. A registration is
checked by writing, reading back, listing and deleting a test object before it
is accepted.Once a bucket registration is active, the capture destination for the
workspace can be set to that bucket. Captured bodies are then written to your
bucket, not to Hopscotch storage, and deleting captured history removes them
from your bucket too. Setting the destination is not yet available in the
dashboard.Telemetry for an enterprise workspace is streamed to your bucket, and bodies are
included only for keys with capture on. A receipt that verifies zero retention on
Hopscotch storage for a bucket destination is not yet shipped, so this page
makes no claim that it holds. See
Zero data retention for what is verified today.
Leaving capture off is the default, and it means that for that key we store no
prompt or response bodies at all. That is the position most customers want, and
it needs no setting beyond the switch already described.Zero data retention is a separate control. It is a workspace requirement that
routes a request on our provider credentials only to providers whose published
terms say they keep nothing and train on nothing. It does not turn capture off,
and capture does not turn it on. Both pages explain what each control does and
what it does not verify: Zero data retention and
Data and privacy.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Hopscotch","description":"OpenAI-compatible LLM router. One key, one endpoint, every model.","colors":{"primary":"#00786a","light":"#00c5a9","dark":"#00786a"},"logo":{"light":"https://mintcdn.com/unirouter/e-jU4qy0Y8gPhRZJ/logo/light.svg?fit=max\u0026auto=format\u0026n=e-jU4qy0Y8gPhRZJ\u0026q=85\u0026s=eb9901b22939c791c90369af09611ebe","dark":"https://mintcdn.com/unirouter/e-jU4qy0Y8gPhRZJ/logo/dark.svg?fit=max\u0026auto=format\u0026n=e-jU4qy0Y8gPhRZJ\u0026q=85\u0026s=22613b0632e285d26d92e43e064b95db","href":"/"},"favicon":{"light":"https://mintcdn.com/unirouter/e-jU4qy0Y8gPhRZJ/favicon/light.svg?fit=max\u0026auto=format\u0026n=e-jU4qy0Y8gPhRZJ\u0026q=85\u0026s=cddcf3547075243322e642a21f97d9eb","dark":"https://mintcdn.com/unirouter/e-jU4qy0Y8gPhRZJ/favicon/dark.svg?fit=max\u0026auto=format\u0026n=e-jU4qy0Y8gPhRZJ\u0026q=85\u0026s=613a4663bfe054aab755b5eae7c3c7b8"},"api":{"openapi":"api-reference/openapi.public.json","playground":{"display":"interactive"}},"appearance":{"default":"dark","strict":false},"background":{"color":{"light":"#f1f0ea","dark":"#111110"}},"navbar":{"links":[{"href":"https://platform.hopscotchlabs.ai","label":"Dashboard"}]},"seo":{"indexing":"navigable"},"fonts":{"family":"Geist"},"icons":{"library":"tabler"},"styling":{"eyebrows":"section","codeblocks":{"theme":{"light":"vitesse-light","dark":"vesper"}},"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"unirouter","hasAudioNarration":false,"actualSubdomain":"unirouter","customDomains":["docs.hopscotchlabs.ai"],"gitSource":{"type":"github","owner":"uniblock-dev","repo":"unirouter-docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6adf694f432a36e63392ca75","collectionId":"16ee8ee5-bac8-414c-8f66-731edbf0cb0e","liveDeploymentHistoryId":"6adf694f432a36e63392ca75","schemaVersion":"v3"},"entitlements":{},"buildId":"6adf694f432a36e63392ca75","clientVersion":"0.0.3966","searchFilterCounts":[{"language":"default","tag":"Features","count":23},{"language":"default","tag":"Integrations","count":21},{"language":"default","tag":"Manage \u0026 monitor","count":18},{"language":"default","tag":"Coding agents","count":14},{"language":"default","tag":"API Reference","count":12},{"language":"default","tag":"Get started","count":9},{"language":"default","tag":"Overview","count":8},{"language":"default","tag":"Endpoints","count":7},{"language":"default","tag":"Request features","count":6},{"language":"default","tag":"SDKs and frameworks","count":6}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":true},"customCss":[{"filePath":"brand.css","content":"/* cyrillic-ext */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 400 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFrodmgPn.woff2) format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\n}\n/* cyrillic */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 400 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFrMdmgPn.woff2) format('woff2');\n unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n/* symbols2 */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 400 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFg08vz7ehw.woff2) format('woff2');\n unicode-range: U+2000-2001, U+2004-2008, U+200A, U+23B8-23BD, U+2500-259F;\n}\n/* vietnamese */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 400 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFrgdmgPn.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 400 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFrkdmgPn.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 400 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFrcdmg.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n:root{--uni-bg:#111110;--uni-pane:#161615;--uni-ink:#d2d2cc;--uni-mute:#9e9e98;--uni-dim:#80807a;--uni-faint:#61615b;--uni-bg-light:#f1f0ea;--uni-pane-light:#fafaf6;--uni-ink-light:#2b2b25;--uni-mute-light:#51514b;--uni-dim-light:#6c6c66;--uni-faint-light:#8a8a84;--uni-live:#00c5a9;--uni-live-light:#00786a;--uni-blue:#00afff;--uni-cyan:#00bfdf;--uni-indigo:#7c9cff;--uni-lime:#98b305;--uni-orange:#ef8600;--uni-pink:#f771a0;--uni-teal:#00c5a9;--uni-violet:#b688fe;--uni-ease-snap:cubic-bezier(0.22, 0.61, 0.36, 1)}[data-component-part=code-block],[data-component-part=code-block] *,code,kbd,pre,pre *,samp{font-family:\"Geist Mono\",ui-monospace,SFMono-Regular,\"SF Mono\",Menlo,Consolas,monospace}@supports (corner-shape:squircle){*{corner-shape:squircle}}::selection{background:rgb(126 200 212/.28);color:currentColor}:focus-visible:not(input):not(textarea):not(select){outline:1.5px solid color-mix(in srgb,currentColor 55%,transparent);outline-offset:3px}.overflow-x-auto,.overflow-y-auto,[data-component-part=code-block],body,html,pre{scrollbar-width:thin;scrollbar-color:color-mix(in srgb,currentColor 16%,transparent) transparent}[data-component-part=code-block]::-webkit-scrollbar,body::-webkit-scrollbar,html::-webkit-scrollbar,pre::-webkit-scrollbar{width:6px;height:6px}[data-component-part=code-block]::-webkit-scrollbar-thumb,body::-webkit-scrollbar-thumb,html::-webkit-scrollbar-thumb,pre::-webkit-scrollbar-thumb{background:color-mix(in srgb,currentColor 16%,transparent);border-radius:99px;border:2px solid transparent;background-clip:padding-box}[data-component-part=code-block]::-webkit-scrollbar-track,body::-webkit-scrollbar-track,html::-webkit-scrollbar-track,pre::-webkit-scrollbar-track{background:0 0}body{font-feature-settings:\"ss01\" on,\"cv11\" on;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}@media (prefers-reduced-motion:reduce){*,::after,::before{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}:root{--uni-ramp-bg:var(--uni-bg-light);--uni-ramp-pane:var(--uni-pane-light);--uni-ramp-ink:var(--uni-ink-light);--uni-ramp-mute:var(--uni-mute-light);--uni-ramp-dim:var(--uni-dim-light);--uni-ramp-faint:var(--uni-faint-light);--uni-ramp-line:color-mix(in srgb, var(--uni-ramp-ink) 10%, transparent);--uni-ramp-line-strong:color-mix(\n in srgb,\n var(--uni-ramp-ink) 16%,\n transparent\n );--uni-ramp-chip:color-mix(in srgb, var(--uni-ramp-ink) 6%, transparent);--uni-ramp-ink-hover:color-mix(\n in srgb,\n var(--uni-ramp-ink) 88%,\n var(--uni-ramp-bg)\n )}html.dark{--uni-ramp-bg:var(--uni-bg);--uni-ramp-pane:var(--uni-pane);--uni-ramp-ink:var(--uni-ink);--uni-ramp-mute:var(--uni-mute);--uni-ramp-dim:var(--uni-dim);--uni-ramp-faint:var(--uni-faint);--uni-ramp-line:rgb(255 255 255 / 0.08);--uni-ramp-line-strong:rgb(255 255 255 / 0.14)}.api-section,.callout,.card,details.accordion{background:var(--uni-ramp-pane);border:1px solid var(--uni-ramp-line);box-shadow:inset 0 1px 0 color-mix(in srgb,var(--uni-ramp-ink) 6%,transparent)}.card{border-radius:14px}.api-section,.callout,details.accordion{border-radius:12px}.card{transition:border-color 200ms var(--uni-ease-snap)}.card:hover{border-color:var(--uni-ramp-line-strong)}[data-component-part=card-icon]{color:var(--uni-ramp-mute);fill:var(--uni-ramp-mute)}[data-component-part=card-title]{color:var(--uni-ramp-ink);font-size:.875rem;font-weight:400;line-height:1.3;margin-top:.75rem}[data-component-part=card-content],[data-component-part=card-content] p,[data-component-part=card-content] span{color:var(--uni-ramp-mute);font-size:.8125rem;line-height:1.4}.accordion-group{background:var(--uni-ramp-pane);border:1px solid var(--uni-ramp-line);border-radius:12px;box-shadow:inset 0 1px 0 color-mix(in srgb,var(--uni-ramp-ink) 6%,transparent);overflow:hidden}.accordion-group>details.accordion{background:0 0;border:0;border-radius:0;box-shadow:none}.accordion-group>details.accordion+details.accordion{border-top:1px solid var(--uni-ramp-line)}[data-component-part=accordion-button]{padding:.75rem 1.25rem}[data-component-part=accordion-title]{color:var(--uni-ramp-ink);font-size:.875rem;font-weight:400;line-height:1.3}[data-component-part=accordion-caret-right]{color:var(--uni-ramp-faint);transition:transform 200ms var(--uni-ease-snap)}[data-component-part=accordion-content]{border-top:1px solid var(--uni-ramp-line);padding:1rem 1.25rem}.callout{padding:1rem 1.25rem}[data-component-part=callout-content],[data-component-part=callout-content] p{color:var(--uni-ramp-ink);font-size:.8125rem;line-height:1.5}[data-component-part=code-block-root]{border:1px solid var(--uni-ramp-line)}[data-component-part=code-block-header-filename],[data-component-part=code-block-header],[data-component-part=code-group-tab-bar]{color:var(--uni-ramp-dim);font-size:.75rem;line-height:1.4}[data-component-part=code-group-tab-bar]{border-bottom:1px solid var(--uni-ramp-line)}[data-component-part=step-line]{background:var(--uni-ramp-line)}[data-component-part=step-number]>*{background:var(--uni-ramp-chip);color:var(--uni-ramp-ink);font-size:.6875rem;font-weight:400}[data-component-part=step-title]{color:var(--uni-ramp-ink);font-size:.875rem;font-weight:400;line-height:1.3}.api-section{padding:1.25rem}.api-section+.api-section{margin-top:.75rem}.api-section-heading-title{color:var(--uni-ramp-ink);font-size:.875rem;font-weight:400;line-height:1.3}.api-section-heading-subtitle{color:var(--uni-ramp-dim);font-size:.75rem;line-height:1.4}.param-head{border-bottom:1px solid var(--uni-ramp-line);padding-bottom:.5rem}.array-param-field:last-child>.param-head,.object-param-field:last-child>.param-head,.primitive-param-field:last-child>.param-head{border-bottom:0}[data-component-part=field-name]{color:var(--uni-ramp-ink);font-weight:500}[data-component-part=field-name]:hover{color:var(--uni-ramp-ink);text-decoration:underline;text-decoration-color:var(--uni-ramp-line-strong);text-underline-offset:3px}[data-component-part=field-meta]{color:var(--uni-ramp-dim);font-size:.75rem}[data-component-part=field-info-pill],[data-component-part=field-required-pill]{background:var(--uni-ramp-chip);border-radius:9999px;color:var(--uni-ramp-ink);font-size:.6875rem;font-weight:400;padding:.0625rem .5rem}[data-component-part=field-info-pill]{color:var(--uni-ramp-dim)}.method-nav-pill,.method-pill{border-radius:0;font-size:.625rem;font-weight:400;letter-spacing:.06em;padding:.125rem .375rem;text-transform:uppercase}.tryit-button{background:var(--uni-ramp-ink);border-radius:10px;color:var(--uni-ramp-bg);font-weight:400;transition:background 200ms var(--uni-ease-snap)}.tryit-button:hover{background:var(--uni-ramp-ink-hover);filter:none;opacity:1}.tryit-button svg{fill:var(--uni-ramp-bg);color:var(--uni-ramp-bg)}[data-component-part=expandable-button]{color:var(--uni-ramp-dim);font-size:.75rem}[data-component-part=expandable-button]:hover{color:var(--uni-ramp-ink)}[data-component-part=expandable-content]{border-left:1px solid var(--uni-ramp-line);padding-left:1rem}[data-provider]{--uni-accent:var(--uni-ramp-mute)}[data-provider]:not(.card){align-items:center;display:inline-flex;gap:.375rem}[data-provider]:not(.card)::before{background:var(--uni-accent);content:\"\";display:inline-block;flex:none;height:6px;width:6px}[data-provider][data-mark=tag]{background:var(--uni-accent);border-radius:0;color:#111110;font-size:.625rem;letter-spacing:.06em;padding:.125rem .25rem;text-transform:uppercase}[data-provider][data-mark=tag]::before{content:none}[data-provider=alibaba],[data-provider=anthropic],[data-provider=mistral],[data-provider=qwen]{--uni-accent:var(--uni-orange)}[data-provider=openai]{--uni-accent:var(--uni-blue)}[data-provider=fireworks],[data-provider=moonshot]{--uni-accent:var(--uni-cyan)}[data-provider=deepseek]{--uni-accent:var(--uni-teal)}[data-provider=deepinfra]{--uni-accent:var(--uni-indigo)}[data-provider=google],[data-provider=z-ai],[data-provider=zai],[data-provider=zhipu]{--uni-accent:var(--uni-violet)}[data-provider=groq]{--uni-accent:var(--uni-pink)}[data-provider=meta],[data-provider=together]{--uni-accent:var(--uni-lime)}.card[data-provider] [data-component-part=card-icon]{color:var(--uni-accent);fill:var(--uni-accent)}"}],"page":{"pagePath":"manage/stored-request-data","slug":"/manage/stored-request-data","pageMetadata":{"title":"Stored request data","description":"What Hopscotch stores about your requests by default, how capture keeps prompts and responses when turned on, and how to view, delete or bucket them.","status":"partial","gates":["7.5","7.7","7.8","7.9","7.10","7.11","7.12","7.13","7.14","7.16","7.17","7.19","68.2","68.3"],"href":"/manage/stored-request-data"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"What Hopscotch stores about your requests by default, how capture keeps prompts and responses when turned on, and how to view, delete or bucket them.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,ul:`ul`,..._provideComponents(),...props.components},{Heading,Note}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`By default Hopscotch keeps metadata about each request: the time, the model,\ntoken counts and the cost. It does not keep the prompt or the response. Capture\nis the one setting that changes this. When you turn it on for a key, the bodies\nof that key’s requests are stored, encrypted, for you to read back in the\ndashboard, and they are charged for by the amount of storage they hold.`}),`\n`,_jsxs(_components.p,{children:[`The journey below follows that setting from the first switch to deletion. The\ndata stance itself is on `,_jsx(_components.a,{href:`/manage/data-and-privacy`,children:`Data and privacy`}),`.`]}),`\n`,_jsx(Note,{children:_jsx(_components.p,{children:`Capture is not yet available to production accounts. Turning it on is refused\nin production until the opt-in path ships, so the steps below describe what the\nfeature does where it is enabled, and every step is gated.`})}),`\n`,_jsx(Heading,{level:`2`,id:`capture-is-off-until-you-turn-it-on`,children:`Capture is off until you turn it on`}),`\n`,_jsx(_components.p,{children:`Capture is set one key at a time. A new key starts with capture off, and a key\nwith capture off stores no bodies for its requests. You turn it on from the\ndashboard with a single switch beside the key.`}),`\n`,_jsx(_components.p,{children:`Turning capture off is always allowed. It stops new bodies from being stored\nfor that key. Bodies that were already stored stay until you delete them or\nthey expire, so turning it off is not a delete.`}),`\n`,_jsx(Heading,{level:`2`,id:`what-is-stored-for-each-captured-request`,children:`What is stored for each captured request`}),`\n`,_jsx(_components.p,{children:`Each captured request stores its prompt and its response as one encrypted\nobject, kept together with the metadata that the request already produces.\nBodies are encrypted before they are written, and they are read back through\nthe dashboard.`}),`\n`,_jsx(_components.p,{children:`Responses returned in one piece are captured. Streamed responses are meant to be\ncaptured too, but that part is not shipped yet, so a streamed request stores its\nmetadata and no body until it is.`}),`\n`,_jsx(Heading,{level:`2`,id:`viewing-captured-requests`,children:`Viewing captured requests`}),`\n`,_jsx(_components.p,{children:`Captured history is in the dashboard, under Activity, as a list of your\nrequests with bodies, newest first. You can narrow it by:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`model`}),`\n`,_jsx(_components.li,{children:`outcome`}),`\n`,_jsx(_components.li,{children:`key`}),`\n`,_jsx(_components.li,{children:`a start and end date`}),`\n`,_jsx(_components.li,{children:`an exact request id`}),`\n`]}),`\n`,_jsx(_components.p,{children:`The list is paged. Opening a request shows the prompt and the response that\nwere stored for it. If a stored body cannot be read, the request still opens\nwith a plain sentence saying so, and the metadata is still shown.`}),`\n`,_jsxs(_components.p,{children:[`There is no search over the text of prompts or responses. Captured history is\ndashboard only. The `,_jsx(_components.code,{children:`/v1`}),` routing API does not read it.`]}),`\n`,_jsx(Heading,{level:`2`,id:`what-storage-costs-and-how-it-is-charged`,children:`What storage costs and how it is charged`}),`\n`,_jsx(_components.p,{children:`Storage is charged by the bytes held and the time they are held. A body starts\ncounting from the moment it is stored and stops counting the moment it is\ndeleted or expires, so deleting history stops its charge straight away.`}),`\n`,_jsx(_components.p,{children:`The charge is worked out once per calendar month from the stored bodies\nthemselves, not added up run by run. A missed day is picked up by the next\nrun, and the same month is never charged twice. Each month’s storage charge\nappears on the balance ledger as its own line. It is not a request charge, so\nit does not appear in per-model spend or in request counts.`}),`\n`,_jsx(_components.p,{children:`The storage price, and what your account is charged so far this month, are\nshown in the dashboard next to the capture switch. This page does not state a\nprice.`}),`\n`,_jsxs(_components.p,{children:[`If an account’s balance falls below zero because of storage charges, capture is\nswitched off for its keys and the account owner is emailed. Requests keep\nworking. See `,_jsx(_components.a,{href:`/manage/credits-and-billing`,children:`Credits and billing`}),` for how the\nbalance itself works.`]}),`\n`,_jsx(Heading,{level:`2`,id:`expiry`,children:`Expiry`}),`\n`,_jsx(_components.p,{children:`Every stored body expires on its own after a fixed retention window. The window\nis not configurable today, and it applies to each body from the moment it was\nstored. Expired bodies are removed by a scheduled job, so an expired body can\nremain for a short time after its expiry before it is removed. Expired bodies\nstop being charged once they expire.`}),`\n`,_jsx(Heading,{level:`2`,id:`deleting-captured-history`,children:`Deleting captured history`}),`\n`,_jsx(_components.p,{children:`You can delete captured history in any of these ways:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`one request, by its id`}),`\n`,_jsx(_components.li,{children:`a time range`}),`\n`,_jsx(_components.li,{children:`everything captured for the workspace`}),`\n`]}),`\n`,_jsx(_components.p,{children:`The request returns at once with a deletion receipt and the number of items\ntargeted. Those items disappear from captured history immediately. Their bodies\nare removed from storage right after that. The receipt stays pending until the\nremoval is checked, and you can read it again by its id until then.`}),`\n`,_jsx(_components.p,{children:`Deleting captured history removes the prompts and responses. It does not delete\nthe metadata recorded for each request, which is time, model, token counts and\ncost, or the balance changes recorded for it.`}),`\n`,_jsx(_components.p,{children:`If a deletion does not finish, it is recorded and raised as an alert rather than\nleft looking complete.`}),`\n`,_jsx(Heading,{level:`2`,id:`bringing-your-own-bucket`,children:`Bringing your own bucket`}),`\n`,_jsx(_components.p,{children:`Enterprise workspaces can connect a bucket they own on AWS S3 or Cloudflare R2.\nThe credential must be write-only and scoped to that bucket. A registration is\nchecked by writing, reading back, listing and deleting a test object before it\nis accepted.`}),`\n`,_jsx(_components.p,{children:`Once a bucket registration is active, the capture destination for the\nworkspace can be set to that bucket. Captured bodies are then written to your\nbucket, not to Hopscotch storage, and deleting captured history removes them\nfrom your bucket too. Setting the destination is not yet available in the\ndashboard.`}),`\n`,_jsxs(_components.p,{children:[`Telemetry for an enterprise workspace is streamed to your bucket, and bodies are\nincluded only for keys with capture on. A receipt that verifies zero retention on\nHopscotch storage for a bucket destination is not yet shipped, so this page\nmakes no claim that it holds. See\n`,_jsx(_components.a,{href:`/manage/zero-data-retention`,children:`Zero data retention`}),` for what is verified today.`]}),`\n`,_jsx(Heading,{level:`2`,id:`the-opposite-choice-zero-data-retention`,children:`The opposite choice: zero data retention`}),`\n`,_jsx(_components.p,{children:`Leaving capture off is the default, and it means that for that key we store no\nprompt or response bodies at all. That is the position most customers want, and\nit needs no setting beyond the switch already described.`}),`\n`,_jsxs(_components.p,{children:[`Zero data retention is a separate control. It is a workspace requirement that\nroutes a request on our provider credentials only to providers whose published\nterms say they keep nothing and train on nothing. It does not turn capture off,\nand capture does not turn it on. Both pages explain what each control does and\nwhat it does not verify: `,_jsx(_components.a,{href:`/manage/zero-data-retention`,children:`Zero data retention`}),` and\n`,_jsx(_components.a,{href:`/manage/data-and-privacy`,children:`Data and privacy`}),`.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"codeStyling":{"theme":{"light":"vitesse-light","dark":"vesper"}},"config":{},"pageMetadata":{"title":"Stored request data","description":"What Hopscotch stores about your requests by default, how capture keeps prompts and responses when turned on, and how to view, delete or bucket them.","status":"partial","gates":["7.5","7.7","7.8","7.9","7.10","7.11","7.12","7.13","7.14","7.16","7.17","7.19","68.2","68.3"],"href":"/manage/stored-request-data"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Capture is off until you turn it on","slug":"capture-is-off-until-you-turn-it-on","depth":2,"children":[]},{"title":"What is stored for each captured request","slug":"what-is-stored-for-each-captured-request","depth":2,"children":[]},{"title":"Viewing captured requests","slug":"viewing-captured-requests","depth":2,"children":[]},{"title":"What storage costs and how it is charged","slug":"what-storage-costs-and-how-it-is-charged","depth":2,"children":[]},{"title":"Expiry","slug":"expiry","depth":2,"children":[]},{"title":"Deleting captured history","slug":"deleting-captured-history","depth":2,"children":[]},{"title":"Bringing your own bucket","slug":"bringing-your-own-bucket","depth":2,"children":[]},{"title":"The opposite choice: zero data retention","slug":"the-opposite-choice-zero-data-retention","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"unirouter","siteName":"Hopscotch","title":"Stored request data - Hopscotch","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-26T14:53:38.048Z","originalFileLocation":"manage/stored-request-data.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"dark\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"What Hopscotch stores about your requests by default, how capture keeps prompts and responses when turned on, and how to view, delete or bucket them.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Hopscotch\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/unirouter/51ojQE1LhN9oLy-j/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/unirouter/51ojQE1LhN9oLy-j/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/unirouter/51ojQE1LhN9oLy-j/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/unirouter/51ojQE1LhN9oLy-j/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/unirouter/51ojQE1LhN9oLy-j/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/unirouter/51ojQE1LhN9oLy-j/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/unirouter/51ojQE1LhN9oLy-j/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/unirouter/51ojQE1LhN9oLy-j/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/unirouter/51ojQE1LhN9oLy-j/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Stored request data - Hopscotch\">\u003cmeta data-mint-head property=\"og:description\" content=\"What Hopscotch stores about your requests by default, how capture keeps prompts and responses when turned on, and how to view, delete or bucket them.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Hopscotch\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.hopscotchlabs.ai/manage/stored-request-data\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://unirouter.mintlify.app/_mintlify/api/og/v2?division=Step-by-step+journeys\u0026amp;title=Stored+request+data\u0026amp;description=What+Hopscotch+stores+about+your+requests+by+default%2C+how+capture+keeps+prompts+and+responses+when+turned+on%2C+and+how+to+view%2C+delete+or+bucket+them.\u0026amp;theme=6715395fa0e7fb019cdde93e\u0026amp;signature=915ea18a639f946f5877f8f1e4045e32b87aacc168eb94c9b6f8a523df7a43e5\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Stored request data - Hopscotch\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"What Hopscotch stores about your requests by default, how capture keeps prompts and responses when turned on, and how to view, delete or bucket them.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://unirouter.mintlify.app/_mintlify/api/og/v2?division=Step-by-step+journeys\u0026amp;title=Stored+request+data\u0026amp;description=What+Hopscotch+stores+about+your+requests+by+default%2C+how+capture+keeps+prompts+and+responses+when+turned+on%2C+and+how+to+view%2C+delete+or+bucket+them.\u0026amp;theme=6715395fa0e7fb019cdde93e\u0026amp;signature=915ea18a639f946f5877f8f1e4045e32b87aacc168eb94c9b6f8a523df7a43e5\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/unirouter/51ojQE1LhN9oLy-j/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Hopscotch\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#00786a\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.hopscotchlabs.ai/manage/stored-request-data\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/manage/stored-request-data.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.hopscotchlabs.ai/#organization\",\"name\":\"Hopscotch\",\"url\":\"https://docs.hopscotchlabs.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/unirouter/e-jU4qy0Y8gPhRZJ/logo/light.svg?fit=max\u0026auto=format\u0026n=e-jU4qy0Y8gPhRZJ\u0026q=85\u0026s=eb9901b22939c791c90369af09611ebe\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.hopscotchlabs.ai#website\",\"name\":\"Hopscotch\",\"url\":\"https://docs.hopscotchlabs.ai\",\"publisher\":{\"@id\":\"https://docs.hopscotchlabs.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.hopscotchlabs.ai/manage/stored-request-data#webpage\",\"url\":\"https://docs.hopscotchlabs.ai/manage/stored-request-data\",\"name\":\"Stored request data\",\"description\":\"What Hopscotch stores about your requests by default, how capture keeps prompts and responses when turned on, and how to view, delete or bucket them.\",\"dateModified\":\"2026-10-26T14:53:38.048Z\",\"isPartOf\":{\"@id\":\"https://docs.hopscotchlabs.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.hopscotchlabs.ai/manage/stored-request-data#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.hopscotchlabs.ai/manage/stored-request-data#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Step-by-step journeys\",\"item\":\"https://docs.hopscotchlabs.ai/features/routing-journey\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Stored request data\",\"item\":\"https://docs.hopscotchlabs.ai/manage/stored-request-data\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.hopscotchlabs.ai/manage/stored-request-data#article\",\"headline\":\"Stored request data\",\"name\":\"Stored request data\",\"description\":\"What Hopscotch stores about your requests by default, how capture keeps prompts and responses when turned on, and how to view, delete or bucket them.\",\"url\":\"https://docs.hopscotchlabs.ai/manage/stored-request-data\",\"mainEntityOfPage\":{\"@id\":\"https://docs.hopscotchlabs.ai/manage/stored-request-data#webpage\"},\"dateModified\":\"2026-10-26T14:53:38.048Z\",\"publisher\":{\"@id\":\"https://docs.hopscotchlabs.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.hopscotchlabs.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Hopscotch\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Hopscotch","nav":{"global":null,"tabs":[{"tab":"Get started","icon":"player-play","pages":[{"title":"Get started","href":""}]},{"tab":"Features","icon":"stack-2","groups":[{"group":"Overview","pages":[{"title":"Features","href":"/features/overview"}]},{"group":"Models","pages":[{"title":"Models","href":"/features/models"},{"title":"Model capabilities","href":"/features/model-capabilities"},{"title":"Model lifecycle","href":"/features/model-lifecycle"}]},{"group":"Request features","pages":[{"title":"Streaming","href":"/features/streaming"},{"title":"Tool calling","href":"/features/tool-calling"},{"title":"Structured outputs","href":"/features/structured-outputs"},{"title":"Image inputs","href":"/features/image-inputs"},{"title":"Reasoning models","href":"/features/reasoning"},{"title":"Prompt caching","href":"/features/prompt-caching"}]},{"group":"More endpoints","pages":[{"title":"Responses API","href":"/features/responses-api"},{"title":"Completions and embeddings","href":"/features/completions-and-embeddings"},{"title":"Anthropic Messages API","href":"/features/anthropic-messages"},{"title":"Usage lookup","href":"/features/usage-lookup"}]},{"group":"Routing and reliability","pages":[{"title":"Routing profiles","href":"/features/routing-profiles"},{"title":"Bring your own key","href":"/features/bring-your-own-key"},{"title":"Guardrails","href":"/features/guardrails"},{"title":"Errors and refusals","href":"/features/errors"}]},{"group":"Step-by-step journeys","pages":[{"title":"Automatic model routing","href":"/features/routing-journey"},{"title":"Guardrails journey","description":"Set a policy on a workspace or a key, read what a blocked request returns, find the block in Activity, and change a policy after a false positive.","href":"/features/guardrails-journey"},{"title":"Stored request data","href":"/manage/stored-request-data"}]},{"group":"Try it","pages":[{"title":"Playground","description":"Run a real request from the dashboard. Every run sends as one of your workspace keys, spends real credit, and stores nothing.","href":"/features/playground"}]},{"group":"Coming soon","pages":[{"title":"Images, audio and video","href":"/features/images-audio-and-video"}]}]},{"tab":"Manage \u0026 monitor","icon":"gauge","pages":[{"title":"Manage \u0026 monitor","href":"/manage/overview"}]},{"tab":"Integrations","icon":"plug","pages":[{"title":"Integrations","href":"/integrations/overview"}]},{"tab":"API Reference","icon":"code","pages":[{"title":"API Reference","href":"/api-reference/introduction"}]}]},"title":"Stored request data - Hopscotch","buildId":"dpl_cadrRc5H9XQiJQbDFN5mcYRs2PAj","deploymentId":"dpl_cadrRc5H9XQiJQbDFN5mcYRs2PAj","dynamics":[],"chunks":[]}