Skip to main content
POST
/
apps
/
{client_id}
/
production-tests
curl -X POST \
  -H "Authorization: Bearer sk_workspace_test_..." \
  -H "Content-Type: application/json" \
  -d '{"title":"BankID SE Test","providerIds":["bankidse"],"maxStamps":3}' \
  "https://sandbox.api.hopae.com/connect/v1/apps/FK5b0KSM/production-tests"
{
  "id": "req_7f3a9c1e-4b2d-4f88-9e1a-0c3d5b6e7f8a",
  "clientId": "FK5b0KSM",
  "status": "pending",
  "payload": {
    "title": "BankID SE Test",
    "providerIds": ["bankidse"],
    "maxStampClaims": 3,
    "targetPlatform": null
  },
  "challengeId": null,
  "createdAt": "2026-04-08T10:00:00.000Z"
}

Documentation Index

Fetch the complete documentation index at: https://docs.hopae.com/llms.txt

Use this file to discover all available pages before exploring further.

Creates a new production test challenge. The app name is automatically used as the host name. Provider IDs are validated against eligibility criteria.

Request

Authorization
string
required
Bearer <API_KEY> from Console > Developers > Workspace API Keys.
Content-Type
string
application/json
Idempotency-Key
string
Optional client-generated string (max 255 chars) to safely retry without creating duplicates. Scoped per workspace. A key is valid for 24 hours. If the same key is replayed with an identical body, the original response is returned with an Idempotency-Replayed: true header. Reusing the same key with a different body returns 409 IDEMPOTENCY_KEY_CONFLICT.

Path parameters

client_id
string
required
Client identifier of the app.

Request body

title
string
required
Challenge title (max 200 characters).
description
string
Challenge description (max 1000 characters).
providerIds
string[]
Provider IDs to test. Each provider must be:
  • Registered in the system
  • Enabled for the app (app.providers configuration)
  • Not a chip-based provider (type 2)
  • Available in the current deployment environment
If omitted, all eligible providers are included.
targetPlatform
string
Target platform filter: ios or android.
maxStamps
number
Maximum number of stamps (first-come limit). Minimum 1, default 3.
allowDuplicateParticipation
boolean
Whether to allow the same user to participate multiple times with the same provider. Default false.

Response

Returns a challenge request object. This represents a pending request that will be scheduled with the tpas-backend service, not a fully activated challenge yet.
id
string
Request ID. Identifies this challenge request record.
clientId
string
The app client ID this challenge request belongs to.
status
string
Current status of the challenge request (e.g. pending, scheduled, failed).
payload
object
The challenge configuration payload forwarded to tpas-backend. Contains the parameters passed at creation (title, providerIds, maxStampClaims, etc.).
challengeId
string | null
The tpas-backend challenge ID, populated once the request has been successfully scheduled. Use this ID when fetching the challenge report (GET /apps/{client_id}/production-tests/{challenge_id}/report). null or absent if not yet scheduled.
createdAt
string
ISO 8601 timestamp when the challenge request was created.
The challengeId field is only populated after the challenge has been scheduled with tpas-backend. If you need to fetch the report immediately after creation, poll the list endpoint (GET /apps/{client_id}/production-tests) and wait for the item’s type to become "challenge" before using challengeId.
The response includes a Location header pointing at the newly-created resource (e.g., /connect/v1/apps/{clientId}/production-tests/{id}).
curl -X POST \
  -H "Authorization: Bearer sk_workspace_test_..." \
  -H "Content-Type: application/json" \
  -d '{"title":"BankID SE Test","providerIds":["bankidse"],"maxStamps":3}' \
  "https://sandbox.api.hopae.com/connect/v1/apps/FK5b0KSM/production-tests"
{
  "id": "req_7f3a9c1e-4b2d-4f88-9e1a-0c3d5b6e7f8a",
  "clientId": "FK5b0KSM",
  "status": "pending",
  "payload": {
    "title": "BankID SE Test",
    "providerIds": ["bankidse"],
    "maxStampClaims": 3,
    "targetPlatform": null
  },
  "challengeId": null,
  "createdAt": "2026-04-08T10:00:00.000Z"
}