← Back to Platform

API Reference

Programmatic access to schools, funding data, AI tools, and vendor analytics. Base URL: https://api.thinkkits.com

Authentication

All API requests require an API key passed via the X-API-Key header. Get your key from Settings → API Keys in the ThinkKits platform.

curl curl "https://api.thinkkits.com/schools/search?q=Springfield" \ -H "X-API-Key: tk_live_your_key_here"
Security

Never expose API keys in client-side code. Use environment variables and server-side proxies. Keys prefixed with tk_live_ are production keys; tk_test_ keys hit the sandbox.

Base URL

All endpoints are relative to:

https://api.thinkkits.com

The API returns JSON responses. All timestamps are ISO 8601 in UTC.

API Tiers & Rate Limits

Explorer

Free
  • 3 requests/day
  • School search
  • Basic profiles

Starter

$99/mo
  • 25 requests/day
  • 1 tool stack
  • Funding data

Professional

$249/mo
  • 100 requests/day
  • All stacks + AI
  • API access

Business

$499/mo
  • Unlimited
  • Bulk export
  • Webhooks

See Rate Limits documentation for headers, 429 handling, and code examples.

Error Handling

The API uses standard HTTP status codes. Error responses include a JSON body with a detail field.

CodeMeaningCommon Cause
400Bad RequestMissing or invalid parameters
401UnauthorizedMissing or invalid API key
403ForbiddenEndpoint requires a higher tier
404Not FoundSchool or resource doesn't exist
429Too Many RequestsRate limit exceeded
500Server ErrorInternal error — contact support
Error Response { "detail": "School not found" }

School Profile

GET /schools/{nces_id} Explorer+ Full profile with intelligence scores

Path Parameters

NameTypeDescription
nces_id requiredstring12-digit NCES school ID

Response Fields

nces_id, name, city, state, school_level, enrollment, frl_pct, math_proficiency, bright_spot_tier, bright_spot_score, lead_tier, funding_program_count, funding_score

curl curl "https://api.thinkkits.com/schools/170993000880" \ -H "X-API-Key: tk_live_abc123"

Peer Comparison

GET /schools/{nces_id}/peers Starter+ Find demographically similar schools

Parameters

NameTypeDescription
nces_id requiredstringNCES school ID
frl_bandintegerFRL percentage band for matching (default: 10, range: 1-30)
limitintegerNumber of peers (default: 10)

Returns peers ranked by math proficiency, with the target school's position highlighted.

Health Score

GET /schools/{nces_id}/health Starter+ Composite 0-100 health score

Returns a composite health score (0-100) across 5 dimensions: academic performance, funding level, resource access, equity indicators, and data completeness.

curl curl "https://api.thinkkits.com/schools/170993000880/health" \ -H "X-API-Key: tk_live_abc123"

Needs Assessment

GET /schools/{nces_id}/needs Professional+ Automated needs assessment

AI-generated needs assessment based on school data: funding gaps, performance indicators, staffing, and resource deficiencies.

Equity Profile

GET /schools/{nces_id}/equity Professional+ Equity indicators and gap analysis

Demographic composition, achievement gaps by subgroup, and funding equity indicators.

Bright Spots

GET /bright-spots Starter+ High-performing schools in underfunded districts
NameTypeDescription
statestring2-letter state abbreviation filter
min_frlintegerMinimum FRL percentage (default: 50)
min_proficiencyintegerMinimum math proficiency (default: 40)
limitintegerResults to return (default: 25)

Bulk Import

POST /schools/bulk-import Business Upload NCES IDs, get enriched profiles

Upload a CSV of NCES IDs and receive enriched school profiles with demographics, funding, health scores, and opportunity data.

Request Body

NameTypeDescription
nces_ids requiredarrayList of NCES school IDs (max 1,000)
includearrayFields to include: funding, health, opportunity, contacts
curl curl -X POST "https://api.thinkkits.com/schools/bulk-import" \ -H "X-API-Key: tk_live_abc123" \ -H "Content-Type: application/json" \ -d '{"nces_ids": ["170993000880", "060474000432"], "include": ["funding", "health"]}'

School Funding

GET /schools/{nces_id}/funding Starter+ Federal funding allocations

Returns all federal funding programs available for the school: Title I, IDEA, Title IV-A, E-Rate, Title III, and historical allocation data.

Purchase Qualifier

POST /purchase/qualify Explorer+ Check if a purchase qualifies for federal funding

Request Body

NameTypeDescription
item_description requiredstringDescription of the item or purchase
nces_idstringTarget school (for school-specific eligibility)
JavaScript const res = await fetch('https://api.thinkkits.com/purchase/qualify', { method: 'POST', headers: { 'X-API-Key': 'tk_live_abc123', 'Content-Type': 'application/json' }, body: JSON.stringify({ item_description: 'Math manipulative kits for K-2 classrooms', nces_id: '170993000880' }) });

Grant Programs

GET /grants/programs Starter+ List eligible grant programs

Returns all federal, state, and foundation grant programs a school is eligible for, with deadlines, amounts, and application links.

AI Grant Writer

POST /grants/write Professional+ AI-generated grant narrative

Generates a grant narrative using school-specific data: demographics, funding history, needs assessment, and compliance language for the target program.

Request Body

NameTypeDescription
nces_id requiredstringTarget school NCES ID
program requiredstringGrant program (e.g., TITLE_I_A, TITLE_IV_A, IDEA_PART_B)
item_descriptionstringWhat you're purchasing

Justification Report

POST /reports/justification Professional+ Generate funding justification report

Creates a procurement-ready justification document with school data, funding alignment, per-pupil cost calculation, and regulatory citations.

