Skip to main content
Log in Contact
API

Seamless integration with our GDPR compliant background check API

Diligent, Responsible, Safe - Effective background check software for safety and compliance.

STREAMLINE ONBOARDING PROCESSES

Benefits of implementing Pescheck's background check API

Pescheck's background check API allows companies to get their platforms up and running quickly while also improving efficiency, managing compliance and safety, and supporting a strong brand experience.

  • Deploy faster - Once your Pescheck-hosted flow is live, you only need a candidate's email to kickstart the process
  • Deliver a seamless experience - A deeper integration makes the background check process a natural extension of your product
  • Save time and resources - Design smooth and efficient onboarding experiences for candidates, gig workers, and other users
feature

API documentation and code examples

Authenticate with OAuth2, create a screening request, fetch its status and result, and receive updates by webhook. The endpoints below are taken from our public OpenAPI schema; replace the YOUR_ placeholders with your own values.

Swagger documentation ReDoc documentation Official SDKs on GitHub

curl

# 1. Authenticate: OAuth2 client credentials
curl -X POST https://api.pescheck.io/api/o/token/ \
  -d grant_type=client_credentials \
  -d client_id=YOUR_CLIENT_ID \
  -d client_secret=YOUR_CLIENT_SECRET
# -> {"access_token": "YOUR_ACCESS_TOKEN", "token_type": "Bearer", "expires_in": 3600, ...}

# 2. Find the profile (set of checks) to screen with
curl https://api.pescheck.io/api/v2/profiles/ \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

# 3. Create a screening request
curl -X POST https://api.pescheck.io/api/v2/screenings/ \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "profile_id": "YOUR_PROFILE_ID",
    "candidate": {
      "first_name": "Jane",
      "last_name": "Doe",
      "email": "[email protected]"
    }
  }'
# -> {"id": "SCREENING_ID", "status": "...", "candidate_wizard_url": "...", "dashboard_url": "...", ...}

# 4. Fetch the status and result
curl https://api.pescheck.io/api/v2/screenings/SCREENING_ID/ \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

# 5. Register a webhook for status changes
curl -X POST https://api.pescheck.io/api/v2/webhooks/ \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Screening updates",
    "url": "https://example.com/pescheck-webhook",
    "events": ["screening.status_changed"]
  }'

# 6. Confirm you own the webhook URL
curl -X POST https://api.pescheck.io/api/v2/webhooks/WEBHOOK_ID/verify/ \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"verification_code": "CODE_SENT_TO_YOUR_WEBHOOK_URL"}'

Node.js

// Node.js 18+ (built-in fetch)
const BASE = "https://api.pescheck.io";

// 1. Authenticate: OAuth2 client credentials
const tokenRes = await fetch(`${BASE}/api/o/token/`, {
  method: "POST",
  body: new URLSearchParams({
    grant_type: "client_credentials",
    client_id: "YOUR_CLIENT_ID",
    client_secret: "YOUR_CLIENT_SECRET",
  }),
});
const { access_token } = await tokenRes.json();

const headers = {
  Authorization: `Bearer ${access_token}`,
  "Content-Type": "application/json",
};

// 2. Find the profile (set of checks) to screen with
const profiles = await (await fetch(`${BASE}/api/v2/profiles/`, { headers })).json();
const profileId = profiles.results[0].id;

// 3. Create a screening request
const createRes = await fetch(`${BASE}/api/v2/screenings/`, {
  method: "POST",
  headers,
  body: JSON.stringify({
    profile_id: profileId,
    candidate: {
      first_name: "Jane",
      last_name: "Doe",
      email: "[email protected]",
    },
  }),
});
const screening = await createRes.json();

// 4. Fetch the status and result
const statusRes = await fetch(`${BASE}/api/v2/screenings/${screening.id}/`, { headers });
const { status, checks } = await statusRes.json();
console.log(status, checks);

// 5. Register a webhook for status changes
const hookRes = await fetch(`${BASE}/api/v2/webhooks/`, {
  method: "POST",
  headers,
  body: JSON.stringify({
    name: "Screening updates",
    url: "https://example.com/pescheck-webhook",
    events: ["screening.status_changed"],
  }),
});
const webhook = await hookRes.json();

