Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
openapi: 3.2.0
info:
title: Gecko public Waitlist API
version: 1.0.0
summary: Gecko case studies as data; join the waitlist.
description: 'The public HTTP operations behind https://geckovision.tech. Gecko''s full product surface for agents is the hosted MCP server (Streamable HTTP; see https://geckovision.tech/.well-known/mcp/server-card.json). These REST operations cover the landing''s own interactive features. Docs: https://docs.geckovision.tech. VERSIONING: paths are versioned (/api/v1/...); the unversioned path is a permanent alias of the latest major version. A breaking change ships as /api/v2 with the v1 path kept for at least 90 days and answering with Deprecation and Sunset headers during that window. RETRIES: every operation here is idempotent by construction, so a retry with the same input never duplicates work. RATE LIMITS: responses carry the RFC RateLimit headers (RateLimit-Limit, -Remaining, -Reset) and a 429 carries Retry-After.'
contact:
name: Gecko
email: contact@geckovision.tech
url: https://geckovision.tech
servers:
- url: https://geckovision.tech
description: The landing site
tags:
- name: Waitlist
paths:
/api/waitlist:
servers:
- url: https://app.geckovision.tech
description: The Gecko app (this operation is served there)
post:
operationId: joinWaitlist
summary: Join the Gecko waitlist
description: Add an email to the provider waitlist. Duplicates are absorbed silently (the response never reveals whether an email was already present). One email is sent when a slot opens; nothing else.
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- email
properties:
email:
type: string
format: email
maxLength: 254
description: The address to add to the waitlist.
source:
type: string
maxLength: 64
description: Where the signup came from, e.g. "landing:closing".
responses:
'200':
description: The email is on the list (or already was).
content:
application/json:
schema:
type: object
required:
- ok
properties:
ok:
type: boolean
const: true
'400':
description: The body was not JSON or the email is invalid.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
tags:
- Waitlist
components:
schemas:
Error:
type: object
required:
- error
description: Every error this API returns is structured JSON, never an HTML page.
properties:
error:
type: object
required:
- code
- message
properties:
code:
type: string
description: Stable machine-readable code, e.g. "invalid-cursor", "rate-limited".
message:
type: string
description: Human-and-agent-readable explanation.
hint:
type: string
description: What to change before retrying.
securitySchemes:
geckoKey:
type: http
scheme: bearer
description: 'The Gecko key: the bearer credential for GATED surfaces on the hosted MCP server (mcp.geckovision.tech) - not required by any operation in this spec, which is anonymous. Permissions are SCOPED PER SURFACE and deny-by-default: a key opens only the surfaces its account was granted (one named grant per surface, e.g. a paid data surface), never the host. Mint one self-serve: POST /auth/login/start with your email, then /auth/login/verify with the emailed code (documented at /auth.md). There is no OAuth authorization server; scope names are the surface names listed by the host''s list_surfaces tool.'