REST API v1

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

GET /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
}
GET /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
}
GET /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": []
  }
}
GET /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
GET /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

400
Bad Request — Invalid parameters
401
Unauthorized — Missing or invalid API key
404
Not Found — Resource doesn't exist
429
Too Many Requests — Rate limit exceeded
500
Server Error — Something went wrong
// 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_idresources.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.

Ready to integrate?

Get your API key and start building against the BVI community knowledge graph.

Request API Key

Response within 1 business day. Include your company name and intended use case.