Set core body fields: name (required, 3-100 chars, pattern ^[a-zA-Z0-9_\-. ]*$), description (optional, <=1000 chars), isEnabled (boolean), idType (e.g. "userID").
Set rules (required array to actually target anyone): each rule = { name, passPercentage (0-100), conditions: [ { type, targetValue, operator, field, environments } ] }. Example: condition type "email" with operator "str_contains_any" and targetValue ["@company.com"], or type "public" with passPercentage 100 to roll out to everyone.
name must match pattern ^[a-zA-Z0-9_\-. ]*$ and be 3-100 chars - many special characters (e.g. slashes, colons) are rejected with a 400.
Omitting rules or leaving conditions empty creates a gate with no real targeting; use a "public"-type condition with passPercentage 100 for a simple full rollout.
A 400 is also returned if the gate name is already in use - gate names must be unique per project.
isEnabled controls whether the gate is active at all; forgetting it can leave a gate created but not actually enabled - check data.status in the response to confirm.
POST is a mutation request and counts against the ~100 requests/10s, ~900 requests/15min per-project rate limit - throttle bulk gate-creation scripts.
Give your agent this knowledge — and 15,700+ more routes
One MCP install gives any agent live access to the full route map across 5,700+ domains, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp
Need this verified for your stack — or a route we don't have yet?