Skip to main content
An account is the account_id that you send with your assessments. It holds one current risk: the risk of its latest assessment with a decision. Its assessments are its history. Every assessment updates its account. So when an assessment completes, the account carries its risk. Your account creation gate can issue an API key to the account. When that key has use from many IP addresses or countries, the risk of the account also carries the shared_api_key reason. See Report key usage. Every assessment answer carries the same object as its account. So the call that you assess with already tells you the decision for the account. Get the account when a later request needs the risk that you already paid for. Examples are a login, a purchase or an admin review, long after the account creation. When a user asks you to delete their data, delete the account. Every route is in the interactive reference.

Get an account

GET /v1/accounts/{account_id} needs the history scope. It only reads, and a retry is safe.
TypeScript

Parameters

string
required
The account, in the same shape as on create. It has 1 to 128 characters. The first is a letter or a digit. The others are letters, digits, ., _, :, | and -.Percent-encode : and | if your HTTP client needs it.
The route takes no query parameters.

Response

200 OK with the account.
string
"1".
string
The account_id that you asked about.
object
object
The decision for account_creation, login and purchase, each under the thresholds of that flow. A flow that you did not set uses your account creation thresholds.
string
The assessment that the current risk comes from. To get its detail, call GET /v1/assessments/{assessment_id}.
string
When NoResponse wrote the latest version of that assessment.
Account
The current risk comes from the latest assessment of the account whose status is complete or partial, newest by created_at. A pending assessment does not replace it until it settles. NoResponse scores the risk exactly as GET /v1/assessments/{assessment_id} scores that assessment. So the two always agree. When the decision for any flow changes, NoResponse sends an account.risk_changed event with this object and the decisions it replaced. You do not need to poll this route to see the change.

List the assessments of an account

GET /v1/accounts/{account_id}/assessments answers the same pages as POST /v1/assessments/query, for the account in the path. The pages hold its unexpired assessments, newest first. Each is at its latest assessment_version, in the shape of the detail of an assessment. The route needs the history scope. It only reads, and a retry is safe.
TypeScript
string
required
As above.
integer
default:"20"
1 to 50 items for each page.
string
The next_cursor of the previous page, unchanged.
string
default:"standard"
standard or detailed. detailed needs the detailed scope and the history scope.
The response is the history page. An account with no assessments answers 200 with empty items.
  • A cursor that is changed, foreign or expired answers 400 invalid_cursor.
  • A malformed account_id answers 400 invalid_request.
  • An unknown, repeated or out-of-range query parameter answers 400 invalid_request.
This route puts the account_id in the URL, where proxies and access logs can record it. POST /v1/assessments/query carries it in the body. Use the route that fits your logging.

Delete an account

DELETE /v1/accounts/{account_id} deletes one of your accounts, for example when your user asks you to delete their data. It needs the history scope. The call acts only in the environment of your key. A delete with a test key does not change the live account, and the other way round. To delete one assessment and keep the rest of the account, see Delete an assessment.
TypeScript
The path takes the same account_id as Get an account. The route takes no query parameters.

What goes

In one step, NoResponse deletes every assessment of the account, with all its versions, its evidence and the outcomes that you reported on it. You cannot undo the delete.
  • An abuse outcome that you reported on one of those assessments stops counting toward other assessments at once.
  • NoResponse stops an assessment of the account that still ran when the call arrived.
  • NoResponse refuses a create request for the account that started before the call.
After the delete, you cannot read anything of the account:
  • GET /v1/accounts/{account_id} answers 404 not_found.
  • GET /v1/assessments/{assessment_id} answers 404 for each deleted assessment. An outcome report on one of them also answers 404.
  • The history of the account is an empty page on both history routes.
NoResponse does not block the account_id itself. A new assessment for it after the delete starts a new account with a new history.

Response

200 OK with what the call deleted.
string
"1".
string
The account_id that you deleted.
boolean
Always true.
integer
The number of assessments that this call deleted.
string
When the delete took effect.
Delete response
The call is idempotent, and a retry is safe. A repeat, or an account with nothing to delete, answers 200 with assessments_deleted: 0.

The account.deleted event

When the call deleted at least one assessment, NoResponse sends one account.deleted webhook event to your verified endpoints in the same environment. Every system that holds data about the account can then delete it too. Delete only what comes from assessments created at or before its deleted_at. NoResponse can already have assessed the account again. A repeat that deleted nothing sends no event.