Statsig · OpenAPI Overlay 1.0.0
API Evangelist conversational phrasing for Statsig Holdouts API
14 actions
14 updates
phrasing
extends
openapi/statsig-holdouts-api-openapi.yml
Generated by API Evangelist
Written by API Evangelist tooling for Statsig's API. It is a proposal applied on top of the contract, not a document Statsig publishes.
What the actions change
x-apievangelist-phrasing
Targets 14
$.info
$.paths['/holdouts'].get
$.paths['/holdouts'].post
$.paths['/console/v1/holdouts'].get
$.paths['/console/v1/holdouts'].post
$.paths['/console/v1/holdouts/{id}'].get
$.paths['/console/v1/holdouts/{id}'].post
$.paths['/console/v1/holdouts/{id}'].delete
$.paths['/console/v1/holdouts/{id}'].patch
$.paths['/console/v1/holdouts/{id}/overrides'].get
$.paths['/console/v1/holdouts/{id}/overrides'].post
$.paths['/console/v1/holdouts/{id}/overrides'].delete
$.paths['/console/v1/holdouts/{id}/overrides'].patch
$.paths['/console/v1/holdouts/{id}/pulse_results'].get
OpenAPI Overlay
# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand.
overlay: 1.0.0
info:
title: API Evangelist conversational phrasing for Statsig Holdouts API
version: 1.0.0
extends: openapi/statsig-holdouts-api-openapi.yml
actions:
- target: $.info
update:
x-apievangelist-phrasing:
method: generated
generated: '2026-10-01'
generator: build-phrasing.py
label: Generated by API Evangelist
operations: 13
- target: $.paths['/holdouts'].get
update:
x-apievangelist-phrasing:
intent: List holdout groups
effect: read
questions:
- Which holdout groups are set up in my Statsig project?
- What holdouts are we using to measure long-term impact?
instructions:
- text: List all holdouts in my project.
- text: Show me every holdout group we have.
method: generated
generated: '2026-09-26'
- target: $.paths['/holdouts'].post
update:
x-apievangelist-phrasing:
intent: Create a holdout group
effect: write
questions:
- How do I hold back a group of users to measure the long-term impact of features?
- Can a holdout cover specific feature gates?
- What share of users can I put into a new holdout?
instructions:
- text: Create a holdout named {name}.
slots:
name: requestBody.name
- text: Create holdout {name} holding back {passPercentage} percent of users from gates {gateIDs}.
slots:
name: requestBody.name
passPercentage: requestBody.passPercentage
gateIDs: requestBody.gateIDs
method: generated
generated: '2026-09-26'
- target: $.paths['/console/v1/holdouts'].get
update:
x-apievangelist-phrasing:
intent: Filter and page through holdouts
effect: read
questions:
- Can I filter holdouts by who created them or by tag?
- Which holdouts carry a particular tag?
instructions:
- text: List holdouts created by {creatorName}.
slots:
creatorName: query.creatorName
- text: Find holdouts tagged {tags}, page {page} with {limit} per page.
slots:
tags: query.tags
page: query.page
limit: query.limit
method: generated
generated: '2026-10-01'
- target: $.paths['/console/v1/holdouts'].post
update:
x-apievangelist-phrasing:
intent: Create a holdout for a team and unit type
effect: write
questions:
- Can I create a holdout keyed on a custom unit ID type instead of user ID?
- Is it possible to assign a new holdout to a specific team when I create it?
instructions:
- text: Create holdout {name} for team {teamID}.
slots:
name: requestBody.name
teamID: requestBody.teamID
- text: Set up a holdout called {name} using unit type {idType}, described as {description}.
slots:
name: requestBody.name
idType: requestBody.idType
description: requestBody.description
method: generated
generated: '2026-10-01'
- target: $.paths['/console/v1/holdouts/{id}'].get
update:
x-apievangelist-phrasing:
intent: Get one holdout's details
effect: read
questions:
- What gates and experiments does a given holdout apply to?
- What pass percentage is a specific holdout using right now?
instructions:
- text: Show me the details of holdout {id}.
slots:
id: path.id
- text: Look up holdout {id} and tell me whether it is enabled.
slots:
id: path.id
method: generated
generated: '2026-10-01'
- target: $.paths['/console/v1/holdouts/{id}'].post
update:
x-apievangelist-phrasing:
intent: Replace a holdout's full configuration
effect: write
questions:
- How do I overwrite every setting on a holdout in one request?
- Must I send all holdout fields when doing a full update?
instructions:
- text: 'Fully replace holdout {id}: enabled {isEnabled}, pass {passPercentage} percent, gates {gateIDs}, experiments {experimentIDs}, layers {layerIDs}.'
slots:
id: path.id
isEnabled: requestBody.isEnabled
passPercentage: requestBody.passPercentage
gateIDs: requestBody.gateIDs
experimentIDs: requestBody.experimentIDs
layerIDs: requestBody.layerIDs
- text: Rewrite holdout {id} as global {isGlobal}, targeting gate {targetingGateID}, with description {description}.
slots:
id: path.id
isGlobal: requestBody.isGlobal
targetingGateID: requestBody.targetingGateID
description: requestBody.description
method: generated
generated: '2026-10-01'
- target: $.paths['/console/v1/holdouts/{id}'].delete
update:
x-apievangelist-phrasing:
intent: Delete a holdout
effect: destructive
questions:
- Can I permanently remove a holdout we no longer need?
- What happens to a holdout once I delete it?
instructions:
- text: Delete holdout {id}.
slots:
id: path.id
- text: Remove the holdout with ID {id} from the project for good.
slots:
id: path.id
method: generated
generated: '2026-10-01'
- target: $.paths['/console/v1/holdouts/{id}'].patch
update:
x-apievangelist-phrasing:
intent: Change selected holdout settings
effect: write
questions:
- Can I change just the pass percentage on a holdout without resending everything?
- Is there a way to switch a holdout off and leave its other settings alone?
instructions:
- text: Set the pass percentage on holdout {id} to {passPercentage}.
slots:
id: path.id
passPercentage: requestBody.passPercentage
- text: Disable holdout {id} by setting enabled to {isEnabled}.
slots:
id: path.id
isEnabled: requestBody.isEnabled
- text: Add monitoring metrics {monitoringMetrics} to holdout {id}.
slots:
id: path.id
monitoringMetrics: requestBody.monitoringMetrics
method: generated
generated: '2026-10-01'
- target: $.paths['/console/v1/holdouts/{id}/overrides'].get
update:
x-apievangelist-phrasing:
intent: View a holdout's overrides
effect: read
questions:
- Which IDs are forced into or out of a holdout?
- Are there manual overrides on this holdout?
instructions:
- text: Show the overrides on holdout {id}.
slots:
id: path.id
- text: List which unit IDs are overridden in holdout {id}.
slots:
id: path.id
method: generated
generated: '2026-10-01'
- target: $.paths['/console/v1/holdouts/{id}/overrides'].post
update:
x-apievangelist-phrasing:
intent: Replace a holdout's override list
effect: write
questions:
- How do I reset the whole override list on a holdout?
- Can I swap out every holdout override in a single call?
instructions:
- text: Replace all overrides on holdout {id} with a new set.
slots:
id: path.id
- text: Overwrite the override list for holdout {id}.
slots:
id: path.id
method: generated
generated: '2026-10-01'
- target: $.paths['/console/v1/holdouts/{id}/overrides'].delete
update:
x-apievangelist-phrasing:
intent: Remove IDs from a holdout's overrides
effect: destructive
questions:
- Can I take specific IDs off a holdout's override list?
- What's the way to drop a few overridden users from a holdout?
instructions:
- text: Remove selected IDs from the overrides on holdout {id}.
slots:
id: path.id
- text: Drop these users from holdout {id}'s override list.
slots:
id: path.id
method: generated
generated: '2026-10-01'
- target: $.paths['/console/v1/holdouts/{id}/overrides'].patch
update:
x-apievangelist-phrasing:
intent: Add IDs to a holdout's overrides
effect: write
questions:
- Can I append more IDs to a holdout's overrides without replacing the existing ones?
- Is it possible to force an extra user into a holdout?
instructions:
- text: Add these IDs to the overrides on holdout {id}.
slots:
id: path.id
- text: Append new override entries to holdout {id}, keeping the existing ones.
slots:
id: path.id
method: generated
generated: '2026-10-01'
- target: $.paths['/console/v1/holdouts/{id}/pulse_results'].get
update:
x-apievangelist-phrasing:
intent: Get a holdout's Pulse results
effect: read
questions:
- What is the long-term impact measured by a holdout so far?
- Can I read holdout Pulse results with CUPED variance reduction applied?
- Which confidence interval can I request for holdout results?
instructions:
- text: Get the Pulse results for holdout {id}.
slots:
id: path.id
- text: Show Pulse results for holdout {id} with CUPED {cuped} at {confidence} percent confidence.
slots:
id: path.id
cuped: query.cuped
confidence: query.confidence
method: generated
generated: '2026-10-01'
Work with this as data
Every overlay here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for openapi overlays
4 MCP tools reach this
find_overlaysBrowse and filter every overlay in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This overlay
curl "https://apis.io/api/v1/overlays/statsig-holdouts-api-phrasing-overlay"
All openapi overlays
curl "https://apis.io/api/v1/overlays?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.