API reference

v1.1.0 · openapi.json

Errors are JSON { error, hint? } with proper status codes. Every response carries x-request-id and X-RateLimit-* headers. This page and /v1/openapi.json are generated from one manifest - they cannot drift.

GET/v1/healthfree

Liveness check.

curl -s https://uplift.page/api/v1/health
GET/v1/categoriesfree

Published categories (games, web apps, AI agents, and more). Draft categories stay hidden until curated.

curl -s https://uplift.page/api/v1/categories
GET/v1/promptsfree

List published public prompts. Filters: ?category=<slug>, ?q=<full-text search>, ?limit=.

curl -s 'https://uplift.page/api/v1/prompts?category=games&q=multiplayer'
GET/v1/prompts/:slugfree

One prompt: mini prompt body, tech stack, tags, version, and source citation.

curl -s https://uplift.page/api/v1/prompts/multiplayer-web-game
GET/v1/prompts/:slug/rawfree

The mini prompt as text/markdown. Pipe it straight into a file or an agent context.

curl -s https://uplift.page/api/v1/prompts/multiplayer-web-game/raw > PROMPT.md
GET/v1/designfree

The uplift design language prompt (clean, minimalist, developer-forward UI).

curl -s https://uplift.page/api/v1/design
POST/v1/recommendfree

Describe what you're building; returns a recommended tech stack, a clean mini prompt, a citation, and alternatives. Vector search with full-text fallback.

prompt - string (required)
category - string (optional category slug)
max_results - number (optional, max 10)
curl -s -X POST https://uplift.page/api/v1/recommend -H 'Content-Type: application/json' -d '{"prompt":"I want to build a multiplayer browser game"}'
POST/v1/convertfree

Run the conversion engine on markdown: strips telemetry/tracking instructions, tracking params, invisible characters, vendor residue; returns the mini prompt plus a transparent removal report and source sha256.

markdown - string (required, max 100KB)
budget - number (optional max output chars, default 2400)
source_url - string (optional)
curl -s -X POST https://uplift.page/api/v1/convert -H 'Content-Type: application/json' -d '{"markdown":"# My prompt..."}'
POST/v1/feedbackfree

Models and systems report a prompt outcome: positive or negative with a message. Feeds quality analytics and per-prompt scores.

prompt_slug - string
outcome - positive | negative (required)
message - string
model - string
source_agent - string
metadata - object
curl -s -X POST https://uplift.page/api/v1/feedback -H 'Content-Type: application/json' -d '{"prompt_slug":"multiplayer-web-game","outcome":"positive","message":"worked first try","model":"claude-fable-5"}'
POST/v1/change-requestsfree

Propose a prompt change for human review in the dashboard (the curator skill's major-change path).

prompt_slug - string
title - string (required)
rationale - string (required)
proposed_body_md - string
severity - minor | major
requested_by - string
agent - string
curl -s -X POST https://uplift.page/api/v1/change-requests -H 'Content-Type: application/json' -d '{"prompt_slug":"cli-tool","title":"Add bun","rationale":"bun compile is now fastest"}'
PATCH/v1/prompts/:slugfreeauth: bearer (Supabase user JWT: platform admin or org owner/admin)

Minor in-place edit (body, title, summary, stack, tags, status). Version bumps and the old row is snapshotted automatically.

body_md - string
title - string
summary - string
stack - array
tags - array
status - draft | published | archived
curl -s -X PATCH https://uplift.page/api/v1/prompts/cli-tool -H "Authorization: Bearer $UPLIFT_TOKEN" -H 'Content-Type: application/json' -d '{"summary":"..."}'
POST/v1/telemetryfree (fair use); paid for high volumeauth: x-uplift-key (org ingest key)

Multi-tenant telemetry ingest: 1-100 events per call (skill runs, prompt runs, feedback). Forwards to the org's own webhook if configured.

events - array of events (or a single event object)
kind - skill_usage | skill_feedback | prompt_run | custom
name - skill/prompt name
model - model used
more - tokens, duration_ms, success, repo, payload
curl -s -X POST https://uplift.page/api/v1/telemetry -H "x-uplift-key: $UPLIFT_INGEST_KEY" -H 'Content-Type: application/json' -d '{"events":[{"kind":"skill_usage","name":"code-style","model":"claude-fable-5","duration_ms":1200,"success":true}]}'
GET/v1/usagefreeauth: x-uplift-key (org ingest key)

Self-serve metering transparency: this billing period's event and request counts for your org, plus plan and limits.

curl -s https://uplift.page/api/v1/usage -H "x-uplift-key: $UPLIFT_INGEST_KEY"
POST/v1/importpaid (Team or Scale)auth: x-uplift-key (org ingest key)

Prompt-link import: fetch a markdown URL, run the conversion engine to strip the source's tracking, optionally append your org's outcome instrumentation, and store it in your library with full provenance (URL + sha256).

url - string (required, http(s), max 200KB)
instrument - boolean (default true)
visibility - private (default) | public (review required)
category - string (default prompt-management)
slug - string (optional)
curl -s -X POST https://uplift.page/api/v1/import -H "x-uplift-key: $UPLIFT_INGEST_KEY" -H 'Content-Type: application/json' -d '{"url":"https://raw.githubusercontent.com/acme/prompts/main/review.md"}'
POST/v1/admin/reembedfreeauth: none (idempotent, rate-limited)

Backfill embeddings for published prompts missing them (3 per call; call until remaining is 0).

curl -s -X POST https://uplift.page/api/v1/admin/reembed
GET/v1/openapi.jsonfree

This API description as OpenAPI 3.1, generated from the same manifest that renders the docs.

curl -s https://uplift.page/api/v1/openapi.json

MCP tools

recommend_stackTech stack + mini prompt + citation for what you describe.
search_promptsFull-text search over the public library.
get_promptFetch one prompt by slug.
list_categoriesList published categories.
convert_promptClean markdown into a tracking-free mini prompt with a removal report.
send_feedbackReport a positive/negative outcome for a prompt.