Skip to main content
Use POST /messaging/features/evaluate to read decisions for feature keys supplied with your integration. A decision describes availability for the requested surface; it does not authorize an action or change your plan. Send an organization or project credential in the Authorization header. Client tokens cannot call this endpoint. The credential determines the organization; do not send an organization ID in the request. The request contains surface and keys. Both use lowercase identifiers with optional dots or hyphens. Request at most 50 keys and keep the body below 16 KiB. Unknown, retired, and unauthorized keys are omitted from the response. Betas that are neither offered nor enrolled are also omitted. Offered betas include their terms before enrollment and remain unavailable until enrollment succeeds. Enrolled betas remain visible after an offer is withdrawn. An empty key list returns an empty list. Each returned item contains a decision with key, version, available, enrolled, variant, and experimentAssigned, alongside title, description, termsRevision, withdrawal, and exposureToken. Feature versions are positive integers. Machine credentials receive the control variant for experiments, experimentAssigned: false, and exposureToken: null. The optional measurementAllowed request field does not enable measurement for machine credentials. Do not cache decisions or reuse them after switching organizations. The API checks authority again when you perform a protected action. A failed availability read does not grant access. Retrying a read does not enroll your organization or change a feature setting. See the API reference for the request and response schema. Use an authenticated HTTP request when your SDK has no matching method.