DEVELOPER DOCUMENTATION

POST /api/v1/step-up-attempts/{attempt_id}

Report the outcome of a customer-owned step-up requested by hosted validation.

Start in Observe on one route. Use the deployment URL and installed package version supplied for your workspace. Historical host examples and source capabilities do not establish a live service or published release.

Endpoint

Code
POST https://gate.x-lock.dev/api/v1/step-up-attempts/{attempt_id}

Description

When locked hosted validation returns action: "step_up", MANDATE may include

a stepUpAttemptId. Your application owns the actual MFA, passkey, email,

payment verification, support review, or custom workflow. This endpoint only

records the terminal aggregate outcome so dashboard reporting can show whether

requested step-ups completed, failed, or were bypassed.

It is server-to-server only. Do not call it from browser JavaScript, and do not

send identity proof data or raw request material.

Request

Content-Type: application/json

Authorization: Bearer mak_... with tokens:validate scope

json
{
  "status": "completed"
}

attempt_id

The stepUpAttemptId returned by POST /validate when hosted validation

requested a customer-owned step-up.

Authorization

Customer API key with the tokens:validate scope. The key's organization

must own the step-up attempt.

status

Terminal outcome: completed, failed, or bypassed.

Warning

The request body rejects unknown fields. Do not send user identity proof

data, account identifiers, opaque tokens, site secrets, session payloads,

request bodies, fingerprints, or collector payloads.

Response

Content-Type: application/json

Success (200)

json
{
  "id": "b3b0d225-86c7-4e3f-8d38-10b9ea6f17f0",
  "site_key_id": "8bd93e33-6f46-4c28-9c06-7e9d4b0a8891",
  "status": "completed",
  "kind": "mfa",
  "route": "/checkout",
  "route_class": "high",
  "completed_at": "2026-06-28T07:12:24Z",
  "updated_at": "2026-06-28T07:12:24Z"
}

Only attempts currently in requested state can transition. Repeating a

terminal update returns 404 because there is no mutable pending attempt left

for that organization.

Error (400/401/403/404)

json
{
  "error": "step-up attempt not found"
}
StatusMeaning
400Invalid attempt id, invalid JSON, unknown body fields, or unsupported status
401Missing or invalid API key
403API key is valid but lacks tokens:validate
404No pending step-up attempt exists for this organization and id