GoodCase.aiAI News · Radar↗AI Map↗Course · LearnPrompt↗
ProjectsGoodCase.aiAI News Radar ↗AI Map ↗LearnPrompt ↗
GoodCase.aiGoodCase.aiAI Prompt Case Collection
GoodCase.ai
RankingsCasesSkillsFavoritesSubmitDailyJoin us
中文EN
Agent Access →

Projects

AI News · Radar ↗AI Map ↗Course · LearnPrompt ↗
GoodCase.aiGoodCase.aiAI Prompt Case Collection
RankingsCasesSkillsFavoritesSubmitDailyJoin us
中文EN
Agent Access →

Loading…

GoodCase.ai · AI Prompt Case Collection
DSH PluginsChangelogFeedback
ModelsCreatorsSeedance 2.5Seedance 2.0GPT Image 2GeminiNano Banana ProClaudeClaude Opus 5.5Grok ImagineVeoKlingQwen ImageGPT Image 1.5MiniMax H3

Agent API · Machine-readable access

Look up a real prompt before your agent generates.

This API does one thing: hand your agent cases and full prompts whose sources have been checked by a human. Start without a key; ask for one when your volume grows.

No key
60/hour
Per IP · soft limit
With key
2,000/day
Default · adjustable

Backward compatible

Existing callers keep working

This API has always been anonymous and open, and it still is. Requests without an auth header return the same data as before, now under a soft per-IP rate limit. Anyone already running the goodcase Skill needs to change nothing. Only credentials starting with gc_ are treated as an API key, so an unrelated Authorization header will never get you rejected.

§ 01 · Endpoints

Three endpoints, all GET

The GoodCase Agent API: anonymous access works out of the box, API keys raise the daily quota, and every case ships a verifiable provenance claim.

GET /api/public/cases · Case list

curl -s "https://goodcase.ai/api/public/cases?category=video&take=3&locale=en"

Query parameters

category
image / video / web / copy / hardware; anything else returns 400.
q
Keyword across title, summary, creator, recommended models, source, tags, and prompt text. Case-insensitive. Expands Chinese/English synonyms (e.g. 千问 → Qwen). With q, results are relevance-ranked rather than filtered in default order: items[0] is the best match, not the hottest case. q is truncated to 200 chars / 12 whitespace-separated terms (no error).
take
1–50 items, defaults to 20, out-of-range values are clamped.
locale
Content language: zh-CN or en. Defaults to zh-CN.
form
Secondary form filter: text-to-video / ref-to-video / code-generated-video / web-ui / motion-3d / game-3d / agent-tool. Anything else returns 400.
exclude
Exclude one or more forms, comma-separated (same values as form). Unknown values are silently dropped.
sample
Deterministic random sample size, 1–50, out-of-range values are clamped. Overrides take when present.
seed
Sampling seed, used with sample. Same seed + same params reproduces the same batch next call; omit it for a random draw, and the seed actually used is echoed back in the response.

GET /api/public/cases/{slug} · Full case

curl -s "https://goodcase.ai/api/public/cases/real-case-01-umesh-ai?locale=en"

On top of the list fields, this returns promptFull, editorNote, labNote, spreadScore, and sourceHeatNote.

With an API key

curl -s -D - \
  -H "Authorization: Bearer gc_xxxxxxxxxxxx" \
  "https://goodcase.ai/api/public/cases?take=3"

GET /api/public/cases/{slug}/retests · Retest evidence

curl -s "https://goodcase.ai/api/public/cases/real-case-01-umesh-ai/retests?locale=en"

Returns this case's on-site per-model retest records — stabilityScore, evidenceLevel, per-model latest/history, and the full record list. Use it to compare a model you just tested against the site's own baseline.

Model eval: test any new model with the same set

The day a new model ships, an agent with the goodcase Skill installed can sample cases by category and run them, then compare against the site's own retest baseline.

  1. 01Sample: GET /api/public/cases?category=web&form=web-ui&sample=5&seed=20260906-yourmodel. Defaults to exclude=motion-3d — background video / 3D tests the asset, not the model. Same seed, same result, so recording the seed makes it reproducible.
  2. 02Pull the baseline: GET /api/public/cases/{slug} for promptFull, GET /api/public/cases/{slug}/retests for the site's own per-model retest records.
  3. 03Run and compare: run promptFull on the target model, record reproduced / degraded / failed per case, and output a comparison table plus a goodcase-model-eval-v1 JSON list — the seed + slug list is what lets a later on-site retest line up against this same batch.
curl -s "https://goodcase.ai/api/public/cases?category=web&form=web-ui&sample=5&seed=20260906-yourmodel"

