Search the enterprise signals feed
Enterprise catalog-wide signals feed -- the same underlying data and query shape as GET /news, but accessible via session, OAuth, or API-key auth (not API-key-only), and gated by the `signals` module entitlement instead of `news_signals`. Org must have the Signals Feed module enabled; otherwise responds 403 entitlement_required. **Free (0 credits).**
Enterprise catalog-wide signals feed -- the same underlying data and query shape as GET /news, but accessible via session, OAuth, or API-key auth (not API-key-only), and gated by the signals module entitlement instead of news_signals. Org must have the Signals Feed module enabled; otherwise responds 403 entitlement_required. Free (0 credits).
API key (sk_live_... prefix). Generate keys in the UI under Settings > API Keys, then send it as Authorization: Bearer sk_live_...
In: header
Query Parameters
Comma-separated signal types to filter by
Comma-separated intents: low, medium, high
Comma-separated district UUIDs (watchlist)
Comma-separated two-letter state codes
ISO timestamp ingest cursor for nightly sync
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$date-time^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$date-time^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$date-time501 <= value <= 20000 <= value <= 9007199254740991Response Body
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://loading/api/v1/signals"{
"data": [
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"url": "string",
"title": "string",
"domain": "string",
"author": "string",
"description": "string",
"published_at": "string",
"signals": [
{
"signal_type": "chronic_absenteeism",
"buying_intent": "none",
"buying_intent_reason": "string",
"summary": "string",
"signal_date": "string",
"signal_date_confidence": 0,
"extraction_confidence": 0,
"evidence": null,
"payload": null,
"entity_type": "string",
"entity_resolution_status": "string",
"entity_match_confidence": 0,
"entity_match_reason": "string",
"district": {
"id": "string",
"name": "string",
"state": "string",
"nces_id": "string"
},
"school": {
"id": "string",
"name": "string",
"state": "string"
}
}
]
}
],
"pagination": {
"total": -9007199254740991,
"limit": -9007199254740991,
"offset": -9007199254740991,
"has_more": true
}
}{
"error": "string",
"message": "string",
"statusCode": -9007199254740991
}{
"error": "string",
"message": "string",
"statusCode": -9007199254740991
}{
"error": "entitlement_required",
"module": "string",
"message": "string",
"contact": "string"
}{
"error": "string",
"message": "string",
"statusCode": -9007199254740991
}Get school vendor stack GET
Get technology/vendor stack for a school. Requires unlock.
Unlock entities (unified) POST
Unified unlock endpoint for districts, schools, and contacts. Routes through the unlock orchestrator, which decides between three paths: - **Fast path** (`outcome: "unlocked"`, HTTP 200): the entity already has extracted intelligence on file. Credits are deducted immediately and the intelligence is revealed for this org. - **Slow path** (`outcome: "unlock_pending"`, HTTP 202): the entity has no extracted intelligence yet. Credits are held against your balance, the extraction pipeline is triggered (~3-5 minutes), and the hold is committed to a real deduction on success or refunded on failure. Poll `GET /unlock-status/{entityType}/{entityId}` until the pipeline completes. - **Idempotent** (`outcome: "idempotent"`, HTTP 200): the org has already unlocked this entity. Returns immediately with 0 credits charged. **Contact unlocks require the parent district or school to be unlocked first.** If the parent is locked, the response is 403 PARENT_ENTITY_LOCKED. Optional `re_extract: true` (districts/schools only) re-triggers extraction on an already-unlocked entity. Charges credits again. Not valid for contacts. **Credit costs:** District (6School (6), Contact (2).