Compliance Check

POST /compliance/check Starter+ Check purchase against 8 federal programs

Validates whether a proposed purchase complies with federal program rules. Returns verdict (ALLOWED, RESTRICTED, PROHIBITED) for each applicable program with regulatory citations.

Request Body

NameTypeDescription
item_description requiredstringDescription of the purchase
programstringSpecific program to check (optional — checks all if omitted)

E-Rate Eligibility

GET /schools/{nces_id}/erate-eligibility Starter+ E-Rate eligibility and discount rate

Returns E-Rate eligibility status, discount percentage, and 20-year funding history.

E-Rate Discount Calculator

GET /erate/discount-calculator Starter+ Calculate discount by school or district

Input FRL percentage and school type to calculate E-Rate discount for Category 1 and Category 2 services.

C2 Budget

GET /erate/c2-budget Starter+ Category 2 budget and spending

Returns the 5-year Category 2 budget cap, current spending, remaining budget, and disbursement history.

E-Rate Filing Checklist

GET /erate/filing-checklist Starter+ Step-by-step filing checklist

Returns the complete E-Rate filing checklist with deadlines, required documents, and competitive bidding rules.

AI Data Query

POST /query Professional+ Natural language data queries

Ask a question in plain English and get an answer from the Knowledge Graph. The AI translates your question to a graph query and returns structured results.

Request Body

NameTypeDescription
question requiredstringNatural language question
show_cypherbooleanReturn the generated Cypher query (default: false)
Python import requests resp = requests.post("https://api.thinkkits.com/query", json={ "question": "How many Title I schools in Texas have over 500 students?", "show_cypher": True }, headers={"X-API-Key": "tk_live_abc123"}) data = resp.json() print(data["answer"]) # "There are 2,847 Title I schools in Texas..."
GET /query/ask Professional+ GET version of AI query
NameTypeDescription
q requiredstringNatural language question (3-1000 chars)
show_cypherbooleanShow generated Cypher (default: false)

Bulk Export

GET /export/schools Professional+ Filtered school data as CSV or JSON

Export filtered school data as CSV or JSON. Apply filters by state, school level, enrollment range, FRL percentage, and more.

District Spending

GET /districts/{leaid}/spending Professional+ District spending breakdown

Returns per-pupil spending, category breakdown, and state/national benchmarks for any district.

GET /spending/compare Professional+ Compare spending between districts

Side-by-side spending comparison between 2-5 districts across all budget categories.

Equity Gaps

GET /equity/gaps Professional+ Search equity gaps across districts

Identify achievement and resource equity gaps across states and districts. Filter by gap type, severity, and demographics.

Market Summary

GET /market/summary Starter+ Market sizing and opportunity analysis

Aggregate market data by state or district: total schools, enrollment, funding, E-Rate spending, and EdTech market size estimates.

E-Rate Vendors

GET /vendors/erate Starter+ E-Rate vendor search and spending

Search E-Rate vendors by name, state, or service type. Returns funding received, school clients, and spending history.

GET /vendors/erate/{vendor_name} Starter+ Detailed vendor profile

Detailed vendor profile including all school/district clients, total funding, services provided, and year-over-year trends.

Lead Finder

GET /icp/search Professional+ Custom ICP search

Find schools matching your ideal customer profile: filter by enrollment, FRL%, state, school level, funding programs, and more. Returns scored matches.

GET /schools/{nces_id}/look-alikes Professional+ Find look-alike schools

Given a seed school (e.g., a current customer), find schools with similar demographics, funding, and behavioral patterns.

Opportunity Scoring

GET /schools/{nces_id}/opportunity Professional+ AI opportunity score (0-100)

AI-generated opportunity score across 4 dimensions: Budget (available funding), Need (resource gaps), Timing (procurement signals), and Access (decision-maker reachability).

GET /opportunities Professional+ Search by opportunity score

Search and filter schools by opportunity score. Sort by total score or individual dimensions.

Board Intelligence

GET /schools/{nces_id}/board-intel Professional+ Board meeting intelligence for a school

AI-extracted intelligence from school board meetings: vendor mentions, curriculum adoptions, budget approvals, leadership changes, and technology decisions.

GET /board-intel/leadership-changes Professional+ Recent superintendent/principal changes

Nationwide feed of recent superintendent and principal changes extracted from board meeting records.

Educator Contacts

GET /schools/{nces_id}/contacts Professional+ Named educator contacts

Returns named decision-makers at a school: principals, curriculum directors, technology coordinators, and business managers. 90-day cache with Apollo.io enrichment.

GET /districts/{lea_id}/contacts Professional+ District-level contacts

Returns district-level decision-makers: superintendent, CFO, CTO, curriculum director, purchasing director.

Webhooks

POST /integrations/webhooks Business Subscribe to platform events

Register a webhook URL to receive real-time notifications for platform events: watchlist changes, new data, alert triggers, and more.

Request Body

NameTypeDescription
url requiredstringHTTPS endpoint to receive webhook payloads
events requiredarrayEvents to subscribe to: watchlist.changed, alert.fired, data.updated
secretstringSigning secret for payload verification
GET /integrations/webhooks Business List active webhook subscriptions

Returns all your active webhook subscriptions with status, event types, and delivery stats.

Zapier / Make Triggers

GET /integrations/triggers Professional+ List available triggers and actions

Returns all available Zapier/Make triggers (new school saved, alert fired, report generated) and actions (search schools, get profile, check compliance).

Rate Limits · API Changelog · Legacy API Docs

© 2026 ThinkKits LLC — Back to Platform

Was this article helpful?

← Back to Help Center