Home AssignmentsFind freelance work InvoicingHow invoicing works PayoutsManage contractors SupportSupport and help
Country
Language
Create a free account

API/Verification (reference)

Reference

Verification

Register return URLs, start verification sessions with Veriff or BankID, and retrieve the status along the way.

Contents
Note

All calls require Authorization: Bearer <token> and API-key: <uuid>. The base URL is https://app.easyfreelance.no/api/v1 in production and https://test.easyfreelance.no/api/v1 in test. See Authentication.

Note

This page is the endpoint reference. If you need to understand the sequence and the status values, start with Verification (KYC / ID).

Return URLs

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

FieldTypeDescription
partner_return_urlstringrequiredMax 2048 characters.
Important

201 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

CodeDescription
422The URL is already registered for your partner account.
401Not 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"
    }
  ]
}

Sessions

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

FieldTypeDescription
providerstringrequiredveriff or bankid.
partner_return_urlstringrequiredMax 2048 characters. Must be approved in advance.
id_typestringoptionalRequired 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"
}
Note

Open 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

FieldDescription
statuspending, approved, incomplete, declined, cancelled, expired or error.
next_actionAlways set. What the client should do next.
onboardingSame structure as for GET /users/{id}.
id_verification_detailcomplete, missing_fields, reason_codes and partner_instructions.
verified_at, expires_at, last_polled_atTimestamps.

Errors

CodeDescription
403The session exists but belongs to another partner.
404The session ID does not exist.
Rate budget

Poll 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.