The community data layer for compliance tools
Human-verified BVI (Blind and Low Vision) community knowledge graph. Programmatic access for GovTech vendors, AI teams, and data marketplaces evaluating integration.
Base URL: https://eyecosystems.polsia.app/v1
1. Introduction
The Eyecosystems REST API provides structured, human-verified data on the Blind and Low Vision (BVI) community ecosystem. All endpoints return Production-zone records only — entities verified by the Eye Spy Foundation verification network.
Each record includes a verification timestamp, verifier attribution, and provenance chain showing when the data was last confirmed accurate. This makes the API suitable for compliance documentation and audit trails.
What you'll find in the graph
| Entity Type | Description |
|---|---|
resources |
Organizations, nonprofits, government programs — the core nodes |
events |
Community events, meetups, support groups |
people |
Key individuals, advocates, leaders |
programs |
Services, assistance programs, initiatives |
apps |
Assistive technology apps and tools |
podcasts |
BVI community podcasts and media |
groups |
Coalitions, online communities, social groups |
blogs |
Community blogs and newsletters |
2. Authentication
The API uses header-based authentication with API keys. Include your key in the X-API-Key header with every request (except the public endpoint).
GET /v1/resources HTTP/1.1
Host: eyecosystems.polsia.app
X-API-Key: eyeco_2058df210f0a9be5c2df3dd576c88cf9b38885aa26f2d4a9
Accept: application/json
You can also pass the key as a query parameter:
GET /v1/resources?api_key=eyeco_2058df210f0a9be5c2df3dd576c88cf9b38885aa26f2d4a9 HTTP/1.1
Host: eyecosystems.polsia.app
Accept: application/json
Getting an API key
Contact us at contact@eyecosystems.polsia.app to request API access. Include your company name and intended use case. We'll issue a key within 1 business day.
3. Endpoints Reference
/v1/activity/latest
Public
Last 10 Production Records
Returns the 10 most recently verified records across all entity types — ideal for a website ticker or activity feed. No authentication required.
Example Request
GET https://eyecosystems.polsia.app/v1/activity/latest
Example Response
{
"success": true,
"data": [
{
"eyeco_id": "evt_jax_2024_047",
"entity_type": "events",
"name": "Jacksonville Braille Club Monthly Meetup",
"ring": "Inner",
"city_hub": "Jacksonville",
"verified_at": "2026-04-02T14:30:00Z",
"verified_by": " volunteer_verifier_042"
},
// ... 9 more records
],
"count": 10
}
/v1/resources
List Resources
Returns a paginated list of Production-zone resources. Supports filtering by city, category, ring, and full-text search.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
city_hub |
string | Filter by city (e.g., "Jacksonville", "Orlando") |
category |
string | Filter by resource category |
ring |
string | Filter by ring: Inner, Inner-Outer, Outer, Outer-Reach |
q |
string | Full-text search across name and description |
limit |
integer | Results per page (default: 50, max: 200) |
offset |
integer | Pagination offset (default: 0) |
sort |
string | Sort field: name, city_hub, created_at (default: name) |
order |
string | Sort order: asc, desc (default: asc) |
Example Request
GET /v1/resources?city_hub=Jacksonville&ring=Inner&limit=10
X-API-Key: eyeco_xxxxxxxxxxxx
Example Response
{
"success": true,
"data": [
{
"eyeco_id": "res_jax_2024_001",
"name": "Florida School for the Deaf and Blind",
"resource_type": "education",
"ring": "Inner",
"city_hub": "Jacksonville",
"state": "FL",
"category": "K-12 Education",
"website_url": "https://www.fsdb.org",
"verified_at": "2026-03-28T10:15:00Z",
"verified_by": "verifier_007"
}
],
"count": 1,
"total": 45,
"limit": 10,
"offset": 0
}
/v1/resources/:eyeco_id
Get Resource Detail
Returns a single resource with all nested Production entities (events, people, programs, apps, podcasts, groups, blogs) that reference it as a parent.
Path Parameters
| Parameter | Description |
|---|---|
eyeco_id |
The resource's unique identifier (e.g., res_jax_2024_001) |
Example Request
GET /v1/resources/res_jax_2024_001
X-API-Key: eyeco_xxxxxxxxxxxx
Example Response
{
"success": true,
"data": {
"eyeco_id": "res_jax_2024_001",
"name": "Florida School for the Deaf and Blind",
"resource_type": "education",
"ring": "Inner",
"city_hub": "Jacksonville",
"state": "FL",
"category": "K-12 Education",
"website_url": "https://www.fsdb.org",
"verified_at": "2026-03-28T10:15:00Z",
"verified_by": "verifier_007",
"events": [
{ "eyeco_id": "evt_jax_2024_012", "name": "FSDB Open House 2024" }
],
"people": [
{ "eyeco_id": "ppl_jax_2024_003", "name": "Dr. Sarah Mitchell", "role": "Superintendent" }
],
"programs": [
{ "eyeco_id": "prg_jax_2024_008", "name": "Transition Services" }
],
"apps": [],
"podcasts": [],
"groups": [],
"blogs": []
}
}
/v1/:entity
List Any Entity Type
List Production records for any entity type: events, people, programs, apps, podcasts, groups, blogs.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
entity |
path | Entity type: events, people, programs, apps, podcasts, groups, blogs |
city_hub |
string | Filter by city hub |
ring |
string | Filter by ring classification |
q |
string | Full-text search |
limit |
integer | Default 50, max 200 |
offset |
integer | Default 0 |
Example Request
GET /v1/events?city_hub=Jacksonville&limit=5
X-API-Key: eyeco_xxxxxxxxxxxx
/v1/:entity/:id
Get Single Record
Retrieve a single Production record by its eyeco_id.
Example Request
GET /v1/people/ppl_jax_2024_003
X-API-Key: eyeco_xxxxxxxxxxxx
4. Response Format
All responses return JSON with a consistent wrapper structure.
Success Response
{
"success": true,
"data": /* ... response data ... */,
"count": 10, /* items in this response */
"total": 145, /* total matching records */
"limit": 50, /* requested limit */
"offset": 0 /* requested offset */
}
Pagination
Use limit and offset to paginate through results. The response includes count (items in current page) and total (all matching records).
Error Responses
// 401 Unauthorized example
{
"success": false,
"message": "API key required. Add X-API-Key header or ?api_key= query param.",
"docs": "https://eyecosystems.polsia.app/v1"
}
5. Data Schema
The database has 7 primary tables representing the BVI community knowledge graph. All tables include status (filter by Production), verified_at, and verified_by for provenance tracking.
| Table | Key Fields | Description |
|---|---|---|
resources |
eyeco_id, name, resource_type, ring, city_hub, category, website_url, verified_at | Core nodes — orgs, programs, agencies |
people |
eyeco_id, name, role, organization, city_hub, parent_resource_id | Key individuals tied to resources |
events |
eyeco_id, name, event_date, location, city_hub, parent_resource_id | Community events and meetups |
programs |
eyeco_id, name, description, eligibility, city_hub, parent_resource_id | Services and assistance programs |
apps |
eyeco_id, name, platform, website_url, parent_resource_id | Assistive technology applications |
podcasts |
eyeco_id, name, feed_url, platform, parent_resource_id | Community podcasts and shows |
groups |
eyeco_id, name, platform, meeting_info, parent_resource_id | Online and in-person communities |
Relationships
Non-resource tables (people, events, programs, apps, podcasts, groups) link to resources via parent_resource_id → resources.eyeco_id. Use /v1/resources/:id to fetch a resource with all its nested relationships in one call.
Ring Classification
Each resource is classified by its relationship to the BVI community:
- Inner — Direct service providers (schools, rehab centers)
- Inner-Outer — Community organizations (clubs, groups)
- Outer — Advocacy and government entities
- Outer-Reach — Broader accessibility ecosystem
6. Rate Limits & Pricing
API access is bundled with our tiered pricing model. Each tier includes a monthly request allowance.
| Tier | Monthly Requests | What's Included |
|---|---|---|
| Tier 1: Data Packages | — | Pre-built city datasets (CSV/PDF). Not API-based. |
| Tier 2: API Access | 10,000 req/mo | REST API access, real-time queries, all endpoints |
| Tier 3: Verification Provenance | 25,000 req/mo | API + full verification logs, timestamps, verifier attribution, provenance chain per node |
Exceeding your tier's limit returns 429 Too Many Requests. Contact us to request a limit increase or custom enterprise capacity.