Find kids’ enrichment providers using natural-language interests and a geographic region. Kaleto covers sports, dance, arts, music, coding, STEM, camps, tutoring, childcare and outdoor activities.
Base URL: https://api.kaleto.ai
Download the OpenAPI specification
The read-only /v1 discovery API is public. No API key, account, or Authorization header is required. This is a US pilot limited to supported regions and shared search budgets. Admin operations and the separate remote MCP endpoint still require their own configured credentials.
GET /v1/regions (operation listRegions) to choose a supported region from its included cities. Regions may overlap. If the location is unsupported, explain the coverage limitation; do not silently search elsewhere.POST /v1/providers/search (operation searchProviders) with the requested activity or interests in natural language and the explicit region ID.GET /v1/providers/{id} (operation getProvider) for a fresh record when needed. The ID is a UUID returned by search.curl https://api.kaleto.ai/v1/providers/search \
-H "Content-Type: application/json" \
-d '{"query":"help my child learn to float and stay safe in water","region":"providence","limit":5}'
| Input | Meaning |
|---|---|
| query | Required string, 1–1,000 characters after trimming. |
| region | Supported region ID from listRegions. Required for the current catalog size. Geography is not inferred from the query. |
| limit | Integer 1–25; default 10. Limits returned matches, not the providers evaluated. |
Unknown input fields are rejected. JSON request bodies are limited to 8 KiB.
Search returns providers, evaluated_count, region, limitations, model_version and rubric_version. Each provider contains id, name, website, phone_number, address, timezone, description, types and a search-only relevance_score from 0 to 1. Matches are ordered by descending relevance, with ID used to break ties. Only scores at least 2/3 are returned. An empty array is a successful search with no supported matches.
Website, phone, address and timezone can be null; do not invent missing values. Types are sports, coding, summer_camp, daycare, tutoring, arts, music, stem, outdoors or other. Dance is generally arts. Detailed activity evidence is in the description.
Regions use explicit listed city/state boundaries, not distance, travel time or service areas. A listed address can be a contact office rather than a class venue. Records are curated discovery information, not live provider inventory. Current offerings, age eligibility, prices, schedules and available seats are unverified. Broad multi-interest searches can return partial activity matches. Direct parents to providers to confirm details. This API cannot book, pay, message providers or access calendars.
The current single-instance pilot allows two active searches and ten accepted search attempts per 60-second window, shared across callers. Send searches sequentially where possible. At most 10,000 providers and 8 MB of provider JSON may be evaluated per search. No catalog is silently truncated. Jev requests run in batches of 20 with up to six batches active. Allow approximately 130 seconds for the HTTP client timeout; most tested regional requests complete in a few seconds, but this is not an SLA.
| HTTP / error | Action |
|---|---|
| 400 INVALID_REQUEST | Correct the query, region, limit, UUID or JSON body using the specification. |
| 400 REGION_REQUIRED | Supply a supported region; the unscoped catalog exceeds the search budget. |
| 404 NOT_FOUND | The provider ID no longer exists; search again. |
| 413 REQUEST_TOO_LARGE | Reduce the request body below 8 KiB. |
| 429 RATE_LIMITED | Honor Retry-After (seconds). Use bounded retries; never loop indefinitely. |
| 503 SEARCH_UNAVAILABLE | Search failed; do not present this as no matches. Offer to try later. |
| 503 CATALOG_CAPACITY_EXCEEDED | The region exceeds the evaluation budget. Report the limitation; changing limit will not fix it. |
| 500 INTERNAL_ERROR | Unexpected failure; report temporary unavailability. |
Error responses are JSON: {"error":"ERROR_CODE"}. Jev failures do not return partial or substitute rankings. Each search reads current database records; there is no API result cache.