Try saying

benchmark this model with goodcase
test Kimi K3 with goodcase
sample 10 video cases and run an eval

A self-run result is not an official goodcase retest; finalScore (judge score) and stabilityScore (human review tier) are not on the same scale.

Install the Skill first

npx skills add LearnPrompt/goodcase-lite --skill goodcase --global --copy --yes --full-depth

Response sample (truncated)

{
  "count": 1,
  "locale": "zh-CN",
  "items": [
    {
      "slug": "tattoo-generator",
      "title": "Tattoo Generator",
      "category": "video",
      "source": "Comfy Workflows",
      "sourceUrl": "https://comfy.org/workflows/90d086fef9e3-90d086f…",
      "creator": "Rob",
      "summary": "这条工作流没有花哨的效果,胜在把纹身设计的沟通痛点解决得很实际…",
      "promptPreview": "Turn your tattoo design ideas into reality with …",
      "mediaType": "video",
      "mediaUrl": "https://…public.blob.vercel-storage.com/…",
      "posterUrl": "https://…public.blob.vercel-storage.com/…",
      "stabilityScore": 0,
      "recommendedModels": ["ComfyUI"],
      "costBand": "medium",
      "evidenceLevel": "L1",
      "tags": ["workflow-method", "not-rerun"],
      "url": "https://goodcase.ai/cases/tattoo-generator",
      "contentLocale": "en",
      "availableLocales": ["zh-CN"],
      "isFallback": false,
      "provenance": {
        "sourceUrl": "https://comfy.org/workflows/90d086fef9e3-90d086fef9e3/",
        "verifiedAgainstSource": true,
        "method": "human-reviewed-source-match",
        "policyEffectiveAt": "2026-08-05",
        "note": "已发布案例的 prompt 均经人工核对与原帖一致…"
      },
      "likedCount": 0,
      "retestVoteCount": 0
    }
  ]
}
§ 02 · Provenance

Every case carries a checkable source claim

Training data is full of prompts that read like expert work and were never actually run. Every case we publish must be checked by a human against the original post, and prompts a platform reverse-engineered from the output image are rejected outright. That rule has governed all published content since 2026-08-05; it now appears as a structured field so an agent can read it instead of taking our word for it.

provenance

sourceUrl
The original post. Null when no public source exists.
verifiedAgainstSource
Whether the prompt was human-checked against the source. False when there is no source — nothing to check against, so no claim.
method
Verification method id. Treat unknown future values as unverified.
policyEffectiveAt
When the provenance rule took effect, not a per-case timestamp.
note
A human-readable sentence, in the requested locale.
§ 03 · Limits

Two tiers, one set of headers

The anonymous tier is a soft limit. The API runs on serverless functions, each instance keeps its own in-memory window, so the effective allowance is higher than the stated number and resets when an instance recycles. It exists to catch a runaway loop, not to meter usage. Real metering lives on API keys, is counted in the database, and resets at 00:00 UTC.

TierQuotaHow
No key60 req / hour / IPNothing to do — just curl.
With key2,000 req / day by default, raised on requestAuthorization: Bearer gc_xxx, or X-API-Key: gc_xxx.

Rate limit headers

X-RateLimit-Limit
Ceiling for your current tier.
X-RateLimit-Remaining
Calls left in this window or day.
X-RateLimit-Reset
Reset time, Unix seconds.
X-RateLimit-Scope
anonymous or key — confirms whether your key took effect.
Retry-After
Only on 429; suggested wait in seconds.

Error codes

400
Invalid parameter, e.g. an unknown category.
401
A gc_ credential that is invalid or revoked. Drop it to fall back to the anonymous tier.
404
No such slug.
429
Soft rate limit or daily quota exhausted; see Retry-After.
§ 04 · Get a key

v1 keys are issued by hand

There is no self-serve signup yet. We would rather issue the first batch manually, learn who is calling and what quota actually makes sense, and only then decide whether a signup flow is worth building.

  1. 01Tell us your use case, rough daily volume, and how to reach you.
  2. 02We issue the key and send the plaintext privately. It is shown once; we store only a hash.
  3. 03Put it in the Authorization header. Nothing else about your calls changes.
API keyRequest a key →→
§ 05 · Skill

Skip the plumbing: install the Skill

The goodcase Skill wraps this API in natural-language queries and works across Claude Code, Codex CLI, Cursor, and Gemini CLI. One line:

npx skills add LearnPrompt/goodcase-lite --skill goodcase --global --copy --yes --full-depth

Then ask your AI what good cases are new, and it will look them up instead of inventing one from training data.