Active BOLO · Tech Things, LLC · hello@techthings.net
For warrant and records systems. One HTTPS call creates a Wanted bulletin that reaches every on-duty officer of the agency as a full-screen alert; a second call recalls it. The agency's administrator makes your API key in Agency Settings → Integrations and gives it to you over a secure channel.
https://activebolo.com/api/v1 · Header on every call: Authorization: Bearer abk_… · Bodies are JSON (Content-Type: application/json) or XML (application/xml). Responses are JSON. The key identifies the agency; you never send an agency id.GET /api/v1/ping
→ 200 {"ok":true,"agency":"sbso","key":"Motorola Flex"}
POST /api/v1/bulletins
{
"externalId": "W-2026-04471", // your own id for the warrant. Required. Idempotent: same id = same bulletin.
"type": "wanted", // optional, default wanted
"person": { "firstName": "John", "middleName": "Q.", "lastName": "Public", "aka": "JQ", "dob": "1988-04-12",
"race": "White", "sex": "Male", "height": "5'11\"", "weight": "190", "hair": "Brown", "eyes": "Hazel",
"marks": "Tattoo, left forearm", "address": "1200 Elm St, Apt 3", "city": "Anytown", "state": "LA", "zip": "70001" },
"charges": ["Aggravated Battery", "Violation of a Protective Order"], // or one string, separated by ; or |
"warrantNumber": "W-2026-04471",
"caseNumber": "2026-04471", // optional; the agency's own numbering is used when omitted
"caution": true, // "use caution" banner
"narrative": "Warrant issued 10/13/2026 by Judge Smith. Subject known to frequent …",
"photoUrl": "https://your-system.example/photos/4471.jpg", // optional; https only; fetched once and stored securely
"contact": { "name": "Records Division", "unit": "Warrants", "phones": "555-555-0100" },
"notify": true // default true: push to officers. false posts quietly to the feed only.
}
→ 201 {"ok":true,"action":"created","bulletinId":"…","link":"https://activebolo.com/SBSO/b/…"}
→ 200 {"ok":true,"action":"updated"|"reopened", …} // when the externalId already exists
Posting the same externalId again updates the bulletin (fields are replaced, history keeps the change). Posting one that was recalled reissues it.
The same call makes other bulletins: set type to missing, runaway, poi (person of interest), voi (vehicle of interest), stolen, safety or notice. For a missing person send lastSeen (when and where), location, endangered and the person's description; a date of birth under the agency's juvenile age marks it Missing Juvenile automatically.
POST /api/v1/bulletins
{ "externalId": "MP-2026-0142", "type": "missing", "endangered": true,
"person": { "firstName": "Emily", "lastName": "Doe", "dob": "2017-03-14", "race": "White", "sex": "Female", "height": "4'2\"", "weight": "65", "hair": "Blond", "eyes": "Blue" },
"lastSeen": "4:10 PM today, Riverside Park", "narrative": "Left the park on foot after a disagreement with a sibling.",
"photoUrl": "https://your-system.example/photos/142.jpg", "contact": { "name": "Dep. J. Smith", "unit": "Patrol", "phones": "555-555-0190" } }
→ 201 {"ok":true,"action":"created", …} // recall with action:cancel and reason "Located" when found
DELETE /api/v1/bulletins/W-2026-04471?reason=Warrant%20recalled
or
POST /api/v1/bulletins {"externalId":"W-2026-04471","action":"cancel","reason":"Served 10/14/2026"}
→ 200 {"ok":true,"action":"closed","bulletinId":"…","link":"…"} // officers receive the cancellation
→ 200 {"ok":true,"action":"noop", …} // already closed, or never sent
GET /api/v1/bulletins/W-2026-04471
→ 200 {"ok":true,"bulletinId":"…","status":"active","headline":"John Q. Public","caseNumber":"2026-04471","createdAt":"…","closedAt":null,"closeReason":null}
POST /api/v1/bulletins Content-Type: application/xml <warrant> <externalId>W-2026-04471</externalId> <person><firstName>John</firstName><lastName>Public</lastName><dob>1988-04-12</dob></person> <charges><charge>Aggravated Battery</charge><charge>Violation of a Protective Order</charge></charges> <warrantNumber>W-2026-04471</warrantNumber> <caution>true</caution> </warrant>
The root element name does not matter; field names match the JSON ones.
| Code | Meaning |
|---|---|
| 400 | Missing externalId or a body that is not valid JSON/XML. The error text says which. |
| 401 | Missing, malformed or unknown key. |
| 403 | Key revoked, or the agency is paused. |
| 404 | Unknown endpoint, or no bulletin with that externalId (GET). |
| 500 | Our fault. Retry with the same body; the call is idempotent. |
externalId: retries never create duplicates.https://activebolo.com. TLS 1.2 or later.Questions: hello@techthings.net