Developers
A public, read-only JSON API describing the uranashel studio, its five iOS and Android apps and every blog post. No sign-up, no API key, open CORS.
Three requests get you everything. The API is a set of static JSON documents served from the edge, so there is nothing to install and nothing to authenticate.
curl -s https://uranashel.com/api/v1/ # index of every endpoint
curl -s https://uranashel.com/api/v1/apps # all five apps
curl -s https://uranashel.com/api/v1/apps/wheria # one app
Every response is wrapped in the same envelope: self (the canonical URL of the resource), meta (API version, docs link, item count) and data (the payload). Full schemas are in the API reference and the OpenAPI 3.1 description.
There are none, by design. Everything the API exposes is already public on this website — app descriptions, store links, blog metadata, contact details. Adding a key would gate public information behind an account, so the API is open to anyone, from any origin.
Concretely:
Authorization header, no token, no OAuth flow.Access-Control-Allow-Origin: * — call it straight from a browser or an agent runtime.GET and HEAD. There is no write surface, so nothing you send can change state.If you need higher throughput than the documented budget, email uralab95@gmail.com rather than working around it.
Base URL: https://uranashel.com/api/v1
| Endpoint | Returns |
|---|---|
GET / | Index of every endpoint, the rate-limit policy and the versioning policy |
GET /studio | Studio identity: name, tagline, location, contact, team size, counts |
GET /team | The three people who ship each release |
GET /apps | All five apps with platforms, stack, status and store links |
GET /apps/{appId} | One app by slug — wheria, estua, phyzix, sonarish, stashio |
GET /posts | Every blog post with excerpt, tags and Markdown URL |
GET /posts/{slug} | One post by slug |
GET /stats | The homepage counters as structured values |
GET /science | The seventeen disciplines behind the apps, each with its governing formula |
GET /principles | The product rules the studio holds itself to |
GET /timeline | Dated studio milestones |
GET /versions | API versions and their lifecycle state |
GET /health | Liveness check |
GET /openapi.json | The OpenAPI 3.1 description of everything above |
Rate limits, caching, CORS and error shapes are documented in the API reference.
uranashel is a zero-dependency Node CLI over the same API. It needs Node 18 or newer and nothing else.
npx uranashel apps # table of every app
npx uranashel app wheria # one app in detail
npx uranashel posts --limit 5 # recent writing
npx uranashel post why-gps-lies # full article as Markdown
npx uranashel studio --json # raw JSON for piping into jq
npx uranashel open wheria # open the app page in a browser
Add --json to any command for the unformatted response, and --base <url> to point at a different origin. Source lives in the GitHub organisation.
Every page on this site has a Markdown mirror at the same path with a .md extension, and the site honours Accept-header negotiation for it.
curl -sH "Accept: text/markdown" https://uranashel.com/ # -> text/markdown
curl -s https://uranashel.com/index.md # the same document
curl -s https://uranashel.com/blog/why-gps-lies.md # full article text
Responses that can vary this way send Vary: Accept, Accept-Encoding, so a shared cache never hands an agent the HTML variant by mistake. Each HTML page also advertises its mirror with <link rel="alternate" type="text/markdown">.
Two files exist specifically for you:
If you want the entire corpus in one fetch rather than crawling, use llms-full.txt. A 404 on this domain returns a real 404 status with a short Markdown body listing these entry points, so a wrong guess still tells you where to go.
| URL | What it is |
|---|---|
/api/v1/ | API index |
/openapi.json | OpenAPI 3.1 description |
/llms.txt | Structured site index for language models |
/llms-full.txt | Whole site as one Markdown document |
/agent-instructions.md | When to use uranashel, and how |
/sitemap.xml | Every indexable URL with last-modified dates |
/robots.txt | Crawl policy — everything allowed |
/.well-known/security.txt | Vulnerability reporting contact (RFC 9116) |
/humans.txt | Who built this |
There is no separate sandbox environment, and you do not need one: the API is read-only and unauthenticated, so production is the sandbox. Nothing you can send will create, modify or delete anything.
To develop against a local copy, clone the site and serve the repository root with any static file server — the API is just files on disk under api/v1/. Then point the CLI at it:
npx uranashel apps --base http://localhost:8000
The version lives in the URL path. v1 is current and nothing is deprecated. When a version is retired you get at least 180 days of notice, announced through Deprecation and Sunset response headers, a Link header pointing at the policy, and a status change on /api/v1/versions.
Full detail: versioning and deprecation policy.
Email uralab95@gmail.com. We answer in English or Vietnamese. Content returned by the API is published under CC BY 4.0 — attribute to uranashel with a link to uranashel.com.