POST/verification-return-urls
Register a return URL
Submits a URL for use as partner_return_url in verification flows. Approval is granted manually by EasyFreelance.
Body
| Field | Type | | Description |
|---|
partner_return_url | string | required | Max 2048 characters. |
Important201 does not mean that the URL is approved. Wait until status is approved before you use it. Until then, POST /users/{id}/verification/flows with this URL may respond 422.
Response
201 Created
{
"id": "9f1c2b74-3d5a-4d2f-9c1e-7a4b8e2f6d10",
"partner_id": 42,
"status": "pending",
"requested_url": "https://partner.example.no/verifisering/retur",
"requested_at": "2026-08-30T10:12:44+00:00"
}Errors
| Code | Description |
|---|
422 | The URL is already registered for your partner account. |
401 | Not authenticated. |
GET/verification-return-urls
List registered return URLs
All registrations for the authenticated partner, newest first. Use this to check whether a URL is pending, approved or rejected.
Response
200 OK
{
"results": [
{
"url": "https://partner.example.no/verifisering/retur",
"status": "approved",
"requested_at": "2026-08-30T10:12:44+00:00",
"approved_at": "2026-08-31T08:03:19+00:00"
}
]
} POST/users/{id}/verification/flows
Start a verification session
Creates a session for the contractor. partner_return_url must be permitted for your partner account, matched against an approved requested_url – otherwise the API responds 422.
Body
| Field | Type | | Description |
|---|
provider | string | required | veriff or bankid. |
partner_return_url | string | required | Max 2048 characters. Must be approved in advance. |
id_type | string | optional | Required when provider is veriff. local for Norwegian ID documents, international for foreign ones. Ignored for BankID. |
Example
POST /users/123/verification/flows
{
"provider": "veriff",
"partner_return_url": "https://partner.example.no/verifisering/retur",
"id_type": "local"
}Response
201 Created
{
"verification_id": "550e8400-e29b-41d4-a716-446655440000",
"provider": "veriff",
"status": "pending",
"id_type": "local",
"verification_url": "https://app.easyfreelance.no/verification/550e8400-...",
"status_check_url": "https://app.easyfreelance.no/api/v1/verification/status/550e8400-...",
"expires_at": "2026-08-30T11:12:44+00:00"
}NoteOpen verification_url in the end user's browser. Use verification_id as the correlation ID when you poll for status. The session is valid until expires_at.
GET/verification/status/{verificationSession}
Retrieve the status of a session
verificationSession is verification_id (UUID) from POST /users/{id}/verification/flows. Poll while the user is in the flow, until status is terminal.
Response
| Field | Description |
|---|
status | pending, approved, incomplete, declined, cancelled, expired or error. |
next_action | Always set. What the client should do next. |
onboarding | Same structure as for GET /users/{id}. |
id_verification_detail | complete, missing_fields, reason_codes and partner_instructions. |
verified_at, expires_at, last_polled_at | Timestamps. |
Errors
| Code | Description |
|---|
403 | The session exists but belongs to another partner. |
404 | The session ID does not exist. |
Rate budgetPoll every 2–5 seconds and stop when the status is terminal. Polling draws on the same rate budget as every other call – 500 requests per minute for the entire partner account.