Skip to content

API Overview

GemInHay exposes three core REST endpoints, all under the v1 API root.

EndpointCapabilityUse it for
POST /v1/profile/infer-preferencesPreference InferenceBuild a "type" model from a user's photos & bio
POST /v1/match/evaluateMatch EvaluationScore compatibility between two users
POST /v1/conversation/openersOpener GenerationGenerate ice-breaker messages grounded in photos

All endpoints share the same conventions documented below.

Base URL

https://api.geminhay.com

Request headers

HeaderRequiredNotes
AuthorizationyesBearer sk_<env>_<secret> — see Authentication
Content-Typeyesapplication/json
X-Partner-End-User-IdoptionalSHA-256 of your end-user's ID. Powers per-user analytics in the portal without us ever seeing the raw value.
X-Idempotency-KeyoptionalUUID; lets the same request be retried safely

Response shape

Every successful response is a JSON object with a stable schema per endpoint (see the per-endpoint pages). Every error response is:

json
{
  "error": "<machine_readable_code>",
  "message": "<human readable explanation>",
  "request_id": "req_01H…"
}

Status codes

StatusMeaning
200Success
400Validation error (missing/invalid input)
401Missing or invalid API key
403Forbidden — usually a key without access to capability
429Quota exceeded (Free tier) or rate limited
500Internal error — safe to retry
503Upstream model temporarily unavailable

Quota headers

Every response includes:

X-GemInHay-Plan: growth
X-GemInHay-Capability: match_evaluation
X-GemInHay-Quota-Used: 12,847
X-GemInHay-Quota-Included: 250,000

Use these to drive your own usage dashboards or to throttle pre-emptively on the client side before bumping into your soft cap.

Rate limits

Per-minute rate limits are enforced per organization × capability at the plan level documented on the Pricing page. Bursting above the limit returns 429 with a Retry-After header in seconds.

Released under the proprietary GemInHay license.