curl --request POST \
--url 'https://api.noresponse.org/v1/workspaces/tnt_01JA2Z8K6Q4V7W9XBCDEFGHJKM/evaluations/test' \
--header "Authorization: Bearer $NORESPONSE_API_KEY" \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: account-acct_7f3a9c' \
--data '{
"expected_policy_version": 848473,
"from": "2026-01-01T00:00:00Z",
"to": "2026-01-02T00:00:00Z",
"candidates": [],
"costs": {
"legitimate": {
"allow": 8857.2,
"step_up": 4026.42,
"review": 3262.51,
"block": 8887.65
},
"abuse": {
"allow": 9853.36,
"step_up": 4011.13,
"review": 9729.18,
"block": 4702.94
}
},
"limits": {
"review_rate": 1758.36,
"server_error_rate": 2521.05,
"unavailable_result_rate": 7870.49,
"p95_ms": 8530.5
},
"label_collection": "Customer support reviewed the outcome labels for the selected cohort.",
"split_seed": "reviewed-cohort-seed-01"
}'
import { NoResponse } from "@noresponse/node";
const noResponse = new NoResponse({
apiKey: process.env["NORESPONSE_API_KEY"] ?? "",
});
async function run() {
const result = await noResponse.evaluations.create({
workspaceId: "tnt_01JA2Z8K6Q4V7W9XBCDEFGHJKM",
environment: "test",
idempotencyKey: "account-acct_7f3a9c",
body: {
expectedPolicyVersion: 848473,
from: "2026-01-01T00:00:00Z",
to: "2026-01-02T00:00:00Z",
candidates: [],
costs: {
legitimate: {
allow: 8857.2,
stepUp: 4026.42,
review: 3262.51,
block: 8887.65,
},
abuse: {
allow: 9853.36,
stepUp: 4011.13,
review: 9729.18,
block: 4702.94,
},
},
limits: {
reviewRate: 1758.36,
serverErrorRate: 2521.05,
unavailableResultRate: 7870.49,
p95Ms: 8530.5,
},
labelCollection: "Customer support reviewed the outcome labels for the selected cohort.",
splitSeed: "reviewed-cohort-seed-01",
},
});
console.log(result);
}
run();
from noresponse import NoResponse, models
import os
with NoResponse(
api_key=os.getenv("NORESPONSE_API_KEY", ""),
) as no_response:
res = no_response.evaluations.create(workspace_id="tnt_01JA2Z8K6Q4V7W9XBCDEFGHJKM", environment="test", idempotency_key="account-acct_7f3a9c", expected_policy_version=848473, from_="2026-01-01T00:00:00Z", to="2026-01-02T00:00:00Z", candidates=[], costs=models.shared.PolicyEvaluationRequestCosts(
legitimate=models.shared.Cost(
allow=8857.2,
step_up=4026.42,
review=3262.51,
block=8887.65,
),
abuse=models.shared.Cost(
allow=9853.36,
step_up=4011.13,
review=9729.18,
block=4702.94,
),
), limits={
"review_rate": 1758.36,
"server_error_rate": 2521.05,
"unavailable_result_rate": 7870.49,
"p95_ms": 8530.5,
}, label_collection="Customer support reviewed the outcome labels for the selected cohort.", split_seed="reviewed-cohort-seed-01")
# Handle response
print(res)
package main
import(
"context"
"os"
noresponse "github.com/noresponsehq/go/v12"
"github.com/noresponsehq/go/v12/models/components"
"log"
)
func main() {
ctx := context.Background()
s := noresponse.New(
noresponse.WithSecurity(os.Getenv("NORESPONSE_API_KEY")),
)
res, err := s.Evaluations.Create(ctx, "tnt_01JA2Z8K6Q4V7W9XBCDEFGHJKM", components.KeyEnvironmentTest, "account-acct_7f3a9c", components.PolicyEvaluationRequest{
ExpectedPolicyVersion: 848473,
From: "2026-01-01T00:00:00Z",
To: "2026-01-02T00:00:00Z",
Candidates: []components.Thresholds{},
Costs: components.PolicyEvaluationRequestCosts{
Legitimate: components.Cost{
Allow: 8857.2,
StepUp: 4026.42,
Review: 3262.51,
Block: 8887.65,
},
Abuse: components.Cost{
Allow: 9853.36,
StepUp: 4011.13,
Review: 9729.18,
Block: 4702.94,
},
},
Limits: components.PolicyEvaluationRequestLimits{
ReviewRate: 1758.36,
ServerErrorRate: 2521.05,
UnavailableResultRate: 7870.49,
P95Ms: 8530.5,
},
LabelCollection: "Customer support reviewed the outcome labels for the selected cohort.",
SplitSeed: "reviewed-cohort-seed-01",
})
if err != nil {
log.Fatal(err)
}
if res != nil {
// handle response
}
}
package hello.world;
import java.lang.Exception;
import java.util.List;
import org.noresponse.NoResponse;
import org.noresponse.models.errors.AuthenticationException;
import org.noresponse.models.errors.BadRequestException;
import org.noresponse.models.errors.ConflictException;
import org.noresponse.models.errors.NotFoundException;
import org.noresponse.models.errors.PermissionDeniedException;
import org.noresponse.models.errors.RateLimitException;
import org.noresponse.models.operations.CreatePolicyEvaluationResponse;
import org.noresponse.models.shared.Cost;
import org.noresponse.models.shared.KeyEnvironment;
import org.noresponse.models.shared.PolicyEvaluationRequest;
import org.noresponse.models.shared.PolicyEvaluationRequestCosts;
import org.noresponse.models.shared.PolicyEvaluationRequestLimits;
public class Application {
public static void main(String[] args) throws Exception {
NoResponse sdk = NoResponse.builder()
.apiKey(System.getenv().getOrDefault("NORESPONSE_API_KEY", ""))
.build();
CreatePolicyEvaluationResponse res = sdk.evaluations().create()
.workspaceId("tnt_01JA2Z8K6Q4V7W9XBCDEFGHJKM")
.environment(KeyEnvironment.TEST)
.idempotencyKey("account-acct_7f3a9c")
.body(PolicyEvaluationRequest.builder()
.expectedPolicyVersion(848473L)
.from("2026-01-01T00:00:00Z")
.to("2026-01-02T00:00:00Z")
.candidates(List.of())
.costs(PolicyEvaluationRequestCosts.builder()
.legitimate(Cost.builder()
.allow(8857.2)
.stepUp(4026.42)
.review(3262.51)
.block(8887.65)
.build())
.abuse(Cost.builder()
.allow(9853.36)
.stepUp(4011.13)
.review(9729.18)
.block(4702.94)
.build())
.build())
.limits(PolicyEvaluationRequestLimits.builder()
.reviewRate(1758.36)
.serverErrorRate(2521.05)
.unavailableResultRate(7870.49)
.p95Ms(8530.5)
.build())
.labelCollection("Customer support reviewed the outcome labels for the selected cohort.")
.splitSeed("reviewed-cohort-seed-01")
.build())
.call();
if (res.policyEvaluation().isPresent()) {
System.out.println(res.policyEvaluation().get());
}
}
}
using NoResponse;
using NoResponse.Models.Shared;
using System;
using System.Collections.Generic;
var sdk = new NoResponseClient(apiKey: Environment.GetEnvironmentVariable("NORESPONSE_API_KEY"));
var res = await sdk.Evaluations.CreateAsync(
workspaceId: "tnt_01JA2Z8K6Q4V7W9XBCDEFGHJKM",
environment: KeyEnvironment.Test,
body: new PolicyEvaluationRequest() {
ExpectedPolicyVersion = 848473,
From = "2026-01-01T00:00:00Z",
To = "2026-01-02T00:00:00Z",
Candidates = new List<Thresholds>() {},
Costs = new PolicyEvaluationRequestCosts() {
Legitimate = new Cost() {
Allow = 8857.2D,
StepUp = 4026.42D,
Review = 3262.51D,
Block = 8887.65D,
},
Abuse = new Cost() {
Allow = 9853.36D,
StepUp = 4011.13D,
Review = 9729.18D,
Block = 4702.94D,
},
},
Limits = new PolicyEvaluationRequestLimits() {
ReviewRate = 1758.36D,
ServerErrorRate = 2521.05D,
UnavailableResultRate = 7870.49D,
P95Ms = 8530.5D,
},
LabelCollection = "Customer support reviewed the outcome labels for the selected cohort.",
SplitSeed = "reviewed-cohort-seed-01",
},
idempotencyKey: "account-acct_7f3a9c"
);
// handle response
<?php
declare(strict_types=1);
require 'vendor/autoload.php';
use NoResponse;
use NoResponse\Models\Shared;
$sdk = NoResponse\NoResponseClient::builder()
->setSecurity(
getenv('NORESPONSE_API_KEY') ?: ''
)
->build();
$body = new Shared\PolicyEvaluationRequest(
expectedPolicyVersion: 848473,
from: '2026-01-01T00:00:00Z',
to: '2026-01-02T00:00:00Z',
candidates: [],
costs: new Shared\PolicyEvaluationRequestCosts(
legitimate: new Shared\Cost(
allow: 8857.2,
stepUp: 4026.42,
review: 3262.51,
block: 8887.65,
),
abuse: new Shared\Cost(
allow: 9853.36,
stepUp: 4011.13,
review: 9729.18,
block: 4702.94,
),
),
limits: new Shared\PolicyEvaluationRequestLimits(
reviewRate: 1758.36,
serverErrorRate: 2521.05,
unavailableResultRate: 7870.49,
p95Ms: 8530.5,
),
labelCollection: 'Customer support reviewed the outcome labels for the selected cohort.',
splitSeed: 'reviewed-cohort-seed-01',
);
$response = $sdk->evaluations->create(
workspaceId: 'tnt_01JA2Z8K6Q4V7W9XBCDEFGHJKM',
environment: Shared\KeyEnvironment::Test,
body: $body,
idempotencyKey: 'account-acct_7f3a9c'
);
$result = $response->result;
// handle response
require 'noresponse'
Models = ::NoResponse::Models
s = ::NoResponse::NoResponseClient.new(
api_key: ENV.fetch('NORESPONSE_API_KEY', '')
)
res = s.evaluations.create(workspace_id: 'tnt_01JA2Z8K6Q4V7W9XBCDEFGHJKM', environment: Models::Shared::KeyEnvironment::TEST, body: Models::Shared::PolicyEvaluationRequest.new(
expected_policy_version: 848_473,
from: '2026-01-01T00:00:00Z',
to: '2026-01-02T00:00:00Z',
candidates: [],
costs: Models::Shared::PolicyEvaluationRequestCosts.new(
legitimate: Models::Shared::Cost.new(
allow: 8857.2,
step_up: 4026.42,
review: 3262.51,
block: 8887.65
),
abuse: Models::Shared::Cost.new(
allow: 9853.36,
step_up: 4011.13,
review: 9729.18,
block: 4702.94
)
),
limits: Models::Shared::PolicyEvaluationRequestLimits.new(
review_rate: 1758.36,
server_error_rate: 2521.05,
unavailable_result_rate: 7870.49,
p95_ms: 8530.5
),
label_collection: 'Customer support reviewed the outcome labels for the selected cohort.',
split_seed: 'reviewed-cohort-seed-01'
), idempotency_key: 'account-acct_7f3a9c')
unless res.nil?
# handle response
end
{
"id": "<string>",
"environment": "live",
"status": "queued",
"policy_version": 4503599627370495,
"scoring_policy": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"expires_at": "2023-11-07T05:31:56Z",
"accounts": 500,
"requests": 25000,
"evaluator_version": "identity-threshold-evaluator-v2",
"evaluator_sha256": "<string>",
"captured_at": "2023-11-07T05:31:56Z",
"finished_at": "2023-11-07T05:31:56Z",
"build_version": "<string>",
"result_status": "no_change",
"error_code": "<string>",
"published_policy_version": 4503599627370495,
"manifest_sha256": "<string>",
"input_sha256": "<string>",
"cohort_sha256": "<string>",
"result_sha256": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 400,
"detail": "<string>",
"code": "invalid_request",
"request_id": "<string>",
"instance": "<string>",
"invalid_params": [
{
"field": "<string>",
"reason": "<string>",
"example": "<string>"
}
]
}{
"type": "<string>",
"title": "<string>",
"status": 401,
"detail": "<string>",
"code": "unauthorized",
"request_id": "<string>",
"instance": "<string>",
"invalid_params": [
{
"field": "<string>",
"reason": "<string>",
"example": "<string>"
}
]
}{
"type": "<string>",
"title": "<string>",
"status": 403,
"detail": "<string>",
"code": "workspace_forbidden",
"request_id": "<string>",
"instance": "<string>",
"invalid_params": [
{
"field": "<string>",
"reason": "<string>",
"example": "<string>"
}
]
}{
"type": "<string>",
"title": "<string>",
"status": 404,
"detail": "<string>",
"code": "not_found",
"request_id": "<string>",
"instance": "<string>",
"invalid_params": [
{
"field": "<string>",
"reason": "<string>",
"example": "<string>"
}
]
}{
"type": "<string>",
"title": "<string>",
"status": 409,
"detail": "<string>",
"code": "policy_version_conflict",
"request_id": "<string>",
"instance": "<string>",
"invalid_params": [
{
"field": "<string>",
"reason": "<string>",
"example": "<string>"
}
]
}{
"type": "<string>",
"title": "<string>",
"status": 413,
"detail": "<string>",
"code": "payload_too_large",
"request_id": "<string>",
"instance": "<string>",
"invalid_params": [
{
"field": "<string>",
"reason": "<string>",
"example": "<string>"
}
]
}{
"type": "<string>",
"title": "<string>",
"status": 415,
"detail": "<string>",
"code": "unsupported_media_type",
"request_id": "<string>",
"instance": "<string>",
"invalid_params": [
{
"field": "<string>",
"reason": "<string>",
"example": "<string>"
}
]
}{
"type": "<string>",
"title": "<string>",
"status": 503,
"detail": "<string>",
"code": "service_unavailable",
"request_id": "<string>",
"instance": "<string>",
"invalid_params": [
{
"field": "<string>",
"reason": "<string>",
"example": "<string>"
}
]
}Start a policy evaluation
Creates a job with fixed candidates, assumptions, seed, baseline policy and account cohort. Send an Idempotency-Key for safe retries.
The job evaluates a snapshot of retained evidence. It makes no new source requests and does not change your settings.
An environment can retain five jobs. Each job permits at most 1000 accounts, 50000 request attempts and 64 MiB of evidence. Jobs expire within 24 hours. Source deletion or shorter retention can invalidate the evidence and result sooner.
Diagnostic capture completeness is currently unknown. Results therefore return no_change and cannot be published. Review the report’s coverage before drawing conclusions.
Poll the returned job and respect Retry-After.
Requires settings or management, within the key’s own workspace and environment.
curl --request POST \
--url 'https://api.noresponse.org/v1/workspaces/tnt_01JA2Z8K6Q4V7W9XBCDEFGHJKM/evaluations/test' \
--header "Authorization: Bearer $NORESPONSE_API_KEY" \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: account-acct_7f3a9c' \
--data '{
"expected_policy_version": 848473,
"from": "2026-01-01T00:00:00Z",
"to": "2026-01-02T00:00:00Z",
"candidates": [],
"costs": {
"legitimate": {
"allow": 8857.2,
"step_up": 4026.42,
"review": 3262.51,
"block": 8887.65
},
"abuse": {
"allow": 9853.36,
"step_up": 4011.13,
"review": 9729.18,
"block": 4702.94
}
},
"limits": {
"review_rate": 1758.36,
"server_error_rate": 2521.05,
"unavailable_result_rate": 7870.49,
"p95_ms": 8530.5
},
"label_collection": "Customer support reviewed the outcome labels for the selected cohort.",
"split_seed": "reviewed-cohort-seed-01"
}'
import { NoResponse } from "@noresponse/node";
const noResponse = new NoResponse({
apiKey: process.env["NORESPONSE_API_KEY"] ?? "",
});
async function run() {
const result = await noResponse.evaluations.create({
workspaceId: "tnt_01JA2Z8K6Q4V7W9XBCDEFGHJKM",
environment: "test",
idempotencyKey: "account-acct_7f3a9c",
body: {
expectedPolicyVersion: 848473,
from: "2026-01-01T00:00:00Z",
to: "2026-01-02T00:00:00Z",
candidates: [],
costs: {
legitimate: {
allow: 8857.2,
stepUp: 4026.42,
review: 3262.51,
block: 8887.65,
},
abuse: {
allow: 9853.36,
stepUp: 4011.13,
review: 9729.18,
block: 4702.94,
},
},
limits: {
reviewRate: 1758.36,
serverErrorRate: 2521.05,
unavailableResultRate: 7870.49,
p95Ms: 8530.5,
},
labelCollection: "Customer support reviewed the outcome labels for the selected cohort.",
splitSeed: "reviewed-cohort-seed-01",
},
});
console.log(result);
}
run();
from noresponse import NoResponse, models
import os
with NoResponse(
api_key=os.getenv("NORESPONSE_API_KEY", ""),
) as no_response:
res = no_response.evaluations.create(workspace_id="tnt_01JA2Z8K6Q4V7W9XBCDEFGHJKM", environment="test", idempotency_key="account-acct_7f3a9c", expected_policy_version=848473, from_="2026-01-01T00:00:00Z", to="2026-01-02T00:00:00Z", candidates=[], costs=models.shared.PolicyEvaluationRequestCosts(
legitimate=models.shared.Cost(
allow=8857.2,
step_up=4026.42,
review=3262.51,
block=8887.65,
),
abuse=models.shared.Cost(
allow=9853.36,
step_up=4011.13,
review=9729.18,
block=4702.94,
),
), limits={
"review_rate": 1758.36,
"server_error_rate": 2521.05,
"unavailable_result_rate": 7870.49,
"p95_ms": 8530.5,
}, label_collection="Customer support reviewed the outcome labels for the selected cohort.", split_seed="reviewed-cohort-seed-01")
# Handle response
print(res)
package main
import(
"context"
"os"
noresponse "github.com/noresponsehq/go/v12"
"github.com/noresponsehq/go/v12/models/components"
"log"
)
func main() {
ctx := context.Background()
s := noresponse.New(
noresponse.WithSecurity(os.Getenv("NORESPONSE_API_KEY")),
)
res, err := s.Evaluations.Create(ctx, "tnt_01JA2Z8K6Q4V7W9XBCDEFGHJKM", components.KeyEnvironmentTest, "account-acct_7f3a9c", components.PolicyEvaluationRequest{
ExpectedPolicyVersion: 848473,
From: "2026-01-01T00:00:00Z",
To: "2026-01-02T00:00:00Z",
Candidates: []components.Thresholds{},
Costs: components.PolicyEvaluationRequestCosts{
Legitimate: components.Cost{
Allow: 8857.2,
StepUp: 4026.42,
Review: 3262.51,
Block: 8887.65,
},
Abuse: components.Cost{
Allow: 9853.36,
StepUp: 4011.13,
Review: 9729.18,
Block: 4702.94,
},
},
Limits: components.PolicyEvaluationRequestLimits{
ReviewRate: 1758.36,
ServerErrorRate: 2521.05,
UnavailableResultRate: 7870.49,
P95Ms: 8530.5,
},
LabelCollection: "Customer support reviewed the outcome labels for the selected cohort.",
SplitSeed: "reviewed-cohort-seed-01",
})
if err != nil {
log.Fatal(err)
}
if res != nil {
// handle response
}
}
package hello.world;
import java.lang.Exception;
import java.util.List;
import org.noresponse.NoResponse;
import org.noresponse.models.errors.AuthenticationException;
import org.noresponse.models.errors.BadRequestException;
import org.noresponse.models.errors.ConflictException;
import org.noresponse.models.errors.NotFoundException;
import org.noresponse.models.errors.PermissionDeniedException;
import org.noresponse.models.errors.RateLimitException;
import org.noresponse.models.operations.CreatePolicyEvaluationResponse;
import org.noresponse.models.shared.Cost;
import org.noresponse.models.shared.KeyEnvironment;
import org.noresponse.models.shared.PolicyEvaluationRequest;
import org.noresponse.models.shared.PolicyEvaluationRequestCosts;
import org.noresponse.models.shared.PolicyEvaluationRequestLimits;
public class Application {
public static void main(String[] args) throws Exception {
NoResponse sdk = NoResponse.builder()
.apiKey(System.getenv().getOrDefault("NORESPONSE_API_KEY", ""))
.build();
CreatePolicyEvaluationResponse res = sdk.evaluations().create()
.workspaceId("tnt_01JA2Z8K6Q4V7W9XBCDEFGHJKM")
.environment(KeyEnvironment.TEST)
.idempotencyKey("account-acct_7f3a9c")
.body(PolicyEvaluationRequest.builder()
.expectedPolicyVersion(848473L)
.from("2026-01-01T00:00:00Z")
.to("2026-01-02T00:00:00Z")
.candidates(List.of())
.costs(PolicyEvaluationRequestCosts.builder()
.legitimate(Cost.builder()
.allow(8857.2)
.stepUp(4026.42)
.review(3262.51)
.block(8887.65)
.build())
.abuse(Cost.builder()
.allow(9853.36)
.stepUp(4011.13)
.review(9729.18)
.block(4702.94)
.build())
.build())
.limits(PolicyEvaluationRequestLimits.builder()
.reviewRate(1758.36)
.serverErrorRate(2521.05)
.unavailableResultRate(7870.49)
.p95Ms(8530.5)
.build())
.labelCollection("Customer support reviewed the outcome labels for the selected cohort.")
.splitSeed("reviewed-cohort-seed-01")
.build())
.call();
if (res.policyEvaluation().isPresent()) {
System.out.println(res.policyEvaluation().get());
}
}
}
using NoResponse;
using NoResponse.Models.Shared;
using System;
using System.Collections.Generic;
var sdk = new NoResponseClient(apiKey: Environment.GetEnvironmentVariable("NORESPONSE_API_KEY"));
var res = await sdk.Evaluations.CreateAsync(
workspaceId: "tnt_01JA2Z8K6Q4V7W9XBCDEFGHJKM",
environment: KeyEnvironment.Test,
body: new PolicyEvaluationRequest() {
ExpectedPolicyVersion = 848473,
From = "2026-01-01T00:00:00Z",
To = "2026-01-02T00:00:00Z",
Candidates = new List<Thresholds>() {},
Costs = new PolicyEvaluationRequestCosts() {
Legitimate = new Cost() {
Allow = 8857.2D,
StepUp = 4026.42D,
Review = 3262.51D,
Block = 8887.65D,
},
Abuse = new Cost() {
Allow = 9853.36D,
StepUp = 4011.13D,
Review = 9729.18D,
Block = 4702.94D,
},
},
Limits = new PolicyEvaluationRequestLimits() {
ReviewRate = 1758.36D,
ServerErrorRate = 2521.05D,
UnavailableResultRate = 7870.49D,
P95Ms = 8530.5D,
},
LabelCollection = "Customer support reviewed the outcome labels for the selected cohort.",
SplitSeed = "reviewed-cohort-seed-01",
},
idempotencyKey: "account-acct_7f3a9c"
);
// handle response
<?php
declare(strict_types=1);
require 'vendor/autoload.php';
use NoResponse;
use NoResponse\Models\Shared;
$sdk = NoResponse\NoResponseClient::builder()
->setSecurity(
getenv('NORESPONSE_API_KEY') ?: ''
)
->build();
$body = new Shared\PolicyEvaluationRequest(
expectedPolicyVersion: 848473,
from: '2026-01-01T00:00:00Z',
to: '2026-01-02T00:00:00Z',
candidates: [],
costs: new Shared\PolicyEvaluationRequestCosts(
legitimate: new Shared\Cost(
allow: 8857.2,
stepUp: 4026.42,
review: 3262.51,
block: 8887.65,
),
abuse: new Shared\Cost(
allow: 9853.36,
stepUp: 4011.13,
review: 9729.18,
block: 4702.94,
),
),
limits: new Shared\PolicyEvaluationRequestLimits(
reviewRate: 1758.36,
serverErrorRate: 2521.05,
unavailableResultRate: 7870.49,
p95Ms: 8530.5,
),
labelCollection: 'Customer support reviewed the outcome labels for the selected cohort.',
splitSeed: 'reviewed-cohort-seed-01',
);
$response = $sdk->evaluations->create(
workspaceId: 'tnt_01JA2Z8K6Q4V7W9XBCDEFGHJKM',
environment: Shared\KeyEnvironment::Test,
body: $body,
idempotencyKey: 'account-acct_7f3a9c'
);
$result = $response->result;
// handle response
require 'noresponse'
Models = ::NoResponse::Models
s = ::NoResponse::NoResponseClient.new(
api_key: ENV.fetch('NORESPONSE_API_KEY', '')
)
res = s.evaluations.create(workspace_id: 'tnt_01JA2Z8K6Q4V7W9XBCDEFGHJKM', environment: Models::Shared::KeyEnvironment::TEST, body: Models::Shared::PolicyEvaluationRequest.new(
expected_policy_version: 848_473,
from: '2026-01-01T00:00:00Z',
to: '2026-01-02T00:00:00Z',
candidates: [],
costs: Models::Shared::PolicyEvaluationRequestCosts.new(
legitimate: Models::Shared::Cost.new(
allow: 8857.2,
step_up: 4026.42,
review: 3262.51,
block: 8887.65
),
abuse: Models::Shared::Cost.new(
allow: 9853.36,
step_up: 4011.13,
review: 9729.18,
block: 4702.94
)
),
limits: Models::Shared::PolicyEvaluationRequestLimits.new(
review_rate: 1758.36,
server_error_rate: 2521.05,
unavailable_result_rate: 7870.49,
p95_ms: 8530.5
),
label_collection: 'Customer support reviewed the outcome labels for the selected cohort.',
split_seed: 'reviewed-cohort-seed-01'
), idempotency_key: 'account-acct_7f3a9c')
unless res.nil?
# handle response
end
{
"id": "<string>",
"environment": "live",
"status": "queued",
"policy_version": 4503599627370495,
"scoring_policy": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"expires_at": "2023-11-07T05:31:56Z",
"accounts": 500,
"requests": 25000,
"evaluator_version": "identity-threshold-evaluator-v2",
"evaluator_sha256": "<string>",
"captured_at": "2023-11-07T05:31:56Z",
"finished_at": "2023-11-07T05:31:56Z",
"build_version": "<string>",
"result_status": "no_change",
"error_code": "<string>",
"published_policy_version": 4503599627370495,
"manifest_sha256": "<string>",
"input_sha256": "<string>",
"cohort_sha256": "<string>",
"result_sha256": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 400,
"detail": "<string>",
"code": "invalid_request",
"request_id": "<string>",
"instance": "<string>",
"invalid_params": [
{
"field": "<string>",
"reason": "<string>",
"example": "<string>"
}
]
}{
"type": "<string>",
"title": "<string>",
"status": 401,
"detail": "<string>",
"code": "unauthorized",
"request_id": "<string>",
"instance": "<string>",
"invalid_params": [
{
"field": "<string>",
"reason": "<string>",
"example": "<string>"
}
]
}{
"type": "<string>",
"title": "<string>",
"status": 403,
"detail": "<string>",
"code": "workspace_forbidden",
"request_id": "<string>",
"instance": "<string>",
"invalid_params": [
{
"field": "<string>",
"reason": "<string>",
"example": "<string>"
}
]
}{
"type": "<string>",
"title": "<string>",
"status": 404,
"detail": "<string>",
"code": "not_found",
"request_id": "<string>",
"instance": "<string>",
"invalid_params": [
{
"field": "<string>",
"reason": "<string>",
"example": "<string>"
}
]
}{
"type": "<string>",
"title": "<string>",
"status": 409,
"detail": "<string>",
"code": "policy_version_conflict",
"request_id": "<string>",
"instance": "<string>",
"invalid_params": [
{
"field": "<string>",
"reason": "<string>",
"example": "<string>"
}
]
}{
"type": "<string>",
"title": "<string>",
"status": 413,
"detail": "<string>",
"code": "payload_too_large",
"request_id": "<string>",
"instance": "<string>",
"invalid_params": [
{
"field": "<string>",
"reason": "<string>",
"example": "<string>"
}
]
}{
"type": "<string>",
"title": "<string>",
"status": 415,
"detail": "<string>",
"code": "unsupported_media_type",
"request_id": "<string>",
"instance": "<string>",
"invalid_params": [
{
"field": "<string>",
"reason": "<string>",
"example": "<string>"
}
]
}{
"type": "<string>",
"title": "<string>",
"status": 503,
"detail": "<string>",
"code": "service_unavailable",
"request_id": "<string>",
"instance": "<string>",
"invalid_params": [
{
"field": "<string>",
"reason": "<string>",
"example": "<string>"
}
]
}Authorizations
Your API key, sent as Authorization: Bearer <key>. A key is nrk_live_ or nrk_test_, a 26-character key id, _ and a 43-character secret. Account, audit and usage data stay within the key's environment. Dedicated team scopes apply across the workspace.
assess creates and reads assessments, records outcomes and reports key usage. investigate reads accounts, assessment history and request diagnostics without export or enforcement access. The legacy history scope also permits account exports, submitted identifiers and enforcement reports. delete permits account and assessment deletion.
evidence or detailed adds detailed merged evidence and submitted identifiers where the operation permits them. Neither grants access to the underlying resource alone. exports permits exports with the underlying account or audit scope. audit reads audit events and usage reads usage. audit_manage manages audit streams and retention, and includes audit-read and export authority.
webhooks manages webhook endpoints. integrations manages hosted auth-provider integrations. management manages keys, settings, lists, reviews and policy evaluations in the key's environment. New keys cannot exceed the issuer's effective permissions.
settings reads configuration, previews policy and list changes, runs evaluations and changes retention. Publishing decision policy or changing lists requires settings and policy_publish together, or the legacy management scope.
groups creates and reads groups, adds people, starts and cancels screenings and records decisions on people, in the key's environment.
members reads the workspace directory. members_manage also administers non-owner members and invitations. These scopes require a live key issued by a current owner with access to both environments. They grant access across the workspace. management does not grant team access. API keys cannot change owners or accept invitations.
A missing, unknown, revoked or expired key answers 401. A valid key without a required scope answers 403.
Headers
Path Parameters
The workspace id. A workspace the acting user is not an active member of answers 404, as do another workspace than an API key's own, a malformed id and a test environment's id. The workspace id, which is also its live environment's workspace id; the test environment's is the same id with:test appended. A workspace created through the API is tnt_ and a 26-character ULID.
^[A-Za-z0-9][A-Za-z0-9_.-]{0,122}$The environment: live or test. Each has its own settings. Any other value answers 400. An API key reads and changes only its own environment's; the other answers 404. The environment the key belongs to. A live key assesses with live sources; a test key answers from the deterministic simulator.
live, test Body
Response
The bounded job is durably queued. Poll Location after Retry-After.