Create a threshold profile
POST /v1/projects/{id}/threshold-profiles
Creates a performance threshold profile for the project. A profile pins
good/warn thresholds for FPS, frame time, memory, and GPU time, optionally
scoped to a device segment via the platform, resolution, buildConfig,
gpu, and storage filters. Newly created projects are automatically
seeded with a Default profile, so this endpoint adds profiles beyond that
baseline.
Each good/warn threshold is optional: a null or omitted value falls back
to the built-in default for that metric. Any thresholds you do send must
satisfy the metric ordering — FPS good must be greater than warn (higher
is better), while frame time, memory, and GPU time good must be less than
warn (lower is better).
Requires the resources:write scope (API key or OAuth Bearer token).
Authorizations
Section titled “Authorizations ”Parameters
Section titled “ Parameters ”Path Parameters
Section titled “Path Parameters ”Project UUID.
Request Body required
Section titled “Request Body required ”Request body for creating a threshold profile. Only name is required.
Each good/warn threshold accepts a number, a numeric string, or null;
null or an omitted threshold falls back to the metric’s built-in default.
Device-filter fields (platform, resolution, buildConfig, gpu,
storage) are optional; omit or send null to match any device.
object
Display name, unique within the project. Must not be the reserved
value __unknown__.
Good threshold for FPS. Must be greater than fpsWarn when both are set.
Warning threshold for FPS.
Good threshold for frame time in milliseconds. Must be less than frameTimeWarn when both are set.
Warning threshold for frame time in milliseconds.
Good threshold for memory usage in megabytes (MB). Must be less than memoryWarn when both are set.
Warning threshold for memory usage in megabytes (MB).
Good threshold for GPU time in milliseconds. Must be less than gpuTimeWarn when both are set.
Warning threshold for GPU time in milliseconds.
Optional platform filter; null or omitted matches any platform.
Optional resolution filter, such as 1920x1080; null or omitted matches any resolution.
Optional build configuration filter; stored lowercased. Null or omitted matches any build configuration.
Optional GPU model filter; null or omitted matches any GPU.
Optional storage type filter; null or omitted matches any storage.
Responses
Section titled “ Responses ”Threshold profile created. overlappingProfileNames lists any existing
profiles whose device filters overlap the new profile’s segment — an
advisory signal, not an error.
object
object
Optional platform filter; null matches any platform.
Optional resolution filter, such as 1920x1080; null matches any resolution.
Optional build configuration filter; null matches any build configuration.
Optional GPU model filter; null matches any GPU.
Optional storage type filter; null matches any storage.
Good threshold for FPS.
Warning threshold for FPS.
Good threshold for frame time in milliseconds.
Warning threshold for frame time in milliseconds.
Good threshold for memory usage in megabytes (MB).
Warning threshold for memory usage in megabytes (MB).
Good threshold for GPU time in milliseconds.
Warning threshold for GPU time in milliseconds.
Names of existing profiles whose device filters overlap the new profile’s segment.
Invalid request parameters or body.
RFC 9457 Problem Details. Served with the application/problem+json
media type. error_category, retryable, and retry_after are
Framedash extension members. type always defaults to about:blank,
so it is always present; detail and the extension members are present
only when applicable.
object
Problem type URI; about:blank when no specific type applies.
Short, human-readable summary of the problem type.
HTTP status code.
Human-readable explanation specific to this occurrence.
Extension member categorizing the error.
Extension member; true when retrying may succeed (e.g. 429, 503).
Extension member; suggested retry delay in seconds, when applicable.
Missing or invalid API key.
RFC 9457 Problem Details. Served with the application/problem+json
media type. error_category, retryable, and retry_after are
Framedash extension members. type always defaults to about:blank,
so it is always present; detail and the extension members are present
only when applicable.
object
Problem type URI; about:blank when no specific type applies.
Short, human-readable summary of the problem type.
HTTP status code.
Human-readable explanation specific to this occurrence.
Extension member categorizing the error.
Extension member; true when retrying may succeed (e.g. 429, 503).
Extension member; suggested retry delay in seconds, when applicable.
API key with resources:write scope required.
RFC 9457 Problem Details. Served with the application/problem+json
media type. error_category, retryable, and retry_after are
Framedash extension members. type always defaults to about:blank,
so it is always present; detail and the extension members are present
only when applicable.
object
Problem type URI; about:blank when no specific type applies.
Short, human-readable summary of the problem type.
HTTP status code.
Human-readable explanation specific to this occurrence.
Extension member categorizing the error.
Extension member; true when retrying may succeed (e.g. 429, 503).
Extension member; suggested retry delay in seconds, when applicable.
Resource not found.
RFC 9457 Problem Details. Served with the application/problem+json
media type. error_category, retryable, and retry_after are
Framedash extension members. type always defaults to about:blank,
so it is always present; detail and the extension members are present
only when applicable.
object
Problem type URI; about:blank when no specific type applies.
Short, human-readable summary of the problem type.
HTTP status code.
Human-readable explanation specific to this occurrence.
Extension member categorizing the error.
Extension member; true when retrying may succeed (e.g. 429, 503).
Extension member; suggested retry delay in seconds, when applicable.
A profile with the same device-filter tuple (platform, resolution,
buildConfig, gpu, storage) or the same name already exists in
this project.
RFC 9457 Problem Details. Served with the application/problem+json
media type. error_category, retryable, and retry_after are
Framedash extension members. type always defaults to about:blank,
so it is always present; detail and the extension members are present
only when applicable.
object
Problem type URI; about:blank when no specific type applies.
Short, human-readable summary of the problem type.
HTTP status code.
Human-readable explanation specific to this occurrence.
Extension member categorizing the error.
Extension member; true when retrying may succeed (e.g. 429, 503).
Extension member; suggested retry delay in seconds, when applicable.
Rate limit exceeded.
RFC 9457 Problem Details. Served with the application/problem+json
media type. error_category, retryable, and retry_after are
Framedash extension members. type always defaults to about:blank,
so it is always present; detail and the extension members are present
only when applicable.
object
Problem type URI; about:blank when no specific type applies.
Short, human-readable summary of the problem type.
HTTP status code.
Human-readable explanation specific to this occurrence.
Extension member categorizing the error.
Extension member; true when retrying may succeed (e.g. 429, 503).
Extension member; suggested retry delay in seconds, when applicable.
Headers
Section titled “Headers ”Maximum number of requests allowed per hour.
Number of requests remaining in the current window.
Unix timestamp when the rate limit window resets.
Number of seconds to wait before retrying. Present only on 429
responses. Because the limit uses a sliding window, honor this value
per response rather than scheduling a retry for the reset time.