{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"363a596e-9cb7-463d-ad41-0d544d48ee3a","name":"PSBI Partner API","description":"# PSBI Partner API\n\nBuild background screening and ongoing compliance into your HRIS, ATS or workforce platform.\n\n| Part | What it does |\n|---|---|\n| **AutoPilot API** | Enroll a person into a position (a *checklist*). PSBI orders everything that position requires and keeps it current. |\n| **Partner Gateway** | Order specific background check products for a person. |\n| **Status Webhooks** | PSBI posts to your endpoint when an order is in review, in progress and complete. |\n\n**New integration?** Start with **Recipe: AutoPilot enrollment with status webhooks**. It walks through a working integration from the first API call to the completed report.\n\n**Using an AI assistant or coding agent?** Point it at the plain-markdown version: [psbi.com/developers/partner-api.md](https://psbi.com/developers/partner-api.md), with the recipe at [psbi.com/developers/autopilot-webhooks-recipe.md](https://psbi.com/developers/autopilot-webhooks-recipe.md). Both are indexed from [psbi.com/llms.txt](https://psbi.com/llms.txt).\n\n## Base URL\n\n```\nhttps://app.psbi.com\n```\n\n## Authentication\n\nEvery request carries your API key. Send it in a header:\n\n```\nX-API-Key: your-api-key\n```\n\n`Authorization: Bearer your-api-key` is also accepted.\n\n- A key belongs to one connection, and a connection belongs to one PSBI client account. Every request acts on that account only.\n- Keep keys server-side. A key is a credential for your clients' screening data.\n- If the system calling PSBI cannot set headers, an `api_key` query parameter is accepted. Prefer a header wherever you can, because URLs end up in logs.\n\nYour PSBI implementation contact issues keys.\n\n## Requests\n\n- Send JSON with `Content-Type: application/json`, and `Accept: application/json`.\n- Dates are `YYYY-MM-DD`. Timestamps in responses are ISO 8601 in UTC.\n\n## Responses\n\nEvery response has a boolean `success`. Failures add an `error` object:\n\n```json\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"VALIDATION_FAILED\",\n    \"message\": \"The provided data is invalid\",\n    \"details\": { \"consumer.email\": [\"Consumer email is required\"] }\n  }\n}\n```\n\n`details` is included when there is more to say.\n\n| HTTP | `error.code` | Meaning |\n|---|---|---|\n| 400 | `NO_CLIENT_ASSOCIATION` | The API key is not attached to a client account. Contact PSBI. |\n| 401 | `MISSING_API_KEY` | No API key was sent. |\n| 401 | `INVALID_API_KEY` | The key is wrong or has been deactivated. |\n| 404 | `TRANSACTION_NOT_FOUND` | No request with that `external_id` exists on your connection. |\n| 404 | `CHECKLIST_NOT_FOUND` | The checklist does not exist, is inactive, or belongs to another account. |\n| 404 | `CONSUMER_NOT_FOUND` | A transition could not match the person. |\n| 404 | `NO_ACTIVE_ENROLLMENT` | A transition found the person, but they are not enrolled in a position. |\n| 409 | `DUPLICATE_TRANSACTION` | That `external_id` has already been used on your connection. |\n| 422 | `VALIDATION_FAILED` | The body failed validation. `details` lists each field. |\n| 422 | varies | A synchronous (`\"sync\": true`) request was valid but could not be processed, for example `already_enrolled`. Read `error.message`. |\n| 500 | `INTERNAL_ERROR` | Something failed on PSBI's side. Retry later, and contact PSBI if it persists. |\n\n## Identifiers\n\n| Field | Whose | Notes |\n|---|---|---|\n| `external_id` | **Yours** | Your reference for the request, such as a hire or requisition id. It must be unique per connection, and reusing one returns `409`. You look requests up by it, and it comes back on every status webhook. If you leave it out, PSBI generates one and returns it, but you should always send your own. |\n| `transaction_id` | PSBI | The id of your API request in PSBI. |\n| `consumer_transaction_id` | PSBI | The id of the background check order the request produced. |\n| `consumer.id` | PSBI | The person's id in PSBI. Use it for transitions. |\n\n## Synchronous and asynchronous processing\n\n- **Asynchronous (default).** PSBI validates the request, returns `202 Accepted` with `status: \"received\"`, and processes it in the background. Processing normally completes within a minute. Poll the status endpoint or wait for webhooks.\n- **Synchronous (`\"sync\": true`).** PSBI processes the request before responding and returns `200` with the result. Allow up to 30 seconds. This suits interactive screens. For bulk loads, use asynchronous.\n\nValidation errors, unknown checklists and duplicate `external_id`s are rejected immediately in both modes.\n\n## Volume\n\nThere is no published per-minute limit. Before loading records in bulk (thousands at once), tell your implementation contact.\n\n## Support\n\nContact your PSBI implementation team, or email integrations@psbi.com.\n","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"44933307","team":7811338,"collectionId":"363a596e-9cb7-463d-ad41-0d544d48ee3a","publishedId":"2sBXVbJuYQ","public":true,"publicUrl":"https://apis.psbi.com","privateUrl":"https://go.postman.co/documentation/44933307-363a596e-9cb7-463d-ad41-0d544d48ee3a","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"5643AD"},"documentationLayout":"classic-double-column","customisation":{"metaTags":[{"name":"description","value":"Integrate background screening and compliance management into your systems. The Partner Gateway handles background check transactions while the AutoPilot API automates employee enrollment and position management. RESTful endpoints with sync and async processing options."},{"name":"title","value":"PSBI Partner API Documentation"}],"appearance":{"default":"light","themes":[{"name":"dark","logo":"https://content.pstmn.io/b71632a5-b5f6-4356-976f-91605320c685/UHJlU2VhcmNoIEZpbmFsIHYzIEludmVydGVkLnBuZw==","colors":{"top-bar":"212121","right-sidebar":"303030","highlight":"5643AD"}},{"name":"light","logo":"https://content.pstmn.io/fefb03ec-6884-4f06-8d4d-dd794fcaed3f/UHJlU2VhcmNoIEZpbmFsIHYzLnBuZw==","colors":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"5643AD"}}]}},"version":"8.12.6","publishDate":"2025-12-31T20:25:08.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{"title":"PSBI Partner API Documentation","description":"Integrate background screening and compliance management into your systems. The Partner Gateway handles background check transactions while the AutoPilot API automates employee enrollment and position management. RESTful endpoints with sync and async processing options."},"logos":{"logoLight":"https://content.pstmn.io/fefb03ec-6884-4f06-8d4d-dd794fcaed3f/UHJlU2VhcmNoIEZpbmFsIHYzLnBuZw==","logoDark":"https://content.pstmn.io/b71632a5-b5f6-4356-976f-91605320c685/UHJlU2VhcmNoIEZpbmFsIHYzIEludmVydGVkLnBuZw=="}},"statusCode":200},"environments":[],"user":{"authenticated":false,"permissions":{"publish":false}},"run":{"button":{"js":"https://run.pstmn.io/button.js","css":"https://run.pstmn.io/button.css"}},"web":"https://www.getpostman.com/","team":{"logo":"https://res.cloudinary.com/postman/image/upload/t_team_logo_pubdoc/v1/team/ea1a80aa9fe24897425a201014bded42f885f00178d48e6fdadd20e32bd91a09","favicon":"https://psbi.com/favicon.ico"},"isEnvFetchError":false,"languages":"[{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"HttpClient\"},{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"RestSharp\"},{\"key\":\"curl\",\"label\":\"cURL\",\"variant\":\"cURL\"},{\"key\":\"dart\",\"label\":\"Dart\",\"variant\":\"http\"},{\"key\":\"go\",\"label\":\"Go\",\"variant\":\"Native\"},{\"key\":\"http\",\"label\":\"HTTP\",\"variant\":\"HTTP\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"OkHttp\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"Unirest\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"Fetch\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"jQuery\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"XHR\"},{\"key\":\"c\",\"label\":\"C\",\"variant\":\"libcurl\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Axios\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Native\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Request\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Unirest\"},{\"key\":\"objective-c\",\"label\":\"Objective-C\",\"variant\":\"NSURLSession\"},{\"key\":\"ocaml\",\"label\":\"OCaml\",\"variant\":\"Cohttp\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"cURL\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"Guzzle\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"HTTP_Request2\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"pecl_http\"},{\"key\":\"powershell\",\"label\":\"PowerShell\",\"variant\":\"RestMethod\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"http.client\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"Requests\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"httr\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"RCurl\"},{\"key\":\"ruby\",\"label\":\"Ruby\",\"variant\":\"Net::HTTP\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"Httpie\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"wget\"},{\"key\":\"swift\",\"label\":\"Swift\",\"variant\":\"URLSession\"}]","languageSettings":[{"key":"csharp","label":"C#","variant":"HttpClient"},{"key":"csharp","label":"C#","variant":"RestSharp"},{"key":"curl","label":"cURL","variant":"cURL"},{"key":"dart","label":"Dart","variant":"http"},{"key":"go","label":"Go","variant":"Native"},{"key":"http","label":"HTTP","variant":"HTTP"},{"key":"java","label":"Java","variant":"OkHttp"},{"key":"java","label":"Java","variant":"Unirest"},{"key":"javascript","label":"JavaScript","variant":"Fetch"},{"key":"javascript","label":"JavaScript","variant":"jQuery"},{"key":"javascript","label":"JavaScript","variant":"XHR"},{"key":"c","label":"C","variant":"libcurl"},{"key":"nodejs","label":"NodeJs","variant":"Axios"},{"key":"nodejs","label":"NodeJs","variant":"Native"},{"key":"nodejs","label":"NodeJs","variant":"Request"},{"key":"nodejs","label":"NodeJs","variant":"Unirest"},{"key":"objective-c","label":"Objective-C","variant":"NSURLSession"},{"key":"ocaml","label":"OCaml","variant":"Cohttp"},{"key":"php","label":"PHP","variant":"cURL"},{"key":"php","label":"PHP","variant":"Guzzle"},{"key":"php","label":"PHP","variant":"HTTP_Request2"},{"key":"php","label":"PHP","variant":"pecl_http"},{"key":"powershell","label":"PowerShell","variant":"RestMethod"},{"key":"python","label":"Python","variant":"http.client"},{"key":"python","label":"Python","variant":"Requests"},{"key":"r","label":"R","variant":"httr"},{"key":"r","label":"R","variant":"RCurl"},{"key":"ruby","label":"Ruby","variant":"Net::HTTP"},{"key":"shell","label":"Shell","variant":"Httpie"},{"key":"shell","label":"Shell","variant":"wget"},{"key":"swift","label":"Swift","variant":"URLSession"}],"languageOptions":[{"label":"C# - HttpClient","value":"csharp - HttpClient - C#"},{"label":"C# - RestSharp","value":"csharp - RestSharp - C#"},{"label":"cURL - cURL","value":"curl - cURL - cURL"},{"label":"Dart - http","value":"dart - http - Dart"},{"label":"Go - Native","value":"go - Native - Go"},{"label":"HTTP - HTTP","value":"http - HTTP - HTTP"},{"label":"Java - OkHttp","value":"java - OkHttp - Java"},{"label":"Java - Unirest","value":"java - Unirest - Java"},{"label":"JavaScript - Fetch","value":"javascript - Fetch - JavaScript"},{"label":"JavaScript - jQuery","value":"javascript - jQuery - JavaScript"},{"label":"JavaScript - XHR","value":"javascript - XHR - JavaScript"},{"label":"C - libcurl","value":"c - libcurl - C"},{"label":"NodeJs - Axios","value":"nodejs - Axios - NodeJs"},{"label":"NodeJs - Native","value":"nodejs - Native - NodeJs"},{"label":"NodeJs - Request","value":"nodejs - Request - NodeJs"},{"label":"NodeJs - Unirest","value":"nodejs - Unirest - NodeJs"},{"label":"Objective-C - NSURLSession","value":"objective-c - NSURLSession - Objective-C"},{"label":"OCaml - Cohttp","value":"ocaml - Cohttp - OCaml"},{"label":"PHP - cURL","value":"php - cURL - PHP"},{"label":"PHP - Guzzle","value":"php - Guzzle - PHP"},{"label":"PHP - HTTP_Request2","value":"php - HTTP_Request2 - PHP"},{"label":"PHP - pecl_http","value":"php - pecl_http - PHP"},{"label":"PowerShell - RestMethod","value":"powershell - RestMethod - PowerShell"},{"label":"Python - http.client","value":"python - http.client - Python"},{"label":"Python - Requests","value":"python - Requests - Python"},{"label":"R - httr","value":"r - httr - R"},{"label":"R - RCurl","value":"r - RCurl - R"},{"label":"Ruby - Net::HTTP","value":"ruby - Net::HTTP - Ruby"},{"label":"Shell - Httpie","value":"shell - Httpie - Shell"},{"label":"Shell - wget","value":"shell - wget - Shell"},{"label":"Swift - URLSession","value":"swift - URLSession - Swift"}],"layoutOptions":[{"value":"classic-single-column","label":"Single Column"},{"value":"classic-double-column","label":"Double Column"}],"versionOptions":[],"environmentOptions":[{"value":"0","label":"No Environment"}],"canonicalUrl":"https://apis.psbi.com/view/metadata/2sBXVbJuYQ"}