GeekyAnts for developers
Developer documentation, APIs and tools
Everything GeekyAnts publishes for developers building on what we make: a read-only public API over this siteโs content, its OpenAPI specification, and the machine-readable documents an agent needs. Plus the command-line tools and npm packages behind our open-source projects.
Browsing rather than integrating? The open-source projects page showcases what we build and maintain โ gluestack-ui, NativeBase, Vue Native, React Native Aria, Flutter Starter and more. This page is the reference: what to call, what to install, and the exact command.
Public content API
A read-only JSON view of everything published on geekyants.com. No authentication, no keys, no sign-up โ every operation is a GET, nothing accepts input, and responses are cached for five minutes at the edge so you can poll freely. Version 1.0.0.
Base URL https://geekyants.com/api/public/v1 ยท specification /openapi.json
| Endpoint | Operation | Returns |
|---|---|---|
| GET /api/public/v1 | getApiIndex | List the API's own operations |
| GET /api/public/v1/pages | listPages | List published marketing pages |
| GET /api/public/v1/services | listServices | List engineering and delivery service pages |
| GET /api/public/v1/industries | listIndustries | List industry solution pages |
| GET /api/public/v1/consulting | listConsultingPages | List consulting practice pages |
| GET /api/public/v1/guides | listGuides | List long-form technical guides |
| GET /api/public/v1/blog | listBlogPosts | List published blog posts |
| GET /api/public/v1/case-studies | listCaseStudies | List published client case studies |
| GET /api/public/v1/blog/{slug} | getBlogPost | Get one blog post, including its full text as Markdown |
| GET /api/public/v1/company | getCompanyProfile | Get the GeekyAnts organisation profile |
Parameters and limits
- Every list operation takes
pageandper_page.per_pageis clamped to 100; asking for more returns 100 rather than an error. qfilters a listing by a case-insensitive substring of the title or description. It is a directory filter, not a ranked search โ no stemming, no relevance order./api/public/v1/pagesacceptscategory, one of Consulting, Services, Industries, Guides, Company.- A
502means our content system could not be reached. It is never returned as an empty result set, so an outage cannot be mistaken for โnothing publishedโ. Retry.
What it does not serve
Only pages that are live and already indexable on this website โ the same set listed in the XML sitemap. There is no staff or author directory, no draft or scheduled content, no contact submissions, no internal identifiers, and no part of our content management system. If you need something that is not here, ask us.
Quickstart
Three requests that between them show the whole API. No key, no headers, nothing to set up.
List our engineering service pages
curl -s 'https://geekyants.com/api/public/v1/services?per_page=5'
Find blog posts about a topic
curl -s 'https://geekyants.com/api/public/v1/blog?q=react%20native&per_page=5'
Read one post in full, as Markdown
curl -s 'https://geekyants.com/api/public/v1/blog/{slug}' | jq -r '.data.markdown'Building an agent or a tool integration? Point it at /openapi.json โ every operation carries a unique operation id, typed parameters and a response schema, so it converts straight into function-calling definitions.
Any page on this site will also answer with Markdown instead of HTML if you ask for it: send Accept: text/markdown and you get the pageโs text with no markup to strip.
Errors, versioning and limits
What this API promises, and how you will be told if any of it changes. Worth reading once before you build against it.
Errors
Every failure returns the same shape, so you can branch on error.code without parsing prose.
{
"error": {
"code": "not_found",
"message": "No such blog post.",
"hint": "Check the path against the operations listed at /api/public/v1.",
"docs": "https://geekyants.com/developers"
}
}bad_request(400) โ a parameter is wrong and you can fix it.not_found(404) โ no such resource, or not one this API serves.upstream_unavailable(502) โ an outage. Never read this as an empty result: it means we could not reach our content system, not that nothing is published. Retry; aRetry-Afterheader accompanies it.
Versioning
The major version is in the path and repeated on every response โ successes and failures alike โ as API-Version: v1.
Within a major version fields are only ever added. An existing field will not change type, change meaning or disappear, so you can safely ignore fields you do not recognise. A breaking change means a new major version at a new path; the old one keeps working.
Deprecation
If a version is ever withdrawn you will be told first, on the responses themselves. Affected responses will carry Deprecation (RFC 9745) with the date the deprecation was declared, and Sunset (RFC 8594) with the date the version stops answering. Those two dates will be at least twelve months apart.
Neither header is sent today, because nothing is deprecated. Watch for them on any response rather than polling this page.
Rate limits
There is no enforced per-caller quota, and no sign-up. Responses are cached for five minutes at the edge, which is what keeps load off our content system, so polling is cheap and welcome.
Every response carries RateLimit-Policy: "public";q=600;w=60 โ an advisory fair-use ceiling of 600 requests a minute that we commit to honouring. Deliberately no RateLimit field reporting remaining quota is sent: nothing is counting, and a number nobody measures would make you throttle against a fiction. If you need more than the ceiling, ask us rather than working around it.
Machine-readable documents
Fixed paths, stable formats, generated from the live site rather than maintained by hand โ so none of them can fall behind what is published.
- OpenAPI 3.1 specification /openapi.json
The machine-readable description of the public content API. Load it into a client generator, an API console, or an agent's tool definitions.
- llms.txt /llms.txt
A short guide to the site for a language model: who GeekyAnts are, and the few dozen URLs that matter most.
- llms-full.txt /llms-full.txt
Every indexable page on the site, titled and described. Generated from the live site, so it cannot fall behind.
- XML sitemap /sitemap.xml
Every URL with its last-modified date and locale alternates, for a crawler that will read them all.
- RSS feed /feed.xml
The newest 50 News & Press articles, as RSS 2.0.
- API catalogue /.well-known/api-catalog
An RFC 9727 linkset pointing at the specification above. The standard place a client looks first.
CLI tools and npm packages
The command-line tools we publish. Versions are the latest on the npm registry at the time of writing; install with @latest to get the current one.
create-gluestack v5.0.3
Scaffolds a new project wired up with gluestack-ui. The quickest way from nothing to a running app.
npx create-gluestack@latest
gluestack-ui v5.0.3
Adds gluestack-ui components to an existing project, one at a time, as source you own.
npx gluestack-ui add button
native-base v3.4.28
The NativeBase component library for React Native โ thousands of pre-built screens and components.
npm install native-base
Open source and contributing
Our libraries are developed in the open, on GitHub. Issues, discussions and pull requests are welcome on any of them.
- github.com/GeekyAnts โ every repository we publish, including the contribution guide and issue templates on each.
- gluestack-ui and NativeBase โ the two projects behind the CLI tools above.
- Our open-source portfolio โ the full set of projects, each with its own site and documentation.
Something missing, or an endpoint you need? Get in touch โ this page and the API behind it are maintained alongside the site, and we would rather add what you need than have you scrape it.