Create a checklist
Create a Check List on the authenticated client. name is required. Countries, domains, and feature codes are optional on create — you can add services later with Update a checklist.
Saving the list does not run lookups and does not spend credits. In Smart-Agent, create lands you back on the dashboard; this API returns the new document immediately.
Endpoint
POST https://api.verifik.co/v2/check-lists
Creates a list owned by the client on the JWT. The response data object includes _id — store it for later GET, PUT, and DELETE calls. Default status is draft.
Headers
| Name | Value |
|---|---|
| Content-Type | application/json |
| Authorization | Bearer <token> |
The token must be a client JWT. A token without clientId returns 403.
Body
| Name | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Display name. Trimmed, 1–150 characters. |
countries | string[] | No | Country names you operate in (for example Colombia). Duplicates are dropped. Default []. |
domains | string[] | No | Optional tabs: people, vehicles, businesses. Default []. |
featureCodes | string[] | No | AppFeature code values to save on the list. Default []. |
status | string | No | draft (default) or active. Organizer label only — both work the same. |
Unknown featureCodes fail. A service whose country does not match countries fails unless that service is worldwide or countries is empty.
Request
- Node.js
- PHP
- Python
- Go
const fetch = require("node-fetch");
async function run() {
const res = await fetch("https://api.verifik.co/v2/check-lists", {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${process.env.VERIFIK_TOKEN}`,
},
body: JSON.stringify({
name: "KYC Colombia",
countries: ["Colombia"],
domains: [],
featureCodes: [],
status: "draft",
}),
});
console.log(await res.json());
}
run();
<?php
$ch = curl_init("https://api.verifik.co/v2/check-lists");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Content-Type: application/json",
"Authorization: Bearer " . getenv("VERIFIK_TOKEN")
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
"name" => "KYC Colombia",
"countries" => ["Colombia"],
"domains" => [],
"featureCodes" => [],
"status" => "draft"
]));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
echo curl_exec($ch);
import os, requests
url = "https://api.verifik.co/v2/check-lists"
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {os.getenv('VERIFIK_TOKEN')}"
}
payload = {
"name": "KYC Colombia",
"countries": ["Colombia"],
"domains": [],
"featureCodes": [],
"status": "draft",
}
r = requests.post(url, json=payload, headers=headers)
print(r.json())
package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
"os"
)
func main() {
body, _ := json.Marshal(map[string]interface{}{
"name": "KYC Colombia",
"countries": []string{"Colombia"},
"domains": []string{},
"featureCodes": []string{},
"status": "draft",
})
req, _ := http.NewRequest("POST", "https://api.verifik.co/v2/check-lists", bytes.NewReader(body))
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Authorization", "Bearer "+os.Getenv("VERIFIK_TOKEN"))
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
var out map[string]interface{}
json.NewDecoder(resp.Body).Decode(&out)
fmt.Println(out)
}
Response
- 200
- 403
- 409
- 409 invalid feature
- 409 country mismatch
{
"data": {
"_id": "6aa224c87034a338385c28c0",
"client": "507f1f77bcf86cd799439013",
"name": "KYC Colombia",
"countries": ["Colombia"],
"domains": [],
"featureCodes": [],
"status": "draft",
"createdAt": "2026-09-10T03:32:00.000Z",
"updatedAt": "2026-09-10T03:32:00.000Z"
}
}
{
"message": "Client context required",
"code": "Forbidden"
}
{
"message": "\"name\" is required",
"code": "ValidationError"
}
{
"message": "check_list_invalid_feature",
"code": "check_list_invalid_feature"
}
{
"message": "check_list_feature_country_mismatch",
"code": "check_list_feature_country_mismatch"
}
Notes
nameis the only required field. You can create an empty list and addfeatureCodeslater.- Countries are stored as you send them (for example
Colombia). They are not ISO codes. statusdoes not change server behavior. Draft and active lists both work.- Unknown
domainsvalues fail validation. Allowed values:people,vehicles,businesses. - Creating a list does not spend credits. Running a saved service is a normal catalog call.
- There is no execute-checklist endpoint. See Check List and SmartBatch.