{
  "info": {
    "name": "Sentinel API",
    "description": "KYC, KYB, AML screening, document (IDP) checks and transaction monitoring for Kenya and East Africa.\n\nSet the collection variable apiKey to a test key (gt_test_…) to try every call without charges. Generated from sentinel-openapi.yaml 1.0.0.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
    "version": "1.0.0"
  },
  "auth": {
    "type": "bearer",
    "bearer": [
      {
        "key": "token",
        "value": "{{apiKey}}",
        "type": "string"
      }
    ]
  },
  "variable": [
    {
      "key": "baseUrl",
      "value": "https://robust-parakeet-542.convex.site"
    },
    {
      "key": "apiKey",
      "value": ""
    }
  ],
  "item": [
    {
      "name": "KYC",
      "description": "Identity checks (document, liveness, face match, IPRS and AML).",
      "item": [
        {
          "name": "Run a KYC identity check",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/verify/idp",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "verify",
                "idp"
              ]
            },
            "description": "Document scan, liveness, face match, IPRS (Kenya's national register)\nand AML screening of the person. Scope `verify:kyc`. Each media field\nis at most 1,000,000 base64 characters.\n\n\nScope: `verify:kyc`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"documentFrontBase64\": \"/9j/4AAQSkZJRg…\",\n  \"documentBackBase64\": \"/9j/4AAQSkZJRg…\",\n  \"livenessFramesBase64\": \"/9j/4AAQSkZJRg…\",\n  \"livenessMediaType\": \"jpeg_frames\",\n  \"idNumber\": \"30458812\",\n  \"firstName\": \"Wanjiku\",\n  \"lastName\": \"Mwangi\",\n  \"dateOfBirth\": \"1992-04-17\",\n  \"gender\": \"F\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        }
      ]
    },
    {
      "name": "KYB",
      "description": "Business checks (registration, address, directors and owners).",
      "item": [
        {
          "name": "Verify a business",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/verify/kyb",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "verify",
                "kyb"
              ]
            },
            "description": "Checks the registration certificate (or CR12) and proof of address,\nlooks the business up in the register when available, and screens\nthe business and every director and owner. Each file is at most\n4,000,000 base64 characters (about 3 MB). Scope `verify:kyb`.\n\n\nScope: `verify:kyb`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"businessName\": \"Mwangi Traders Limited\",\n  \"registrationNumber\": \"PVT-AB1234\",\n  \"incorporationCountry\": \"KE\",\n  \"businessType\": \"Private limited company\",\n  \"externalRef\": \"BIZ-2001\",\n  \"registrationDocBase64\": \"JVBERi0xLjcK…\",\n  \"proofOfAddressBase64\": \"JVBERi0xLjcK…\",\n  \"directors\": [\n    {\n      \"firstName\": \"Wanjiku\",\n      \"lastName\": \"Mwangi\",\n      \"email\": \"wanjiku@example.co.ke\",\n      \"position\": \"Director\",\n      \"shareholding\": \"60%\",\n      \"dateOfBirth\": \"1992-04-17\",\n      \"idNumber\": \"30458812\"\n    }\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        }
      ]
    },
    {
      "name": "Documents",
      "description": "IDP document checks (identity documents, proof of address, KRA PIN certificates).",
      "item": [
        {
          "name": "Check a document",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/verify/document",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "verify",
                "document"
              ]
            },
            "description": "Verifies an identity document, a proof of address or a KRA PIN\ncertificate with vision, OCR and forensic checks, and optionally\nmatches it to what the customer declared. Scope `verify:document`.\n\n\nScope: `verify:document`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"documentKind\": \"proof_of_address\",\n  \"documentFrontBase64\": \"JVBERi0xLjcK…\",\n  \"expectedName\": \"Wanjiku Mwangi\",\n  \"expectedAddress\": \"Kilimani, Nairobi\",\n  \"maxDocumentAgeDays\": 90,\n  \"externalRef\": \"CUST-1001\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        }
      ]
    },
    {
      "name": "AML",
      "description": "Sanctions, PEP and watch-list screening, and ongoing monitoring.",
      "item": [
        {
          "name": "Screen a person or business",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/verify/aml",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "verify",
                "aml"
              ]
            },
            "description": "Screens a name against sanctions, PEP (politically exposed persons),\nKenyan risk lists and watch lists. With `monitor: true` (live keys)\nthe subject is also re-screened daily and new hits are sent as\n`sentinel.monitoring.alert`. Scope `verify:aml`.\n\n\nScope: `verify:aml`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"subjectName\": \"Wanjiku Mwangi\",\n  \"entityType\": \"individual\",\n  \"country\": \"KE\",\n  \"dateOfBirth\": \"1992-04-17\",\n  \"idNumber\": \"30458812\",\n  \"monitor\": true,\n  \"externalRef\": \"CUST-1001\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "List monitored subjects",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/monitoring/subjects",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "monitoring",
                "subjects"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "",
                  "description": "Page size, 1 to 100. Default 25 for checks and credit history, 50 for capture links and monitored subjects.",
                  "disabled": true
                },
                {
                  "key": "before",
                  "value": "",
                  "description": "The `nextCursor` from the previous page.",
                  "disabled": true
                }
              ]
            },
            "description": "Subjects in ongoing AML monitoring, newest first. Enrol one with `POST /v1/verify/aml` and `monitor: true`. Scope `monitoring`.\n\nScope: `monitoring`."
          }
        },
        {
          "name": "Get a monitored subject",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/monitoring/subjects/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "monitoring",
                "subjects",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "",
                  "description": "The monitored subject's id, `mon_…`."
                }
              ]
            },
            "description": "Get a monitored subject\n\nScope: `monitoring`."
          }
        },
        {
          "name": "Stop monitoring a subject",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/monitoring/subjects/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "monitoring",
                "subjects",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "",
                  "description": "The monitored subject's id, `mon_…`."
                }
              ]
            },
            "description": "Stop monitoring a subject\n\nScope: `monitoring`."
          }
        }
      ]
    },
    {
      "name": "Transactions",
      "description": "Transaction monitoring (Business and Enterprise plans, and the trial).",
      "item": [
        {
          "name": "Send transactions for monitoring",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/transactions",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "transactions"
              ]
            },
            "description": "1 to 500 transactions per call, checked against your monitoring rules\n(large cash, structuring, rapid movement, high-risk countries,\nsanctioned counterparties). Idempotent per `externalId`: a repeat is\ncounted in `duplicates`, not stored twice. Test keys validate without\nstoring. Needs the Business or Enterprise plan (or the trial); other\nplans get `403`. Scope `monitoring`.\n\n\nScope: `monitoring`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"transactions\": [\n    {\n      \"externalId\": \"TX-000981\",\n      \"customerRef\": \"CUST-1001\",\n      \"occurredAt\": \"2026-10-18T09:15:00+03:00\",\n      \"amount\": 950000,\n      \"currency\": \"KES\",\n      \"direction\": \"in\",\n      \"channel\": \"cash\",\n      \"narration\": \"Branch deposit\"\n    }\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        }
      ]
    },
    {
      "name": "Capture links",
      "description": "Links a customer opens on their phone to capture their ID and a selfie.",
      "item": [
        {
          "name": "List capture links",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/capture-links",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "capture-links"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "",
                  "description": "Page size, 1 to 100. Default 25 for checks and credit history, 50 for capture links and monitored subjects.",
                  "disabled": true
                },
                {
                  "key": "before",
                  "value": "",
                  "description": "The `nextCursor` from the previous page.",
                  "disabled": true
                }
              ]
            },
            "description": "List capture links\n\nScope: `capture`."
          }
        },
        {
          "name": "Create a capture link",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/capture-links",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "capture-links"
              ]
            },
            "description": "A link the customer opens on their phone to photograph their ID and\ntake a selfie; their submission becomes an ordinary KYC check\n(charged when they submit, result by webhook). Links last 72 hours.\nThe `link` address is returned only in this answer. With\n`method: link` you deliver it yourself. SMS and WhatsApp delivery\nare not switched on yet: use `link`. Scope `capture`.\n\n\nScope: `capture`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"method\": \"link\",\n  \"language\": \"sw\",\n  \"prefill\": {\n    \"firstName\": \"Wanjiku\",\n    \"lastName\": \"Mwangi\",\n    \"idNumber\": \"30458812\"\n  },\n  \"externalRef\": \"CUST-1001\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Get a capture link",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/capture-links/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "capture-links",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "",
                  "description": "The capture link's id, `cap_…`."
                }
              ]
            },
            "description": "Get a capture link\n\nScope: `capture`."
          }
        },
        {
          "name": "Cancel a capture link",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/capture-links/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "capture-links",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "",
                  "description": "The capture link's id, `cap_…`."
                }
              ]
            },
            "description": "A pending or opened link stops working and its prefilled details are removed. A submitted or expired link is returned unchanged.\n\nScope: `capture`."
          }
        }
      ]
    },
    {
      "name": "Results",
      "description": "Read checks and their results.",
      "item": [
        {
          "name": "List checks",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/verify",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "verify"
              ],
              "query": [
                {
                  "key": "status",
                  "value": "",
                  "description": "",
                  "disabled": true
                },
                {
                  "key": "type",
                  "value": "",
                  "description": "",
                  "disabled": true
                },
                {
                  "key": "limit",
                  "value": "",
                  "description": "Page size, 1 to 100. Default 25 for checks and credit history, 50 for capture links and monitored subjects.",
                  "disabled": true
                },
                {
                  "key": "before",
                  "value": "",
                  "description": "The `nextCursor` from the previous page.",
                  "disabled": true
                }
              ]
            },
            "description": "Your organization's checks, newest first. Scope `results:read`.\n\nScope: `results:read`."
          }
        },
        {
          "name": "Get a check and its result",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/verify/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "verify",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "",
                  "description": "The check's id, for example `ver_3f9a1c0b7d2e4a51…`."
                }
              ]
            },
            "description": "One check. A completed AML check adds `screening`, a document check\n`document`, and a KYB check `kyb`. Scope `results:read`.\n\n\nScope: `results:read`."
          }
        }
      ]
    },
    {
      "name": "Credits",
      "description": "Credit balance, prices and usage.",
      "item": [
        {
          "name": "Credit balance and prices",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/credits",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "credits"
              ]
            },
            "description": "Scope `credits:read`.\n\nScope: `credits:read`."
          }
        },
        {
          "name": "Credit history",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/credits/ledger",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "credits",
                "ledger"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "",
                  "description": "Page size, 1 to 100. Default 25 for checks and credit history, 50 for capture links and monitored subjects.",
                  "disabled": true
                },
                {
                  "key": "before",
                  "value": "",
                  "description": "The `nextCursor` from the previous page.",
                  "disabled": true
                }
              ]
            },
            "description": "Every credit added or used, newest first. Scope `credits:read`.\n\nScope: `credits:read`."
          }
        }
      ]
    }
  ]
}