// 6. Confirm you own the webhook URL
await fetch(`${BASE}/api/v2/webhooks/${webhook.id}/verify/`, {
  method: "POST",
  headers,
  body: JSON.stringify({ verification_code: "CODE_SENT_TO_YOUR_WEBHOOK_URL" }),
});

Python

# pip install requests
import requests

BASE = "https://api.pescheck.io"

# 1. Authenticate: OAuth2 client credentials
token = requests.post(
    f"{BASE}/api/o/token/",
    data={
        "grant_type": "client_credentials",
        "client_id": "YOUR_CLIENT_ID",
        "client_secret": "YOUR_CLIENT_SECRET",
    },
).json()["access_token"]

headers = {"Authorization": f"Bearer {token}"}

# 2. Find the profile (set of checks) to screen with
profiles = requests.get(f"{BASE}/api/v2/profiles/", headers=headers).json()
profile_id = profiles["results"][0]["id"]

# 3. Create a screening request
screening = requests.post(
    f"{BASE}/api/v2/screenings/",
    headers=headers,
    json={
        "profile_id": profile_id,
        "candidate": {
            "first_name": "Jane",
            "last_name": "Doe",
            "email": "[email protected]",
        },
    },
).json()

# 4. Fetch the status and result
result = requests.get(f"{BASE}/api/v2/screenings/{screening['id']}/", headers=headers).json()
print(result["status"], result["checks"])

# 5. Register a webhook for status changes
webhook = requests.post(
    f"{BASE}/api/v2/webhooks/",
    headers=headers,
    json={
        "name": "Screening updates",
        "url": "https://example.com/pescheck-webhook",
        "events": ["screening.status_changed"],
    },
).json()

# 6. Confirm you own the webhook URL
requests.post(
    f"{BASE}/api/v2/webhooks/{webhook['id']}/verify/",
    headers=headers,
    json={"verification_code": "CODE_SENT_TO_YOUR_WEBHOOK_URL"},
)

Webhook deliveries are sent to your URL when the selected events occur. Fetch the screening with the GET request above to read its current status and results. See the Swagger documentation for the full list of events and fields.

Some of our API connections

Our team of (API) experts is constantly working on developing new integrations. Below you'll find a selection of the possibilities. If the system you are using is not listed (yet), no worries. Feel free to contact us, and we can explore the options together for creating a new integration.

Why use Pescheck's background check API?

1

Dedicated Support

Easily build with our RESTful API with JSON responses.

2

High-security standards

99.99% uptime and real-time, 24/7 access to data.

3

Easy-to-use software

Detailed and organized results with clear and concise labeling.

4

Use your platform

Use Pescheck's hosted background check application or embed the process into your own flow.

5

Pay as you go

Receive detailed status updates via webhooks or response calls.

6

Fast turnaround times

Simple and clear developer documentation, with support from our team.

Available screenings with Pescheck's API

Pescheck makes it easy to order [API] screenings and view results through the webhooks.

  • International PEP and Sanctions List Check
  • Credit Check
  • Criminal Record / Letter of Conduct
  • CV Check - Work-/reference
  • Qualification check
  • Adverse Media check
  • ID Check
  • Integrity Statement
  • VOG (Certificate of Good Conduct) Profile (NL)
POST /api/v2/screenings/
{
"profile_id": "prf_8f2a",
"candidate": {
}
}
201screening.completed
2.5X

Faster Remote Work Process

10+

Years of Experience

7+

Hours Saved Per Month

"For Beldoo, integrating Pescheck's API through Zapier was a remarkably efficient process. It took us less than two hours to set up and fully integrate, significantly streamlining our workflow. This seamless connection has enhanced our operational efficiency, proving to be a valuable asset to our service offerings. Highly recommended for any business looking for reliable and quick integration solutions."
Beldoo

Simon

beldoo.nl

Governance & Security:

FAQ

Questions & answers

Can't find what you're looking for? We're here to help.Contact the API team →