import { NoResponse } from "@noresponse/node";
const noResponse = new NoResponse({
apiKey: process.env["NORESPONSE_API_KEY"] ?? "",
});
async function run() {
const result = await noResponse.accounts.listChanged({});
console.log(result);
}
run();
from noresponse import NoResponse
import os
with NoResponse(
api_key=os.getenv("NORESPONSE_API_KEY", ""),
) as no_response:
res = no_response.accounts.list_changed(limit=50, unenforced=False)
# Handle response
print(res)
package main
import(
"context"
"os"
noresponse "github.com/noresponsehq/go/v7"
"log"
)
func main() {
ctx := context.Background()
s := noresponse.New(
noresponse.WithSecurity(os.Getenv("NORESPONSE_API_KEY")),
)
res, err := s.Accounts.ListChanged(ctx, nil, noresponse.Pointer[int64](50), noresponse.Pointer(false))
if err != nil {
log.Fatal(err)
}
if res != nil {
// handle response
}
}
using NoResponse;
using NoResponse.Models.Shared;
using System;
var sdk = new NoResponseClient(apiKey: Environment.GetEnvironmentVariable("NORESPONSE_API_KEY"));
var res = await sdk.Accounts.ListChangedAsync(
limit: 50,
unenforced: false
);
// handle response
Lists your accounts whose risk changed, oldest change first. Each item is the account as GET /v1/accounts/{account_id} returns it. An account is listed when its risk_version goes up and it has a current risk.
Every page has next_cursor. Send it back as changed_since to get the changes after that page. Without changed_since, the list starts at the oldest change. When nothing changed, items is empty and next_cursor is the cursor you sent. To poll, call again with the latest next_cursor. There is no last page.
An account comes back each time its risk changes again, with a higher risk_version. Keep the copy with the highest risk_version. A change is listed only after all earlier changes are visible, so polling does not skip a change.
unenforced=true lists only the accounts that need action: a decision other than allow for at least one flow, and no applied enforcement at the current risk_version. The cursor also moves past the accounts that this filter removes, so a page can have fewer than limit items, or none, before later changes. Continue to poll with next_cursor.
Read-only and safe to retry. A changed or foreign cursor answers 400 invalid_cursor. Requires the history scope.
import { NoResponse } from "@noresponse/node";
const noResponse = new NoResponse({
apiKey: process.env["NORESPONSE_API_KEY"] ?? "",
});
async function run() {
const result = await noResponse.accounts.listChanged({});
console.log(result);
}
run();
from noresponse import NoResponse
import os
with NoResponse(
api_key=os.getenv("NORESPONSE_API_KEY", ""),
) as no_response:
res = no_response.accounts.list_changed(limit=50, unenforced=False)
# Handle response
print(res)
package main
import(
"context"
"os"
noresponse "github.com/noresponsehq/go/v7"
"log"
)
func main() {
ctx := context.Background()
s := noresponse.New(
noresponse.WithSecurity(os.Getenv("NORESPONSE_API_KEY")),
)
res, err := s.Accounts.ListChanged(ctx, nil, noresponse.Pointer[int64](50), noresponse.Pointer(false))
if err != nil {
log.Fatal(err)
}
if res != nil {
// handle response
}
}
using NoResponse;
using NoResponse.Models.Shared;
using System;
var sdk = new NoResponseClient(apiKey: Environment.GetEnvironmentVariable("NORESPONSE_API_KEY"));
var res = await sdk.Accounts.ListChangedAsync(
limit: 50,
unenforced: false
);
// handle response
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. A key sees only its own environment's data.
Each key has one or more scopes: assess creates and reads assessments, records outcomes and reports key usage; history reads assessments, an account's current risk, the accounts whose risk changed and an account's history, records enforcements and erases an account; detailed adds the detailed view; webhooks registers, tests, rotates and deletes webhook endpoints; integrations registers and manages hosted provider integrations. A missing, unknown, revoked or expired key answers 401. A valid key without the scope an operation needs answers 403.
true lists only accounts with a decision other than allow for some flow and no applied enforcement at their current risk_version.
Response
One page of the accounts whose risk changed after changed_since, oldest change first, with the cursor to poll from next.
Body of the 200 answer to GET /v1/accounts: the calling workspace's accounts whose risk changed after changed_since, in the environment of the calling key, oldest change first. An account is listed when its risk_version advanced and it has a current risk, and each item is the account exactly as GET /v1/accounts/{account_id} answers it. An account appears once per page, at its latest change; when its risk changes again later, it appears again on a later page with the newer risk_version. next_cursor is always present: pass it back as changed_since to read the changes made after this page.
Opaque cursor after the last change this page read, bound to the workspace and the environment of the calling key. Pass it back unchanged as changed_since. It is present on every page, the last one included: when nothing changed after changed_since it is the cursor that was sent, so a poller keeps calling with the latest next_cursor. A tampered or foreign cursor answers 400 invalid_cursor. Consumers do not parse it.
Required string length: 1 - 256
Pattern: ^[A-Za-z0-9_-]+$
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"NoResponse docs","description":"Developer docs for the NoResponse API: one current risk score, decision and reasons for every account.","colors":{"primary":"#163ce7","light":"#9fb3ff","dark":"#3355f0"},"logo":{"light":"https://mintcdn.com/no-response/353LSDk6RAGXxNkQ/logo/light.svg?fit=max\u0026auto=format\u0026n=353LSDk6RAGXxNkQ\u0026q=85\u0026s=13d1cf3b27a1edaec89f7309a558276e","dark":"https://mintcdn.com/no-response/353LSDk6RAGXxNkQ/logo/dark.svg?fit=max\u0026auto=format\u0026n=353LSDk6RAGXxNkQ\u0026q=85\u0026s=aa9d27695cbad3b541581c6fb245e3d1","href":"https://docs.noresponse.org"},"favicon":"https://mintcdn.com/no-response/353LSDk6RAGXxNkQ/favicon.svg?fit=max\u0026auto=format\u0026n=353LSDk6RAGXxNkQ\u0026q=85\u0026s=83fc8662bf2d12d1160beb5e45bdfb84","api":{"playground":{"display":"interactive","proxy":true},"examples":{"prefill":true,"autogenerate":false}},"appearance":{"default":"light"},"background":{"color":{"light":"#f6f6f1","dark":"#0b1020"}},"navbar":{"links":[{"href":"https://noresponse.org","label":"noresponse.org"}],"primary":{"type":"button","label":"Book a demo","href":"https://noresponse.org/demo/"}},"footer":{"socials":{"website":"https://noresponse.org","github":"https://github.com/noresponsehq"}},"seo":{"indexing":"all"},"fonts":{"heading":{"family":"Schibsted Grotesk","weight":600,"source":"fonts/SchibstedGrotesk-Variable.woff2","format":"woff2"},"body":{"family":"Schibsted Grotesk","weight":400,"source":"fonts/SchibstedGrotesk-Variable.woff2","format":"woff2"}},"icons":{"library":"lucide"},"styling":{"codeblocks":{"theme":{"light":"github-light-default","dark":"github-dark-default"}},"latex":false},"errors":{"404":{"redirect":false,"title":"Page not found","description":"This page does not exist. The address may have changed when the docs moved. Go to the [overview](/) or open the [API reference](/api-reference)."}},"contextual":{"options":["copy","view","download-spec","chatgpt","claude"],"display":"header"},"thumbnails":{"preset":"classic","appearance":"dark","surface":"brand","fonts":{"family":"Schibsted Grotesk","source":"fonts/SchibstedGrotesk-600.ttf","format":"ttf"},"eyebrow":{"source":"tab","style":"plain"}},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"no-response","hasAudioNarration":false,"actualSubdomain":"no-response","customDomains":["docs.noresponse.org"],"gitSource":{"type":"github","owner":"noresponsehq","repo":"noresponse","deployBranch":"main","contentDirectory":"apps/docs","isPrivate":true,"mountPath":"","label":"","_id":"6adb8358cea73fcb111d0b4e"},"chroma":{"latestBuiltDeploymentHistoryId":"6add2989b50163d7fcc52509","collectionId":"443fd26c-9b52-40e9-86e1-abdd23ea9e90","liveDeploymentHistoryId":"6add2989b50163d7fcc52509","schemaVersion":"v3"},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6add2bcbd66577f58b9c8767","clientVersion":"0.0.3965","searchFilterCounts":[{"language":"default","tag":"API reference","count":58},{"language":"default","tag":"Endpoints","count":29},{"language":"default","tag":"Guides","count":26},{"language":"default","tag":"Errors","count":21},{"language":"default","tag":"Problem types","count":20},{"language":"default","tag":"Webhooks","count":13},{"language":"default","tag":"Using the API","count":7},{"language":"default","tag":"SDKs","count":7},{"language":"default","tag":"Get started","count":5},{"language":"default","tag":"Accounts","count":5}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"@font-face{font-family:\"Azeret Mono\";src:url(/fonts/AzeretMono-Variable.woff2) format(\"woff2\");font-weight:100 900;font-style:normal;font-display:swap}@font-face{font-family:\"Schibsted Grotesk\";src:url(/fonts/SchibstedGrotesk-Variable-Italic.woff2) format(\"woff2\");font-weight:400 900;font-style:italic;font-display:swap}code,kbd,pre,samp{font-family:\"Azeret Mono\",ui-monospace,Menlo,monospace!important}"}],"page":{"pagePath":"api-reference/accounts/list-changed-accounts","slug":"/api-reference/accounts/list-changed-accounts","pageMetadata":{"title":"List changed accounts","description":"Lists your accounts whose risk changed, oldest change first. Each item is the account as `GET /v1/accounts/{account_id}` returns it. An account is listed when its `risk_version` goes up and it has a current risk.\n\nEvery page has `next_cursor`. Send it back as `changed_since` to get the changes after that page. Without `changed_since`, the list starts at the oldest change. When nothing changed, `items` is empty and `next_cursor` is the cursor you sent. To poll, call again with the latest `next_cursor`. There is no last page.\n\nAn account comes back each time its risk changes again, with a higher `risk_version`. Keep the copy with the highest `risk_version`. A change is listed only after all earlier changes are visible, so polling does not skip a change.\n\n`unenforced=true` lists only the accounts that need action: a decision other than `allow` for at least one flow, and no `applied` enforcement at the current `risk_version`. The cursor also moves past the accounts that this filter removes, so a page can have fewer than `limit` items, or none, before later changes. Continue to poll with `next_cursor`.\n\nRead-only and safe to retry. A changed or foreign cursor answers 400 `invalid_cursor`. Requires the `history` scope.","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/accounts","href":"/api-reference/accounts/list-changed-accounts","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Lists your accounts whose risk changed, oldest change first. Each item is the account as \", _jsx(_components.code, {\n children: \"GET /v1/accounts/{account_id}\"\n }), \" returns it. An account is listed when its \", _jsx(_components.code, {\n children: \"risk_version\"\n }), \" goes up and it has a current risk.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Every page has \", _jsx(_components.code, {\n children: \"next_cursor\"\n }), \". Send it back as \", _jsx(_components.code, {\n children: \"changed_since\"\n }), \" to get the changes after that page. Without \", _jsx(_components.code, {\n children: \"changed_since\"\n }), \", the list starts at the oldest change. When nothing changed, \", _jsx(_components.code, {\n children: \"items\"\n }), \" is empty and \", _jsx(_components.code, {\n children: \"next_cursor\"\n }), \" is the cursor you sent. To poll, call again with the latest \", _jsx(_components.code, {\n children: \"next_cursor\"\n }), \". There is no last page.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"An account comes back each time its risk changes again, with a higher \", _jsx(_components.code, {\n children: \"risk_version\"\n }), \". Keep the copy with the highest \", _jsx(_components.code, {\n children: \"risk_version\"\n }), \". A change is listed only after all earlier changes are visible, so polling does not skip a change.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.code, {\n children: \"unenforced=true\"\n }), \" lists only the accounts that need action: a decision other than \", _jsx(_components.code, {\n children: \"allow\"\n }), \" for at least one flow, and no \", _jsx(_components.code, {\n children: \"applied\"\n }), \" enforcement at the current \", _jsx(_components.code, {\n children: \"risk_version\"\n }), \". The cursor also moves past the accounts that this filter removes, so a page can have fewer than \", _jsx(_components.code, {\n children: \"limit\"\n }), \" items, or none, before later changes. Continue to poll with \", _jsx(_components.code, {\n children: \"next_cursor\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Read-only and safe to retry. A changed or foreign cursor answers 400 \", _jsx(_components.code, {\n children: \"invalid_cursor\"\n }), \". Requires the \", _jsx(_components.code, {\n children: \"history\"\n }), \" scope.\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"codeStyling":{"theme":{"light":"github-light-default","dark":"github-dark-default"}},"config":{},"pageMetadata":{"title":"List changed accounts","description":"Lists your accounts whose risk changed, oldest change first. Each item is the account as `GET /v1/accounts/{account_id}` returns it. An account is listed when its `risk_version` goes up and it has a current risk.\n\nEvery page has `next_cursor`. Send it back as `changed_since` to get the changes after that page. Without `changed_since`, the list starts at the oldest change. When nothing changed, `items` is empty and `next_cursor` is the cursor you sent. To poll, call again with the latest `next_cursor`. There is no last page.\n\nAn account comes back each time its risk changes again, with a higher `risk_version`. Keep the copy with the highest `risk_version`. A change is listed only after all earlier changes are visible, so polling does not skip a change.\n\n`unenforced=true` lists only the accounts that need action: a decision other than `allow` for at least one flow, and no `applied` enforcement at the current `risk_version`. The cursor also moves past the accounts that this filter removes, so a page can have fewer than `limit` items, or none, before later changes. Continue to poll with `next_cursor`.\n\nRead-only and safe to retry. A changed or foreign cursor answers 400 `invalid_cursor`. Requires the `history` scope.","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/accounts","href":"/api-reference/accounts/list-changed-accounts","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"listAccounts","tags":["accounts"],"summary":"List changed accounts","description":"Lists your accounts whose risk changed, oldest change first. Each item is the account as `GET /v1/accounts/{account_id}` returns it. An account is listed when its `risk_version` goes up and it has a current risk.\n\nEvery page has `next_cursor`. Send it back as `changed_since` to get the changes after that page. Without `changed_since`, the list starts at the oldest change. When nothing changed, `items` is empty and `next_cursor` is the cursor you sent. To poll, call again with the latest `next_cursor`. There is no last page.\n\nAn account comes back each time its risk changes again, with a higher `risk_version`. Keep the copy with the highest `risk_version`. A change is listed only after all earlier changes are visible, so polling does not skip a change.\n\n`unenforced=true` lists only the accounts that need action: a decision other than `allow` for at least one flow, and no `applied` enforcement at the current `risk_version`. The cursor also moves past the accounts that this filter removes, so a page can have fewer than `limit` items, or none, before later changes. Continue to poll with `next_cursor`.\n\nRead-only and safe to retry. A changed or foreign cursor answers 400 `invalid_cursor`. Requires the `history` scope.","parameters":["3b6e1c45-a30b-448e-af58-aa242ac73a3c","831fe8c6-da9f-46a3-858f-0cb013374f22","96bd8cbf-5986-4583-9fc3-d25fe8e3920a"],"responses":{"200":"5e476886-a983-4652-9124-e3f389548c8b","400":"6e63bd46-b5ed-4213-bdd1-8b293f445e15","401":"e306c3f1-aa2e-4ad0-9aa5-c4a661eccc8b","403":"2ab48df8-207b-40dd-a4c7-b31806bbcf4b","429":"0dd377cb-f931-427d-9c64-7361a4856c3b","503":"ea882f29-54c6-45d3-8127-1b19bca47923"},"security":["3a9ee943-0438-4b9b-a057-9a90b1620fe8"],"x-codeSamples":[{"lang":"curl","label":"cURL","source":"curl --request GET \\\n --url 'https://api.noresponse.org/v1/accounts?limit=50\u0026unenforced=false' \\\n --header \"Authorization: Bearer $NORESPONSE_API_KEY\"\n"},{"lang":"typescript","label":"TypeScript","source":"import { NoResponse } from \"@noresponse/node\";\n\nconst noResponse = new NoResponse({\n apiKey: process.env[\"NORESPONSE_API_KEY\"] ?? \"\",\n});\n\nasync function run() {\n const result = await noResponse.accounts.listChanged({});\n\n console.log(result);\n}\n\nrun();\n"},{"lang":"python","label":"Python","source":"from noresponse import NoResponse\nimport os\n\n\nwith NoResponse(\n api_key=os.getenv(\"NORESPONSE_API_KEY\", \"\"),\n) as no_response:\n\n res = no_response.accounts.list_changed(limit=50, unenforced=False)\n\n # Handle response\n print(res)\n"},{"lang":"go","label":"Go","source":"package main\n\nimport(\n\t\"context\"\n\t\"os\"\n\tnoresponse \"github.com/noresponsehq/go/v7\"\n\t\"log\"\n)\n\nfunc main() {\n ctx := context.Background()\n\n s := noresponse.New(\n noresponse.WithSecurity(os.Getenv(\"NORESPONSE_API_KEY\")),\n )\n\n res, err := s.Accounts.ListChanged(ctx, nil, noresponse.Pointer[int64](50), noresponse.Pointer(false))\n if err != nil {\n log.Fatal(err)\n }\n if res != nil {\n // handle response\n }\n}\n"},{"lang":"java","label":"Java","source":"package hello.world;\n\nimport java.lang.Exception;\nimport org.noresponse.NoResponse;\nimport org.noresponse.models.errors.AuthenticationException;\nimport org.noresponse.models.errors.BadRequestException;\nimport org.noresponse.models.errors.ConflictException;\nimport org.noresponse.models.errors.NotFoundException;\nimport org.noresponse.models.errors.PermissionDeniedException;\nimport org.noresponse.models.errors.RateLimitException;\nimport org.noresponse.models.operations.ListAccountsResponse;\n\npublic class Application {\n\n public static void main(String[] args) throws Exception {\n\n NoResponse sdk = NoResponse.builder()\n .apiKey(System.getenv().getOrDefault(\"NORESPONSE_API_KEY\", \"\"))\n .build();\n\n ListAccountsResponse res = sdk.accounts().listChanged()\n .limit(50L)\n .unenforced(false)\n .call();\n\n if (res.accountList().isPresent()) {\n System.out.println(res.accountList().get());\n }\n }\n}\n"},{"lang":"csharp","label":"C#","source":"using NoResponse;\nusing NoResponse.Models.Shared;\nusing System;\n\nvar sdk = new NoResponseClient(apiKey: Environment.GetEnvironmentVariable(\"NORESPONSE_API_KEY\"));\n\nvar res = await sdk.Accounts.ListChangedAsync(\n limit: 50,\n unenforced: false\n);\n\n// handle response\n"},{"lang":"php","label":"PHP","source":"\u003c?php\n\ndeclare(strict_types=1);\n\nrequire 'vendor/autoload.php';\n\nuse NoResponse;\n\n$sdk = NoResponse\\NoResponseClient::builder()\n ->setSecurity(\n getenv('NORESPONSE_API_KEY') ?: ''\n )\n ->build();\n\n\n\n$response = $sdk->accounts->listChanged(\n limit: 50,\n unenforced: false\n\n);\n\nif ($response->accountList !== null) {\n // handle response\n}\n"},{"lang":"ruby","label":"Ruby","source":"require 'noresponse'\n\nModels = ::NoResponse::Models\ns = ::NoResponse::NoResponseClient.new(\n api_key: ENV.fetch('NORESPONSE_API_KEY', '')\n)\nres = s.accounts.list_changed(limit: 50, unenforced: false)\n\nunless res.nil?\n # handle response\nend\n"}],"method":"get","type":"path","servers":["a12fbd3a-5094-4c2c-ae85-25fa286f4b9b"],"path":"/v1/accounts","baseUrlOptions":["https://api.noresponse.org"],"title":"List changed accounts","codeSamples":[{"label":"cURL","lang":"curl","source":"curl --request GET \\\n --url 'https://api.noresponse.org/v1/accounts?limit=50\u0026unenforced=false' \\\n --header \"Authorization: Bearer $NORESPONSE_API_KEY\"\n"},{"label":"TypeScript","lang":"typescript","source":"import { NoResponse } from \"@noresponse/node\";\n\nconst noResponse = new NoResponse({\n apiKey: process.env[\"NORESPONSE_API_KEY\"] ?? \"\",\n});\n\nasync function run() {\n const result = await noResponse.accounts.listChanged({});\n\n console.log(result);\n}\n\nrun();\n"},{"label":"Python","lang":"python","source":"from noresponse import NoResponse\nimport os\n\n\nwith NoResponse(\n api_key=os.getenv(\"NORESPONSE_API_KEY\", \"\"),\n) as no_response:\n\n res = no_response.accounts.list_changed(limit=50, unenforced=False)\n\n # Handle response\n print(res)\n"},{"label":"Go","lang":"go","source":"package main\n\nimport(\n\t\"context\"\n\t\"os\"\n\tnoresponse \"github.com/noresponsehq/go/v7\"\n\t\"log\"\n)\n\nfunc main() {\n ctx := context.Background()\n\n s := noresponse.New(\n noresponse.WithSecurity(os.Getenv(\"NORESPONSE_API_KEY\")),\n )\n\n res, err := s.Accounts.ListChanged(ctx, nil, noresponse.Pointer[int64](50), noresponse.Pointer(false))\n if err != nil {\n log.Fatal(err)\n }\n if res != nil {\n // handle response\n }\n}\n"},{"label":"Java","lang":"java","source":"package hello.world;\n\nimport java.lang.Exception;\nimport org.noresponse.NoResponse;\nimport org.noresponse.models.errors.AuthenticationException;\nimport org.noresponse.models.errors.BadRequestException;\nimport org.noresponse.models.errors.ConflictException;\nimport org.noresponse.models.errors.NotFoundException;\nimport org.noresponse.models.errors.PermissionDeniedException;\nimport org.noresponse.models.errors.RateLimitException;\nimport org.noresponse.models.operations.ListAccountsResponse;\n\npublic class Application {\n\n public static void main(String[] args) throws Exception {\n\n NoResponse sdk = NoResponse.builder()\n .apiKey(System.getenv().getOrDefault(\"NORESPONSE_API_KEY\", \"\"))\n .build();\n\n ListAccountsResponse res = sdk.accounts().listChanged()\n .limit(50L)\n .unenforced(false)\n .call();\n\n if (res.accountList().isPresent()) {\n System.out.println(res.accountList().get());\n }\n }\n}\n"},{"label":"C#","lang":"csharp","source":"using NoResponse;\nusing NoResponse.Models.Shared;\nusing System;\n\nvar sdk = new NoResponseClient(apiKey: Environment.GetEnvironmentVariable(\"NORESPONSE_API_KEY\"));\n\nvar res = await sdk.Accounts.ListChangedAsync(\n limit: 50,\n unenforced: false\n);\n\n// handle response\n"},{"label":"PHP","lang":"php","source":"\u003c?php\n\ndeclare(strict_types=1);\n\nrequire 'vendor/autoload.php';\n\nuse NoResponse;\n\n$sdk = NoResponse\\NoResponseClient::builder()\n ->setSecurity(\n getenv('NORESPONSE_API_KEY') ?: ''\n )\n ->build();\n\n\n\n$response = $sdk->accounts->listChanged(\n limit: 50,\n unenforced: false\n\n);\n\nif ($response->accountList !== null) {\n // handle response\n}\n"},{"label":"Ruby","lang":"ruby","source":"require 'noresponse'\n\nModels = ::NoResponse::Models\ns = ::NoResponse::NoResponseClient.new(\n api_key: ENV.fetch('NORESPONSE_API_KEY', '')\n)\nres = s.accounts.list_changed(limit: 50, unenforced: false)\n\nunless res.nil?\n # handle response\nend\n"}],"requiredOnlyExamples":false,"disableCodeSampleGeneration":true,"requestExampleType":"codeSamples","responseExampleType":"generated","prefillPlaygroundWithExample":true,"prefillPlaygroundExamples":[]},"dependencies":{"parameters":{"3b6e1c45-a30b-448e-af58-aa242ac73a3c":{"name":"changed_since","in":"query","required":false,"description":"next_cursor from an earlier page, unchanged. Absent, the list starts from the oldest change.","schema":{"type":"string","minLength":1,"maxLength":256,"pattern":"^[A-Za-z0-9_-]+$","not":{"pattern":"\\n"},"isRequired":false,"description":"next_cursor from an earlier page, unchanged. Absent, the list starts from the oldest change.","uniqueKey":"","typeLabel":"string"}},"831fe8c6-da9f-46a3-858f-0cb013374f22":{"name":"limit","in":"query","required":false,"description":"Most accounts per page.","schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"isRequired":false,"description":"Most accounts per page.","uniqueKey":"","typeLabel":"integer"}},"96bd8cbf-5986-4583-9fc3-d25fe8e3920a":{"name":"unenforced","in":"query","required":false,"description":"true lists only accounts with a decision other than allow for some flow and no applied enforcement at their current risk_version.","schema":{"type":"boolean","default":false,"isRequired":false,"description":"true lists only accounts with a decision other than allow for some flow and no applied enforcement at their current risk_version.","uniqueKey":"","typeLabel":"boolean"}}},"responses":{"5e476886-a983-4652-9124-e3f389548c8b":{"description":"One page of the accounts whose risk changed after changed_since, oldest change first, with the cursor to poll from next.","headers":{"Cache-Control":{"schema":{"type":"string","const":"no-store"},"required":true},"X-Request-ID":{"description":"The request correlation id, 32 lowercase hexadecimal characters.","schema":{"type":"string","pattern":"^[0-9a-f]{32}$","not":{"pattern":"\\n"}},"required":true}},"content":{"application/json":{"schema":{"title":"Changed accounts","description":"Body of the 200 answer to GET /v1/accounts: the calling workspace's accounts whose risk changed after changed_since, in the environment of the calling key, oldest change first. An account is listed when its risk_version advanced and it has a current risk, and each item is the account exactly as GET /v1/accounts/{account_id} answers it. An account appears once per page, at its latest change; when its risk changes again later, it appears again on a later page with the newer risk_version. next_cursor is always present: pass it back as changed_since to read the changes made after this page.","type":"object","additionalProperties":false,"required":["items","next_cursor"],"properties":{"items":{"type":"array","maxItems":100,"items":{"title":"Account","description":"Body of the 200 answer to GET /v1/accounts/{account_id}: the one current risk of one of the calling workspace's accounts. It is the risk of the account's latest assessment that has a decision (status complete or partial), by created_at and then assessment_id, scored exactly as GET /v1/assessments/{assessment_id} scores that assessment, plus the account's own reason shared_api_key when a key issued to the account was used from many IP addresses or countries (POST /v1/key_usage/batches). Its assessments are the account's history (GET /v1/accounts/{account_id}/assessments).","type":"object","additionalProperties":false,"required":["schema_version","id","risk","decisions_by_flow","assessment_id","updated_at","risk_version"],"properties":{"schema_version":{"const":"1","description":"Version of the body shape.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].schema_version","typeLabel":"any"},"id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:|-]{0,127}$","description":"The account_id the workspace sends with its assessments.","not":{"description":"refused_text plus secret_encoded, for account_id.","anyOf":[{"description":"A NUL or line feed anywhere, refused with not beside anchored patterns. The parser refuses NUL in every request string. This guard also closes engines where $ accepts a final line feed.","pattern":"[\\x00\\n]"},{"description":"Exact shapes only: a complete modular-crypt password hash (bcrypt $2a$/$2b$/$2x$/$2y$ with a two-digit cost and 53 characters; $argon2i/d/id with its m, t, p parameters, salt and hash; md5-crypt $1$, sha256-crypt $5$ or sha512-crypt $6$ with a 22, 43 or 86 character hash; passlib $scrypt$ with ln, r, p, salt and hash) or a three-segment JWT whose header is base64url JSON opening with an \"alg\", \"typ\", \"kid\" or \"cty\" member (eyJhbGciOi, eyJ0eXAiOi, eyJraWQiOi or eyJjdHkiOi). A value that merely starts with '$2' or 'eyJ', such as eyJohnathan.doe.x, is not refused. Best effort, not a guarantee; see the provider obligation in the README.","anyOf":[{"pattern":"^\\$2[abxy]?\\$[0-9]{2}\\$[./A-Za-z0-9]{53}$"},{"pattern":"^\\$argon2(?:id|i|d)\\$(?:v=[0-9]{1,4}\\$)?m=[0-9]{1,10},t=[0-9]{1,10},p=[0-9]{1,3}\\$[A-Za-z0-9+/]{8,}\\$[A-Za-z0-9+/]{16,}$"},{"pattern":"^\\$[156]\\$(?:rounds=[0-9]{1,9}\\$)?[./A-Za-z0-9]{1,16}\\$(?:[./A-Za-z0-9]{22}|[./A-Za-z0-9]{43}|[./A-Za-z0-9]{86})$"},{"pattern":"^\\$scrypt\\$ln=[0-9]{1,2},r=[0-9]{1,3},p=[0-9]{1,3}\\$[A-Za-z0-9+/.]{8,}\\$[A-Za-z0-9+/.]{16,}$"},{"pattern":"^eyJ(?:hbGciOi|0eXAiOi|raWQiOi|jdHkiOi)[A-Za-z0-9_-]*\\.[A-Za-z0-9_-]{2,}\\.[A-Za-z0-9_-]*$"}]}]},"isRequired":true,"uniqueKey":"\\items.items.[INDEX].id","typeLabel":"string"},"risk":{"type":"object","additionalProperties":false,"required":["score","decision","reasons"],"properties":{"score":{"type":"integer","minimum":0,"maximum":100,"description":"0 (safe) to 100 (risky), as risk.score of the assessment.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].risk.score","typeLabel":"integer"},"decision":{"enum":["allow","step_up","review","block","held"],"description":"The decision for the flow of the assessment this account is served with: on GET /v1/accounts/{account_id}, the flow of the current assessment; inside an assessment, that assessment's flow.","type":"string","isRequired":true,"uniqueKey":"\\items.items.[INDEX].risk.decision","typeLabel":"enum\u003cstring>"},"reasons":{"type":"array","maxItems":32,"description":"Every reason that fired, highest weight first. The weights sum to score before clamping.","items":{"type":"object","additionalProperties":false,"required":["code","weight"],"properties":{"code":{"enum":["no_digital_footprint","voip_number","disposable_email","new_email","spam_reports","fraud_flag","identity_mismatch","country_mismatch","proxy_ip","seen_before","shared_ip","many_recent_accounts","established_accounts","aged_identity","breach_name_match","breach_cooccurrence","breach_name_mismatch","breach_phone_mismatch","recent_password_exposure","credential_list_exposure","abuse_ecosystem_member","no_breach_history","automation_fast_submit","client_clock_skew","bot_or_automation","auth_email_verified","auth_phone_verified","auth_mfa_recent","auth_new_session","auth_new_account","auth_impersonated","context_timezone_mismatch","context_locale_mismatch","context_line_country_mismatch","prior_abuse_link","test_scenario","shared_api_key"],"description":"A risk reason from the reviewed list. old_breach_history and consistent_identity were replaced by the breach codes (aged_identity, breach_name_match, breach_cooccurrence and the mismatches) and are refused. test_scenario appears only on an assessment made with a test key (nrk_test_), which the deterministic simulator answers: its weight is the scenario the magic email or phone chose, and 0 for any other identifier. A live assessment never carries it. shared_api_key is an account reason, never an assessment one: it appears only in the risk of GET /v1/accounts/{account_id} and the account an assessment carries, when a key your account creation gate issued to the account (issued_credential.sha256) was used from many IP addresses or countries within 24 hours (POST /v1/key_usage/batches).","type":"string","isRequired":true,"uniqueKey":"\\items.items.[INDEX].risk.reasons.items.[INDEX].code","typeLabel":"enum\u003cstring>"},"weight":{"type":"integer","minimum":-100,"maximum":100,"isRequired":true,"uniqueKey":"\\items.items.[INDEX].risk.reasons.items.[INDEX].weight","typeLabel":"integer"},"identifier":{"enum":["email","username","phone","name","ip","context"],"description":"The submitted identifier or bounded client context a reason concerns; absent when it concerns the whole assessment. Context is a claimed, untrusted hint and never a device fingerprint.","type":"string","uniqueKey":"\\items.items.[INDEX].risk.reasons.items.[INDEX].identifier","typeLabel":"enum\u003cstring>"}},"uniqueKey":"\\items.items.[INDEX].risk.reasons.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"\\items.items.[INDEX].risk.reasons","typeLabel":"object[]"}},"isRequired":true,"uniqueKey":"\\items.items.[INDEX].risk","typeLabel":"object"},"decisions_by_flow":{"type":"object","additionalProperties":false,"required":["account_creation","login","purchase"],"description":"The decision for each flow: the account's score under that flow's thresholds. A flow the workspace has not set uses its account_creation thresholds, so the flows differ only where it set them. The flow of the current assessment is held while that flow's admission is held and the assessment's investigation has not completed.","properties":{"account_creation":{"enum":["allow","step_up","review","block","held"],"description":"block when the score reached the workspace's block threshold (risk.block of the assessment), otherwise the assessment's recommendation. held only for a flow whose admission is held (settings flows.\u003cflow>.admission), when the account's current assessment was made for that flow and its investigation has not completed (status partial): the final decision arrives as account.risk_changed when the investigation completes, decided by its score, or when the hold's deadline (hold_seconds after the assessment was created) passes first, as the flow's on_expiry action or the decision the evidence so far gives, whichever is stricter. Advisory: the workspace decides and enforces.","type":"string","isRequired":true,"uniqueKey":"\\items.items.[INDEX].decisions_by_flow.account_creation","typeLabel":"enum\u003cstring>"},"login":{"enum":["allow","step_up","review","block","held"],"description":"block when the score reached the workspace's block threshold (risk.block of the assessment), otherwise the assessment's recommendation. held only for a flow whose admission is held (settings flows.\u003cflow>.admission), when the account's current assessment was made for that flow and its investigation has not completed (status partial): the final decision arrives as account.risk_changed when the investigation completes, decided by its score, or when the hold's deadline (hold_seconds after the assessment was created) passes first, as the flow's on_expiry action or the decision the evidence so far gives, whichever is stricter. Advisory: the workspace decides and enforces.","type":"string","isRequired":true,"uniqueKey":"\\items.items.[INDEX].decisions_by_flow.login","typeLabel":"enum\u003cstring>"},"purchase":{"enum":["allow","step_up","review","block","held"],"description":"block when the score reached the workspace's block threshold (risk.block of the assessment), otherwise the assessment's recommendation. held only for a flow whose admission is held (settings flows.\u003cflow>.admission), when the account's current assessment was made for that flow and its investigation has not completed (status partial): the final decision arrives as account.risk_changed when the investigation completes, decided by its score, or when the hold's deadline (hold_seconds after the assessment was created) passes first, as the flow's on_expiry action or the decision the evidence so far gives, whichever is stricter. Advisory: the workspace decides and enforces.","type":"string","isRequired":true,"uniqueKey":"\\items.items.[INDEX].decisions_by_flow.purchase","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"\\items.items.[INDEX].decisions_by_flow","typeLabel":"object"},"assessment_id":{"type":"string","pattern":"^asm_[0-9A-HJKMNP-TV-Z]{26}$","description":"The assessment the current risk comes from.","not":{"description":"A NUL or line feed anywhere, refused with not beside anchored patterns. The parser refuses NUL in every request string. This guard also closes engines where $ accepts a final line feed.","pattern":"[\\x00\\n]"},"isRequired":true,"uniqueKey":"\\items.items.[INDEX].assessment_id","typeLabel":"string"},"updated_at":{"type":"string","format":"date-time","description":"updated_at of that assessment's latest revision.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].updated_at","typeLabel":"string\u003cdate-time>"},"risk_version":{"type":"integer","minimum":1,"description":"The version of the account's current risk. It increases every time the account's current risk or decisions_by_flow changes, and does not decrease. Of two copies of an account, the one with the higher risk_version is newer. account.risk_changed carries the risk_version that its change made.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].risk_version","typeLabel":"integer"}},"$defs":{"account_decision":{"enum":["allow","step_up","review","block","held"],"description":"block when the score reached the workspace's block threshold (risk.block of the assessment), otherwise the assessment's recommendation. held only for a flow whose admission is held (settings flows.\u003cflow>.admission), when the account's current assessment was made for that flow and its investigation has not completed (status partial): the final decision arrives as account.risk_changed when the investigation completes, decided by its score, or when the hold's deadline (hold_seconds after the assessment was created) passes first, as the flow's on_expiry action or the decision the evidence so far gives, whichever is stricter. Advisory: the workspace decides and enforces."}},"uniqueKey":"\\items.items.[INDEX]","typeLabel":"Account · object"},"isRequired":true,"uniqueKey":"\\items","typeLabel":"Account · object[]"},"next_cursor":{"type":"string","minLength":1,"maxLength":256,"pattern":"^[A-Za-z0-9_-]+$","description":"Opaque cursor after the last change this page read, bound to the workspace and the environment of the calling key. Pass it back unchanged as changed_since. It is present on every page, the last one included: when nothing changed after changed_since it is the cursor that was sent, so a poller keeps calling with the latest next_cursor. A tampered or foreign cursor answers 400 invalid_cursor. Consumers do not parse it.","not":{"description":"A NUL or line feed anywhere, refused with not beside anchored patterns. The parser refuses NUL in every request string. This guard also closes engines where $ accepts a final line feed.","pattern":"[\\x00\\n]"},"isRequired":true,"uniqueKey":"next_cursor","typeLabel":"string"}},"uniqueKey":"","typeLabel":"Changed accounts · object"},"examples":{"page":{"title":"page","value":{"items":[{"schema_version":"1","id":"acct_7f3a9c","risk":{"score":35,"decision":"step_up","reasons":[{"code":"new_email","weight":20,"identifier":"email"},{"code":"proxy_ip","weight":15,"identifier":"ip"}]},"decisions_by_flow":{"account_creation":"step_up","login":"step_up","purchase":"step_up"},"assessment_id":"asm_01JA2Z8K6Q4V7W9XBCDEFGHJKM","updated_at":"2026-10-14T09:00:00.412Z","risk_version":3},{"schema_version":"1","id":"acct_2b81d0","risk":{"score":90,"decision":"block","reasons":[{"code":"disposable_email","weight":40,"identifier":"email"},{"code":"proxy_ip","weight":30,"identifier":"ip"},{"code":"many_recent_accounts","weight":20}]},"decisions_by_flow":{"account_creation":"block","login":"block","purchase":"block"},"assessment_id":"asm_01JA2ZB4C5D6E7F8G9HJKMNPQR","updated_at":"2026-10-14T09:02:11.087Z","risk_version":1}],"next_cursor":"eyJ4IjoxMDQyLCJhIjoiOWYyYyJ9"}},"caughtUp":{"title":"caughtUp","value":{"items":[],"next_cursor":"eyJ4IjoxMDQyLCJhIjoiOWYyYyJ9"}}},"exampleType":"examples"}},"exampleType":"examples"},"6e63bd46-b5ed-4213-bdd1-8b293f445e15":{"description":"account_id does not match its shape, a query parameter is unknown, repeated or out of range, or the cursor fails its MAC, belongs to another workspace or account, or has expired. invalid_params names the offending parameters, never their values.","headers":{"Cache-Control":{"schema":{"type":"string","const":"no-store"},"required":true},"X-Request-ID":{"description":"The request correlation id, 32 lowercase hexadecimal characters.","schema":{"type":"string","pattern":"^[0-9a-f]{32}$","not":{"pattern":"\\n"}},"required":true}},"content":{"application/problem+json":{"schema":{"type":"object","title":"Problem details error","description":"RFC 9457 problem-details error body returned by every non-2xx API response, extended with a stable machine code and request id.","required":["type","title","status","detail","code","request_id"],"properties":{"type":{"type":"string","format":"uri-reference","isRequired":true,"uniqueKey":"type","typeLabel":"string\u003curi-reference>"},"title":{"type":"string","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"status":{"type":"integer","maximum":599,"minimum":400,"const":400,"isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"detail":{"type":"string","isRequired":true,"uniqueKey":"detail","typeLabel":"string"},"code":{"type":"string","enum":["invalid_request","invalid_cursor"],"isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"request_id":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"request_id","typeLabel":"string"},"instance":{"type":"string","format":"uri-reference","uniqueKey":"instance","typeLabel":"string\u003curi-reference>"},"invalid_params":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["field","reason"],"properties":{"field":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"invalid_params.items.[INDEX].field","typeLabel":"string"},"reason":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"invalid_params.items.[INDEX].reason","typeLabel":"string"},"example":{"type":"string","minLength":1,"uniqueKey":"invalid_params.items.[INDEX].example","typeLabel":"string"}},"uniqueKey":"invalid_params.items.[INDEX]","typeLabel":"object"},"uniqueKey":"invalid_params","typeLabel":"object[]"}},"additionalProperties":false,"uniqueKey":"","typeLabel":"Problem details error · object"},"examples":{"Example":{"title":"Example","value":{"type":"\u003cstring>","title":"\u003cstring>","status":400,"detail":"\u003cstring>","code":"invalid_request","request_id":"\u003cstring>","instance":"\u003cstring>","invalid_params":[{"field":"\u003cstring>","reason":"\u003cstring>","example":"\u003cstring>"}]}}},"exampleType":"generated"}},"exampleType":"generated"},"e306c3f1-aa2e-4ad0-9aa5-c4a661eccc8b":{"description":"No API key, or one that is malformed, unknown, revoked or expired.","headers":{"Cache-Control":{"schema":{"type":"string","const":"no-store"},"required":true},"WWW-Authenticate":{"schema":{"type":"string","const":"Bearer realm=\"noresponse-assessments\""},"required":true},"X-Request-ID":{"description":"The request correlation id, 32 lowercase hexadecimal characters.","schema":{"type":"string","pattern":"^[0-9a-f]{32}$","not":{"pattern":"\\n"}},"required":true}},"content":{"application/problem+json":{"schema":{"type":"object","title":"Problem details error","description":"RFC 9457 problem-details error body returned by every non-2xx API response, extended with a stable machine code and request id.","required":["type","title","status","detail","code","request_id"],"properties":{"type":{"type":"string","format":"uri-reference","isRequired":true,"uniqueKey":"type","typeLabel":"string\u003curi-reference>"},"title":{"type":"string","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"status":{"type":"integer","maximum":599,"minimum":400,"const":401,"isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"detail":{"type":"string","isRequired":true,"uniqueKey":"detail","typeLabel":"string"},"code":{"type":"string","enum":["unauthorized"],"isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"request_id":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"request_id","typeLabel":"string"},"instance":{"type":"string","format":"uri-reference","uniqueKey":"instance","typeLabel":"string\u003curi-reference>"},"invalid_params":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["field","reason"],"properties":{"field":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"invalid_params.items.[INDEX].field","typeLabel":"string"},"reason":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"invalid_params.items.[INDEX].reason","typeLabel":"string"},"example":{"type":"string","minLength":1,"uniqueKey":"invalid_params.items.[INDEX].example","typeLabel":"string"}},"uniqueKey":"invalid_params.items.[INDEX]","typeLabel":"object"},"uniqueKey":"invalid_params","typeLabel":"object[]"}},"additionalProperties":false,"uniqueKey":"","typeLabel":"Problem details error · object"},"examples":{"Example":{"title":"Example","value":{"type":"\u003cstring>","title":"\u003cstring>","status":401,"detail":"\u003cstring>","code":"unauthorized","request_id":"\u003cstring>","instance":"\u003cstring>","invalid_params":[{"field":"\u003cstring>","reason":"\u003cstring>","example":"\u003cstring>"}]}}},"exampleType":"generated"}},"exampleType":"generated"},"2ab48df8-207b-40dd-a4c7-b31806bbcf4b":{"description":"The API key is valid but may not use this operation: it lacks the operation's scope, or its workspace is not entitled or is suspended.","headers":{"Cache-Control":{"schema":{"type":"string","const":"no-store"},"required":true},"X-Request-ID":{"description":"The request correlation id, 32 lowercase hexadecimal characters.","schema":{"type":"string","pattern":"^[0-9a-f]{32}$","not":{"pattern":"\\n"}},"required":true}},"content":{"application/problem+json":{"schema":{"type":"object","title":"Problem details error","description":"RFC 9457 problem-details error body returned by every non-2xx API response, extended with a stable machine code and request id.","required":["type","title","status","detail","code","request_id"],"properties":{"type":{"type":"string","format":"uri-reference","isRequired":true,"uniqueKey":"type","typeLabel":"string\u003curi-reference>"},"title":{"type":"string","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"status":{"type":"integer","maximum":599,"minimum":400,"const":403,"isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"detail":{"type":"string","isRequired":true,"uniqueKey":"detail","typeLabel":"string"},"code":{"type":"string","enum":["workspace_forbidden"],"isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"request_id":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"request_id","typeLabel":"string"},"instance":{"type":"string","format":"uri-reference","uniqueKey":"instance","typeLabel":"string\u003curi-reference>"},"invalid_params":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["field","reason"],"properties":{"field":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"invalid_params.items.[INDEX].field","typeLabel":"string"},"reason":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"invalid_params.items.[INDEX].reason","typeLabel":"string"},"example":{"type":"string","minLength":1,"uniqueKey":"invalid_params.items.[INDEX].example","typeLabel":"string"}},"uniqueKey":"invalid_params.items.[INDEX]","typeLabel":"object"},"uniqueKey":"invalid_params","typeLabel":"object[]"}},"additionalProperties":false,"uniqueKey":"","typeLabel":"Problem details error · object"},"examples":{"missingScope":{"title":"missingScope","value":{"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"}}},"exampleType":"examples"}},"exampleType":"examples"},"0dd377cb-f931-427d-9c64-7361a4856c3b":{"description":"The workspace's rate or concurrency limit is exhausted. Retry-After says when to retry; the provider applies its own fallback meanwhile.","headers":{"Cache-Control":{"schema":{"type":"string","const":"no-store"},"required":true},"Retry-After":{"description":"Whole seconds to wait before polling or retrying. Required on 202, 429 and 503.","schema":{"type":"string","pattern":"^(?:[1-9]|[1-9][0-9]|[1-9][0-9]{2}|[12][0-9]{3}|3[0-5][0-9]{2}|3600)$","description":"Whole decimal seconds; wait at least this long."},"required":true},"X-Request-ID":{"description":"The request correlation id, 32 lowercase hexadecimal characters.","schema":{"type":"string","pattern":"^[0-9a-f]{32}$","not":{"pattern":"\\n"}},"required":true}},"content":{"application/problem+json":{"schema":{"type":"object","title":"Problem details error","description":"RFC 9457 problem-details error body returned by every non-2xx API response, extended with a stable machine code and request id.","required":["type","title","status","detail","code","request_id"],"properties":{"type":{"type":"string","format":"uri-reference","isRequired":true,"uniqueKey":"type","typeLabel":"string\u003curi-reference>"},"title":{"type":"string","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"status":{"type":"integer","maximum":599,"minimum":400,"const":429,"isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"detail":{"type":"string","isRequired":true,"uniqueKey":"detail","typeLabel":"string"},"code":{"type":"string","enum":["rate_limited"],"isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"request_id":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"request_id","typeLabel":"string"},"instance":{"type":"string","format":"uri-reference","uniqueKey":"instance","typeLabel":"string\u003curi-reference>"},"invalid_params":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["field","reason"],"properties":{"field":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"invalid_params.items.[INDEX].field","typeLabel":"string"},"reason":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"invalid_params.items.[INDEX].reason","typeLabel":"string"},"example":{"type":"string","minLength":1,"uniqueKey":"invalid_params.items.[INDEX].example","typeLabel":"string"}},"uniqueKey":"invalid_params.items.[INDEX]","typeLabel":"object"},"uniqueKey":"invalid_params","typeLabel":"object[]"}},"additionalProperties":false,"uniqueKey":"","typeLabel":"Problem details error · object"},"examples":{"limited":{"title":"limited","value":{"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"}}},"exampleType":"examples"}},"exampleType":"examples"},"ea882f29-54c6-45d3-8127-1b19bca47923":{"description":"The assessment could not be admitted at all (overload, shutdown or a dependency down). An assessment that was admitted answers partial or pending instead of 503.","headers":{"Cache-Control":{"schema":{"type":"string","const":"no-store"},"required":true},"Retry-After":{"description":"Whole seconds to wait before polling or retrying. Required on 202, 429 and 503.","schema":{"type":"string","pattern":"^(?:[1-9]|[1-9][0-9]|[1-9][0-9]{2}|[12][0-9]{3}|3[0-5][0-9]{2}|3600)$","description":"Whole decimal seconds; wait at least this long."},"required":true},"X-Request-ID":{"description":"The request correlation id, 32 lowercase hexadecimal characters.","schema":{"type":"string","pattern":"^[0-9a-f]{32}$","not":{"pattern":"\\n"}},"required":true}},"content":{"application/problem+json":{"schema":{"type":"object","title":"Problem details error","description":"RFC 9457 problem-details error body returned by every non-2xx API response, extended with a stable machine code and request id.","required":["type","title","status","detail","code","request_id"],"properties":{"type":{"type":"string","format":"uri-reference","isRequired":true,"uniqueKey":"type","typeLabel":"string\u003curi-reference>"},"title":{"type":"string","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"status":{"type":"integer","maximum":599,"minimum":400,"const":503,"isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"detail":{"type":"string","isRequired":true,"uniqueKey":"detail","typeLabel":"string"},"code":{"type":"string","enum":["service_unavailable"],"isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"request_id":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"request_id","typeLabel":"string"},"instance":{"type":"string","format":"uri-reference","uniqueKey":"instance","typeLabel":"string\u003curi-reference>"},"invalid_params":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["field","reason"],"properties":{"field":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"invalid_params.items.[INDEX].field","typeLabel":"string"},"reason":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"invalid_params.items.[INDEX].reason","typeLabel":"string"},"example":{"type":"string","minLength":1,"uniqueKey":"invalid_params.items.[INDEX].example","typeLabel":"string"}},"uniqueKey":"invalid_params.items.[INDEX]","typeLabel":"object"},"uniqueKey":"invalid_params","typeLabel":"object[]"}},"additionalProperties":false,"uniqueKey":"","typeLabel":"Problem details error · object"},"examples":{"Example":{"title":"Example","value":{"type":"\u003cstring>","title":"\u003cstring>","status":503,"detail":"\u003cstring>","code":"service_unavailable","request_id":"\u003cstring>","instance":"\u003cstring>","invalid_params":[{"field":"\u003cstring>","reason":"\u003cstring>","example":"\u003cstring>"}]}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"3a9ee943-0438-4b9b-a057-9a90b1620fe8":{"tenantBearer":{"type":"http","scheme":"bearer","description":"Your API key, sent as `Authorization: Bearer \u003ckey>`. A key is `nrk_live_` or `nrk_test_`, a 26-character key id, `_` and a 43-character secret. A key sees only its own environment's data.\n\nEach key has one or more scopes: `assess` creates and reads assessments, records outcomes and reports key usage; `history` reads assessments, an account's current risk, the accounts whose risk changed and an account's history, records enforcements and erases an account; `detailed` adds the detailed view; `webhooks` registers, tests, rotates and deletes webhook endpoints; `integrations` registers and manages hosted provider integrations. A missing, unknown, revoked or expired key answers 401. A valid key without the scope an operation needs answers 403.","scopes":[],"schemeName":"tenantBearer"}}},"servers":{"a12fbd3a-5094-4c2c-ae85-25fa286f4b9b":{"url":"https://api.noresponse.org","description":"Production"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"Your API key, sent as `Authorization: Bearer \u003ckey>`. A key is `nrk_live_` or `nrk_test_`, a 26-character key id, `_` and a 43-character secret. A key sees only its own environment's data.\n\nEach key has one or more scopes: `assess` creates and reads assessments, records outcomes and reports key usage; `history` reads assessments, an account's current risk, the accounts whose risk changed and an account's history, records enforcements and erases an account; `detailed` adds the detailed view; `webhooks` registers, tests, rotates and deletes webhook endpoints; `integrations` registers and manages hosted provider integrations. A missing, unknown, revoked or expired key answers 401. A valid key without the scope an operation needs answers 403.","scopes":[],"schemeName":"tenantBearer"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Your API key, sent as `Authorization: Bearer \u003ckey>`. A key is `nrk_live_` or `nrk_test_`, a 26-character key id, `_` and a 43-character secret. A key sees only its own environment's data.\n\nEach key has one or more scopes: `assess` creates and reads assessments, records outcomes and reports key usage; `history` reads assessments, an account's current risk, the accounts whose risk changed and an account's history, records enforcements and erases an account; `detailed` adds the detailed view; `webhooks` registers, tests, rotates and deletes webhook endpoints; `integrations` registers and manages hosted provider integrations. A missing, unknown, revoked or expired key answers 401. A valid key without the scope an operation needs answers 403.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"tenantBearer","name":"Authorization"}],"title":"tenantBearer"}]},"originalFileLocation":"openapi.json"},"subdomain":"no-response","siteName":"NoResponse docs","title":"List changed accounts - NoResponse docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-24T22:06:10.061Z","originalFileLocation":"api-reference/accounts/list-changed-accounts.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"light\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Lists your accounts whose risk changed, oldest change first. Each item is the account as GET /v1/accounts/{account_id} returns it. An account is listed when its risk_version goes up and it has a current risk. Every page has next_cursor. Send it back as changed_since to get the changes after that page. Without changed_since, the list starts at the oldest change. When nothing changed, items is empty and next_cursor is the cursor you sent. To poll, call again with the latest next_cursor. There is no last page. An account comes back each time its risk changes again, with a higher risk_version. Keep the copy with the highest risk_version. A change is listed only after all earlier changes are visible, so polling does not skip a change. unenforced=true lists only the accounts that need action: a decision other than allow for at least one flow, and no applied enforcement at the current risk_version. The cursor also moves past the accounts that this filter removes, so a page can have fewer than limit items, or none, before later changes. Continue to poll with next_cursor. Read-only and safe to retry. A changed or foreign cursor answers 400 invalid_cursor. Requires the history scope.\">\u003cmeta data-mint-head name=\"application-name\" content=\"NoResponse docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/no-response/eHgkk8DTcWQ7wCXn/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/no-response/eHgkk8DTcWQ7wCXn/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/no-response/eHgkk8DTcWQ7wCXn/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/no-response/eHgkk8DTcWQ7wCXn/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/no-response/eHgkk8DTcWQ7wCXn/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/no-response/eHgkk8DTcWQ7wCXn/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/no-response/eHgkk8DTcWQ7wCXn/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/no-response/eHgkk8DTcWQ7wCXn/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/no-response/eHgkk8DTcWQ7wCXn/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"List changed accounts - NoResponse docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Lists your accounts whose risk changed, oldest change first. Each item is the account as GET /v1/accounts/{account_id} returns it. An account is listed when its risk_version goes up and it has a current risk. Every page has next_cursor. Send it back as changed_since to get the changes after that page. Without changed_since, the list starts at the oldest change. When nothing changed, items is empty and next_cursor is the cursor you sent. To poll, call again with the latest next_cursor. There is no last page. An account comes back each time its risk changes again, with a higher risk_version. Keep the copy with the highest risk_version. A change is listed only after all earlier changes are visible, so polling does not skip a change. unenforced=true lists only the accounts that need action: a decision other than allow for at least one flow, and no applied enforcement at the current risk_version. The cursor also moves past the accounts that this filter removes, so a page can have fewer than limit items, or none, before later changes. Continue to poll with next_cursor. Read-only and safe to retry. A changed or foreign cursor answers 400 invalid_cursor. Requires the history scope.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"NoResponse docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.noresponse.org/api-reference/accounts/list-changed-accounts\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://no-response.mintlify.app/_mintlify/api/og/v2?division=API+reference\u0026amp;title=List+changed+accounts\u0026amp;description=Lists+your+accounts+whose+risk+changed%2C+oldest+change+first.+Each+item+is+the+account+as+%60GET+%2Fv1%2Faccounts%2F%7Baccount_id%7D%60+returns+it.+An+account+is+listed+when+i\u0026amp;theme=f76c3cd4e969b079fbdf9962\u0026amp;signature=185b285282f2dd8ed8f158807723714067a235e3fa534d54e577f897dfbf9bd8\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"List changed accounts - NoResponse docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Lists your accounts whose risk changed, oldest change first. Each item is the account as GET /v1/accounts/{account_id} returns it. An account is listed when its risk_version goes up and it has a current risk. Every page has next_cursor. Send it back as changed_since to get the changes after that page. Without changed_since, the list starts at the oldest change. When nothing changed, items is empty and next_cursor is the cursor you sent. To poll, call again with the latest next_cursor. There is no last page. An account comes back each time its risk changes again, with a higher risk_version. Keep the copy with the highest risk_version. A change is listed only after all earlier changes are visible, so polling does not skip a change. unenforced=true lists only the accounts that need action: a decision other than allow for at least one flow, and no applied enforcement at the current risk_version. The cursor also moves past the accounts that this filter removes, so a page can have fewer than limit items, or none, before later changes. Continue to poll with next_cursor. Read-only and safe to retry. A changed or foreign cursor answers 400 invalid_cursor. Requires the history scope.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://no-response.mintlify.app/_mintlify/api/og/v2?division=API+reference\u0026amp;title=List+changed+accounts\u0026amp;description=Lists+your+accounts+whose+risk+changed%2C+oldest+change+first.+Each+item+is+the+account+as+%60GET+%2Fv1%2Faccounts%2F%7Baccount_id%7D%60+returns+it.+An+account+is+listed+when+i\u0026amp;theme=f76c3cd4e969b079fbdf9962\u0026amp;signature=185b285282f2dd8ed8f158807723714067a235e3fa534d54e577f897dfbf9bd8\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/no-response/eHgkk8DTcWQ7wCXn/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"NoResponse docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#163ce7\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.noresponse.org/api-reference/accounts/list-changed-accounts\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/accounts/list-changed-accounts.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.noresponse.org/#organization\",\"name\":\"NoResponse docs\",\"url\":\"https://docs.noresponse.org\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/no-response/353LSDk6RAGXxNkQ/logo/light.svg?fit=max\u0026auto=format\u0026n=353LSDk6RAGXxNkQ\u0026q=85\u0026s=13d1cf3b27a1edaec89f7309a558276e\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.noresponse.org#website\",\"name\":\"NoResponse docs\",\"url\":\"https://docs.noresponse.org\",\"publisher\":{\"@id\":\"https://docs.noresponse.org/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.noresponse.org/api-reference/accounts/list-changed-accounts#webpage\",\"url\":\"https://docs.noresponse.org/api-reference/accounts/list-changed-accounts\",\"name\":\"List changed accounts\",\"description\":\"Lists your accounts whose risk changed, oldest change first. Each item is the account as GET /v1/accounts/{account_id} returns it. An account is listed when its risk_version goes up and it has a current risk. Every page has next_cursor. Send it back as changed_since to get the changes after that page. Without changed_since, the list starts at the oldest change. When nothing changed, items is empty and next_cursor is the cursor you sent. To poll, call again with the latest next_cursor. There is no last page. An account comes back each time its risk changes again, with a higher risk_version. Keep the copy with the highest risk_version. A change is listed only after all earlier changes are visible, so polling does not skip a change. unenforced=true lists only the accounts that need action: a decision other than allow for at least one flow, and no applied enforcement at the current risk_version. The cursor also moves past the accounts that this filter removes, so a page can have fewer than limit items, or none, before later changes. Continue to poll with next_cursor. Read-only and safe to retry. A changed or foreign cursor answers 400 invalid_cursor. Requires the history scope.\",\"dateModified\":\"2026-10-24T22:06:10.061Z\",\"isPartOf\":{\"@id\":\"https://docs.noresponse.org#website\"},\"breadcrumb\":{\"@id\":\"https://docs.noresponse.org/api-reference/accounts/list-changed-accounts#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.noresponse.org/api-reference/accounts/list-changed-accounts#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Endpoints\",\"item\":\"https://docs.noresponse.org/api-reference/assess/create-an-assessment\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"List changed accounts\",\"item\":\"https://docs.noresponse.org/api-reference/accounts/list-changed-accounts\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.noresponse.org/api-reference/accounts/list-changed-accounts#apireference\",\"headline\":\"List changed accounts\",\"name\":\"List changed accounts\",\"description\":\"Lists your accounts whose risk changed, oldest change first. Each item is the account as GET /v1/accounts/{account_id} returns it. An account is listed when its risk_version goes up and it has a current risk. Every page has next_cursor. Send it back as changed_since to get the changes after that page. Without changed_since, the list starts at the oldest change. When nothing changed, items is empty and next_cursor is the cursor you sent. To poll, call again with the latest next_cursor. There is no last page. An account comes back each time its risk changes again, with a higher risk_version. Keep the copy with the highest risk_version. A change is listed only after all earlier changes are visible, so polling does not skip a change. unenforced=true lists only the accounts that need action: a decision other than allow for at least one flow, and no applied enforcement at the current risk_version. The cursor also moves past the accounts that this filter removes, so a page can have fewer than limit items, or none, before later changes. Continue to poll with next_cursor. Read-only and safe to retry. A changed or foreign cursor answers 400 invalid_cursor. Requires the history scope.\",\"url\":\"https://docs.noresponse.org/api-reference/accounts/list-changed-accounts\",\"mainEntityOfPage\":{\"@id\":\"https://docs.noresponse.org/api-reference/accounts/list-changed-accounts#webpage\"},\"dateModified\":\"2026-10-24T22:06:10.061Z\",\"publisher\":{\"@id\":\"https://docs.noresponse.org/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.noresponse.org#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"NoResponse docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"NoResponse docs","nav":{"global":null,"tabs":[{"tab":"Guides","icon":"book-open","pages":[{"title":"Guides","href":""}]},{"tab":"API reference","icon":"square-terminal","groups":[{"group":"Overview","icon":"compass","pages":[{"title":"API reference","sidebarTitle":"Overview","icon":"square-terminal","href":"/api-reference"}]},{"group":"Using the API","icon":"book-marked","pages":[{"title":"Create an assessment","icon":"square-plus","href":"/reference/create-assessment"},{"title":"The assessment object","sidebarTitle":"Assessment object","icon":"file-search","href":"/reference/assessment"},{"title":"Reason codes","icon":"list-checks","href":"/reference/reason-codes"},{"title":"Get and query assessments","sidebarTitle":"Read assessments","icon":"search","href":"/reference/get-and-query"},{"title":"Accounts","icon":"user-round","href":"/reference/accounts"},{"title":"Key usage batches","icon":"key-round","href":"/reference/key-usage"},{"title":"Data retention","icon":"archive","href":"/reference/data-retention"}]},{"group":"Endpoints","icon":"braces","pages":[{"group":"Assessments","pages":[{"title":"Create an assessment","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/assessments","href":"/api-reference/assess/create-an-assessment"},{"title":"Retrieve an assessment","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/assessments/{assessment_id}","href":"/api-reference/assess/retrieve-an-assessment"},{"title":"Delete an assessment","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/assessments/{assessment_id}","href":"/api-reference/assess/delete-an-assessment"},{"title":"Report an outcome","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/assessments/{assessment_id}/outcomes","href":"/api-reference/assess/report-an-outcome"},{"title":"List an account's assessments","description":"Pages through the unexpired assessments for one of your accounts, newest first, each at its latest version.\n\nIt is a POST so that `account_id` stays out of URLs and access logs. It is read-only and safe to retry, and takes no `Idempotency-Key`. An account with no assessments answers 200 with empty `items`.\n\nPass `next_cursor` back unchanged to read the next page. A changed, foreign or expired cursor answers 400 `invalid_cursor`.\n\nRequires the `history` scope. `response_mode: \"detailed\"` also needs the `detailed` scope.","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/assessments/query","href":"/api-reference/assess/list-an-accounts-assessments"}]},{"group":"Accounts","pages":[{"title":"List changed accounts","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/accounts","href":"/api-reference/accounts/list-changed-accounts"},{"title":"Retrieve an account","description":"Returns the one current risk of one of your accounts. An account is the `account_id` you send with your assessments, and every assessment updates it.\n\nThe current risk is the risk of the account's latest assessment with a decision (`complete` or `partial`), scored as `GET /v1/assessments/{assessment_id}` scores it. `risk.decision` is `block` when the score reached your block threshold, and that assessment's recommendation otherwise. Every assessment answer carries this same object as its `account`. `decisions_by_flow` gives the decision for `account_creation`, `login` and `purchase`; all three use your account creation thresholds today, so they equal `risk.decision`. `assessment_id` names the assessment the risk comes from.\n\nAn account with no unexpired assessment that has a decision answers 404 `not_found`, so an account creation that is still `pending` has no account yet. A malformed `account_id` answers 400 `invalid_request`. Read-only and safe to retry. Requires the `history` scope.","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/accounts/{account_id}","href":"/api-reference/accounts/retrieve-an-account"},{"title":"Erase an account","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/accounts/{account_id}","href":"/api-reference/accounts/erase-an-account"},{"title":"List an account's assessments by URL","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/accounts/{account_id}/assessments","href":"/api-reference/accounts/list-an-accounts-assessments-by-url"},{"title":"Record an enforcement","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/accounts/{account_id}/enforcements","href":"/api-reference/accounts/record-an-enforcement"}]},{"group":"Key usage","pages":[{"title":"Report key usage","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/key_usage/batches","href":"/api-reference/usage/report-key-usage"}]},{"group":"API keys","pages":[{"title":"Rotate your API key","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/keys/rotate","href":"/api-reference/keys/rotate-your-api-key"}]},{"group":"Integrations","pages":[{"title":"List integrations","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/integrations","href":"/api-reference/integrations/list-integrations"},{"title":"Register an integration","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/integrations","href":"/api-reference/integrations/register-an-integration"},{"title":"Delete an integration","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/integrations/{integration_id}","href":"/api-reference/integrations/delete-an-integration"},{"title":"Rotate an integration's secret","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/integrations/{integration_id}/rotate","href":"/api-reference/integrations/rotate-an-integrations-secret"}]},{"group":"Webhooks","pages":[{"title":"List your webhook endpoints","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/webhooks","href":"/api-reference/webhooks/list-your-webhook-endpoints"},{"title":"Register a webhook endpoint","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/webhooks","href":"/api-reference/webhooks/register-a-webhook-endpoint"},{"title":"Delete a webhook endpoint","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/webhooks/{endpoint_id}","href":"/api-reference/webhooks/delete-a-webhook-endpoint"},{"title":"Rotate a webhook signing key","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/webhooks/{endpoint_id}/rotate","href":"/api-reference/webhooks/rotate-a-webhook-signing-key"},{"title":"Send a test event","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/webhooks/{endpoint_id}/test","href":"/api-reference/webhooks/send-a-test-event"},{"title":"List delivery attempts","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/webhooks/{endpoint_id}/deliveries","href":"/api-reference/webhooks/list-delivery-attempts"},{"title":"Replay a delivery","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/webhooks/{endpoint_id}/deliveries/{event_id}/replay","href":"/api-reference/webhooks/replay-a-delivery"},{"title":"Assessment updated","version":null,"deprecated":null,"openapi":"/openapi.json webhook assessment.updated","href":"/api-reference/webhooks/assessment-updated"},{"title":"Endpoint verification","version":null,"deprecated":null,"openapi":"/openapi.json webhook endpoint.verification","href":"/api-reference/webhooks/endpoint-verification"},{"title":"Account erased","version":null,"deprecated":null,"openapi":"/openapi.json webhook account.deleted","href":"/api-reference/webhooks/account-erased"},{"title":"Workspace deleted","version":null,"deprecated":null,"openapi":"/openapi.json webhook workspace.deleted","href":"/api-reference/webhooks/workspace-deleted"},{"title":"Webhook endpoint disabled","version":null,"deprecated":null,"openapi":"/openapi.json webhook webhook_endpoint.disabled","href":"/api-reference/webhooks/webhook-endpoint-disabled"},{"title":"Account decision changed","version":null,"deprecated":null,"openapi":"/openapi.json webhook account.risk_changed","href":"/api-reference/webhooks/account-decision-changed"}]}]},{"group":"Errors","icon":"triangle-alert","pages":[{"title":"Errors and limits","icon":"triangle-alert","href":"/reference/errors"},{"group":"Problem types","expanded":false,"pages":[{"title":"400 invalid_request","sidebarTitle":"invalid_request","href":"/problems/invalid-request"},{"title":"400 invalid_idempotency_key","sidebarTitle":"invalid_idempotency_key","href":"/problems/invalid-idempotency-key"},{"title":"400 invalid_cursor","sidebarTitle":"invalid_cursor","href":"/problems/invalid-cursor"},{"title":"401 unauthorized","sidebarTitle":"unauthorized","href":"/problems/unauthorized"},{"title":"403 workspace_forbidden","sidebarTitle":"workspace_forbidden","href":"/problems/workspace-forbidden"},{"title":"404 not_found","sidebarTitle":"not_found","href":"/problems/not-found"},{"title":"405 method_not_allowed","sidebarTitle":"method_not_allowed","href":"/problems/method-not-allowed"},{"title":"409 idempotency_key_reused","sidebarTitle":"idempotency_key_reused","href":"/problems/idempotency-key-reused"},{"title":"409 key_rotation_in_progress","sidebarTitle":"key_rotation_in_progress","href":"/problems/key-rotation-in-progress"},{"title":"400 webhook_url_refused","sidebarTitle":"webhook_url_refused","href":"/problems/webhook-url-refused"},{"title":"409 webhook_endpoint_limit_reached","sidebarTitle":"webhook_endpoint_limit_reached","href":"/problems/webhook-endpoint-limit-reached"},{"title":"409 webhook_endpoint_unverified","sidebarTitle":"webhook_endpoint_unverified","href":"/problems/webhook-endpoint-unverified"},{"title":"409 too_many_integrations","sidebarTitle":"too_many_integrations","href":"/problems/too-many-integrations"},{"title":"409 risk_version_ahead","sidebarTitle":"risk_version_ahead","href":"/problems/risk-version-ahead"},{"title":"401 invalid_hook_signature","sidebarTitle":"invalid_hook_signature","href":"/problems/invalid-hook-signature"},{"title":"413 payload_too_large","sidebarTitle":"payload_too_large","href":"/problems/payload-too-large"},{"title":"415 unsupported_media_type","sidebarTitle":"unsupported_media_type","href":"/problems/unsupported-media-type"},{"title":"429 rate_limited","sidebarTitle":"rate_limited","href":"/problems/rate-limited"},{"title":"500 internal_error","sidebarTitle":"internal_error","href":"/problems/internal-error"},{"title":"503 service_unavailable","sidebarTitle":"service_unavailable","href":"/problems/service-unavailable"}]}]}]}]},"title":"List changed accounts - NoResponse docs","buildId":"dpl_849ArpqvBiCczQiT1Y1stNGpbqHT","deploymentId":"dpl_849ArpqvBiCczQiT1Y1stNGpbqHT","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-Bbp7I60D.js","utils-C3RIvJha.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DqD-vLt8.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-B31Loprg.js","snippetPresets-DKpk-b8t.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-Cj65AhOR.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BXtn5gcC.js","shallow-RY2b03Cp.js","getApiPlaygroundDisplay-B0jeiPk3.js","CodeSnippet-CYgBjjwn.js","CodeSnippets-DOngDrYB.js","Page-n7I5XbKb.js","getPastedJson-DRQbJx-T.js","icon-CQiQCicY.js","MethodPill-BKTLdNtu.js","DuplicateIcon-B9jpAdat.js","createIcon-DCddRrXv.js","DynamicMarkdown-a8hUKrw6.js","SectionHeading-eECVV2eH.js","axios-vUo_bRtp.js","Markdown--GF7ZIpf.js","clsx-DZLdJUrt.js","lib--scc4DXi.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-2LoAhjKH.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-Zwc0ZncM.js"]}