curl --request GET \
--url 'https://api.noresponse.org/v1/requests?from=2026-10-21T00%3A00%3A00Z&to=2026-10-22T00%3A00%3A00Z&limit=50' \
--header "Authorization: Bearer $NORESPONSE_API_KEY"
import { NoResponse } from "@noresponse/node";
const noResponse = new NoResponse({
apiKey: process.env["NORESPONSE_API_KEY"] ?? "",
});
async function run() {
const result = await noResponse.requests.list({
from: "2026-10-21T00:00:00Z",
to: "2026-10-22T00:00:00Z",
});
for await (const page of result) {
console.log(page);
}
}
run();
from noresponse import NoResponse
import os
with NoResponse(
api_key=os.getenv("NORESPONSE_API_KEY", ""),
) as no_response:
res = no_response.requests.list(from_="2026-10-21T00:00:00Z", to="2026-10-22T00:00:00Z", limit=50)
while res is not None:
# Handle items
res = res.next()
package main
import(
"context"
"os"
noresponse "github.com/noresponsehq/go/v12"
"github.com/noresponsehq/go/v12/models/operations"
"log"
)
func main() {
ctx := context.Background()
s := noresponse.New(
noresponse.WithSecurity(os.Getenv("NORESPONSE_API_KEY")),
)
res, err := s.Requests.List(ctx, operations.ListRequestDiagnosticsRequest{
From: "2026-10-21T00:00:00Z",
To: "2026-10-22T00:00:00Z",
})
if err != nil {
log.Fatal(err)
}
if res != nil {
for {
// handle items
res, err = res.Next()
if err != nil {
// handle error
}
if res == nil {
break
}
}
}
}
package hello.world;
import java.lang.Exception;
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.ListRequestDiagnosticsRequest;
import org.noresponse.models.operations.ListRequestDiagnosticsResponse;
public class Application {
public static void main(String[] args) throws Exception {
NoResponse sdk = NoResponse.builder()
.apiKey(System.getenv().getOrDefault("NORESPONSE_API_KEY", ""))
.build();
ListRequestDiagnosticsRequest req = ListRequestDiagnosticsRequest.builder()
.from("2026-10-21T00:00:00Z")
.to("2026-10-22T00:00:00Z")
.build();
sdk.requests().list()
.request(req)
.callAsStream()
.forEach((ListRequestDiagnosticsResponse item) -> {
// handle page
});
}
}
using NoResponse;
using NoResponse.Models.Operations;
using NoResponse.Models.Shared;
using System;
var sdk = new NoResponseClient(apiKey: Environment.GetEnvironmentVariable("NORESPONSE_API_KEY"));
ListRequestDiagnosticsRequest req = new ListRequestDiagnosticsRequest() {
From = "2026-10-21T00:00:00Z",
To = "2026-10-22T00:00:00Z",
};
ListRequestDiagnosticsResponse? res = await sdk.Requests.ListAsync(req);
while(res != null)
{
// handle items
res = await res.Next!();
}
<?php
declare(strict_types=1);
require 'vendor/autoload.php';
use NoResponse;
use NoResponse\Models\Operations;
$sdk = NoResponse\NoResponseClient::builder()
->setSecurity(
getenv('NORESPONSE_API_KEY') ?: ''
)
->build();
$request = new Operations\ListRequestDiagnosticsRequest(
from: '2026-10-21T00:00:00Z',
to: '2026-10-22T00:00:00Z',
);
$responses = $sdk->requests->list(
request: $request
);
foreach ($responses as $response) {
$result = $response->result;
// handle response
}
require 'noresponse'
Models = ::NoResponse::Models
s = ::NoResponse::NoResponseClient.new(
api_key: ENV.fetch('NORESPONSE_API_KEY', '')
)
req = Models::Operations::ListRequestDiagnosticsRequest.new(
from: '2026-10-21T00:00:00Z',
to: '2026-10-22T00:00:00Z'
)
res = s.requests.list(request: req)
unless res.nil?
# handle response
end
{
"items": [
{
"id": "<string>",
"request_id": "<string>",
"route": "<string>",
"http_status": 349,
"duration_ms": 1,
"started_at": "2023-11-07T05:31:56Z",
"completed_at": "2023-11-07T05:31:56Z",
"expires_at": "2023-11-07T05:31:56Z",
"idempotent_replayed": true,
"write_complete": true,
"error_code": "<string>",
"decision": {
"assessment_id": "<string>",
"assessment_version": 500,
"flow": "account_creation",
"status": "complete",
"policy_version": "<string>",
"score": 50,
"account": {
"schema_version": "1",
"id": "<string>",
"risk": {
"score": 50,
"decision": "allow",
"reasons": [
{
"code": "no_digital_footprint",
"direction": "raises",
"impact": "none",
"identifier": "email",
"list_entry_id": "<string>"
}
]
},
"decisions_by_flow": {
"account_creation": "allow",
"login": "allow",
"purchase": "allow"
},
"assessment_id": "<string>",
"updated_at": "2023-11-07T05:31:56Z",
"risk_version": 2
}
},
"api_key_id": "<string>"
}
],
"next_cursor": "<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": "https://docs.noresponse.org/problems/workspace-forbidden",
"title": "Forbidden",
"status": 403,
"detail": "The API key does not carry a scope this operation accepts.",
"code": "workspace_forbidden",
"request_id": "0123456789abcdef0123456789abcdef"
}{
"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": "https://docs.noresponse.org/problems/rate-limited",
"title": "Rate limited",
"status": 429,
"detail": "The tenant's assessment rate is exhausted; retry after the Retry-After interval.",
"code": "rate_limited",
"request_id": "0123456789abcdef0123456789abcdef"
}{
"type": "<string>",
"title": "<string>",
"status": 503,
"detail": "<string>",
"code": "service_unavailable",
"request_id": "<string>",
"instance": "<string>",
"invalid_params": [
{
"field": "<string>",
"reason": "<string>",
"example": "<string>"
}
]
}Search request diagnostics
Search authenticated request attempts by time, route, status or request correlation id. The interval is at most seven days. Each attempt has a unique id and may include the exact served decision. Records are bounded best effort and exclude request bodies, secrets and source payloads. A repeated correlation id does not overwrite another attempt.
curl --request GET \
--url 'https://api.noresponse.org/v1/requests?from=2026-10-21T00%3A00%3A00Z&to=2026-10-22T00%3A00%3A00Z&limit=50' \
--header "Authorization: Bearer $NORESPONSE_API_KEY"
import { NoResponse } from "@noresponse/node";
const noResponse = new NoResponse({
apiKey: process.env["NORESPONSE_API_KEY"] ?? "",
});
async function run() {
const result = await noResponse.requests.list({
from: "2026-10-21T00:00:00Z",
to: "2026-10-22T00:00:00Z",
});
for await (const page of result) {
console.log(page);
}
}
run();
from noresponse import NoResponse
import os
with NoResponse(
api_key=os.getenv("NORESPONSE_API_KEY", ""),
) as no_response:
res = no_response.requests.list(from_="2026-10-21T00:00:00Z", to="2026-10-22T00:00:00Z", limit=50)
while res is not None:
# Handle items
res = res.next()
package main
import(
"context"
"os"
noresponse "github.com/noresponsehq/go/v12"
"github.com/noresponsehq/go/v12/models/operations"
"log"
)
func main() {
ctx := context.Background()
s := noresponse.New(
noresponse.WithSecurity(os.Getenv("NORESPONSE_API_KEY")),
)
res, err := s.Requests.List(ctx, operations.ListRequestDiagnosticsRequest{
From: "2026-10-21T00:00:00Z",
To: "2026-10-22T00:00:00Z",
})
if err != nil {
log.Fatal(err)
}
if res != nil {
for {
// handle items
res, err = res.Next()
if err != nil {
// handle error
}
if res == nil {
break
}
}
}
}
package hello.world;
import java.lang.Exception;
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.ListRequestDiagnosticsRequest;
import org.noresponse.models.operations.ListRequestDiagnosticsResponse;
public class Application {
public static void main(String[] args) throws Exception {
NoResponse sdk = NoResponse.builder()
.apiKey(System.getenv().getOrDefault("NORESPONSE_API_KEY", ""))
.build();
ListRequestDiagnosticsRequest req = ListRequestDiagnosticsRequest.builder()
.from("2026-10-21T00:00:00Z")
.to("2026-10-22T00:00:00Z")
.build();
sdk.requests().list()
.request(req)
.callAsStream()
.forEach((ListRequestDiagnosticsResponse item) -> {
// handle page
});
}
}
using NoResponse;
using NoResponse.Models.Operations;
using NoResponse.Models.Shared;
using System;
var sdk = new NoResponseClient(apiKey: Environment.GetEnvironmentVariable("NORESPONSE_API_KEY"));
ListRequestDiagnosticsRequest req = new ListRequestDiagnosticsRequest() {
From = "2026-10-21T00:00:00Z",
To = "2026-10-22T00:00:00Z",
};
ListRequestDiagnosticsResponse? res = await sdk.Requests.ListAsync(req);
while(res != null)
{
// handle items
res = await res.Next!();
}
<?php
declare(strict_types=1);
require 'vendor/autoload.php';
use NoResponse;
use NoResponse\Models\Operations;
$sdk = NoResponse\NoResponseClient::builder()
->setSecurity(
getenv('NORESPONSE_API_KEY') ?: ''
)
->build();
$request = new Operations\ListRequestDiagnosticsRequest(
from: '2026-10-21T00:00:00Z',
to: '2026-10-22T00:00:00Z',
);
$responses = $sdk->requests->list(
request: $request
);
foreach ($responses as $response) {
$result = $response->result;
// handle response
}
require 'noresponse'
Models = ::NoResponse::Models
s = ::NoResponse::NoResponseClient.new(
api_key: ENV.fetch('NORESPONSE_API_KEY', '')
)
req = Models::Operations::ListRequestDiagnosticsRequest.new(
from: '2026-10-21T00:00:00Z',
to: '2026-10-22T00:00:00Z'
)
res = s.requests.list(request: req)
unless res.nil?
# handle response
end
{
"items": [
{
"id": "<string>",
"request_id": "<string>",
"route": "<string>",
"http_status": 349,
"duration_ms": 1,
"started_at": "2023-11-07T05:31:56Z",
"completed_at": "2023-11-07T05:31:56Z",
"expires_at": "2023-11-07T05:31:56Z",
"idempotent_replayed": true,
"write_complete": true,
"error_code": "<string>",
"decision": {
"assessment_id": "<string>",
"assessment_version": 500,
"flow": "account_creation",
"status": "complete",
"policy_version": "<string>",
"score": 50,
"account": {
"schema_version": "1",
"id": "<string>",
"risk": {
"score": 50,
"decision": "allow",
"reasons": [
{
"code": "no_digital_footprint",
"direction": "raises",
"impact": "none",
"identifier": "email",
"list_entry_id": "<string>"
}
]
},
"decisions_by_flow": {
"account_creation": "allow",
"login": "allow",
"purchase": "allow"
},
"assessment_id": "<string>",
"updated_at": "2023-11-07T05:31:56Z",
"risk_version": 2
}
},
"api_key_id": "<string>"
}
],
"next_cursor": "<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": "https://docs.noresponse.org/problems/workspace-forbidden",
"title": "Forbidden",
"status": 403,
"detail": "The API key does not carry a scope this operation accepts.",
"code": "workspace_forbidden",
"request_id": "0123456789abcdef0123456789abcdef"
}{
"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": "https://docs.noresponse.org/problems/rate-limited",
"title": "Rate limited",
"status": 429,
"detail": "The tenant's assessment rate is exhausted; retry after the Retry-After interval.",
"code": "rate_limited",
"request_id": "0123456789abcdef0123456789abcdef"
}{
"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.
Query Parameters
Response
Search request diagnostics. The retained snapshot; no current decision is substituted for historical evidence.