Gyors kezdés

Hozz létre egy API-kulcsot, listázd az elérhető modelleket, kérdezz egy modelltől, folytass beszélgetést, és futtass egy mentett promptot. Nagyjából öt perc az egész.

4 perc olvasás · Frissítve: 2026. szeptember 28.

Ezen az oldalon a nulláról indulva eljutsz az első működő hívásokig a StickyPrompts REST API-jával. Minden példa elérhető cURL, Python (requests) és JavaScript (fetch, Node 18 vagy újabb) változatban. Ugyanez a kulcs az MCP-szerverhez is jó, így ha már megvan, a Claude Code-ot vagy a Cursort is csatlakoztathatod.

Minden REST-útvonal a https://api.stickyprompts.com/api/v1 alapcímhez képest értendő.

1. Hozz létre egy API-kulcsot

  1. Nyisd meg a Settings > API keys oldalt

    Az alkalmazásban lépj a Settings oldalra, és válaszd az API keys menüpontot. Az oldalon mindkét alap-URL és a küldendő header pontos formája is látható.

  2. Generálj kulcsot a szükséges jogosultságokkal

    Kattints a Generate key gombra, adj nevet a kulcsnak (például Quickstart), és jelöld be a jogosultságait. Ehhez az oldalhoz ezekre lesz szükséged:

  3. Most másold ki a kulcsot

    A teljes kulcs (STICKY-API-, majd 64 karakter) csak egyszer jelenik meg. Másold be azonnal a titokkezelődbe. Ha elveszíted, töröld a kulcsot, és generálj egy újat.

2. Tárold környezeti változóban

A kulcs ne kerüljön a kódodba. Az alábbi példák mind a STICKY_API_KEY változóból olvassák ki.

export STICKY_API_KEY="STICKY-API-..."

Minden kérés Bearer-tokenként küldi el:

Authorization: Bearer STICKY-API-...

3. Listázd az elérhető modelleket

GET /api/v1/ai_model
Jogosultság ai_models_get MCP-eszköz list_ai_models

A modelleket a numerikus ID azonosítja, a többi végpont ezt ai_model_id néven várja. A legacy=false paraméterrel elrejtheted az elavult modelleket. Csak olyan modellt használj, amelynél a selectable értéke true - a false azt jelenti, hogy a munkaterületed modellhozzáférési vagy adatrezidencia-szabályai számodra letiltják.

curl "https://api.stickyprompts.com/api/v1/ai_model?legacy=false" \
  -H "Authorization: Bearer $STICKY_API_KEY"
import os
import requests

BASE = "https://api.stickyprompts.com/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['STICKY_API_KEY']}"}

r = requests.get(f"{BASE}/ai_model", params={"legacy": "false"}, headers=HEADERS)
r.raise_for_status()
for m in r.json():
    if m["selectable"]:
        print(m["ID"], m["name"], m["powered_by"])
const BASE = "https://api.stickyprompts.com/api/v1";
const headers = { Authorization: `Bearer ${process.env.STICKY_API_KEY}` };

const res = await fetch(`${BASE}/ai_model?legacy=false`, { headers });
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
for (const m of await res.json()) {
  if (m.selectable) console.log(m.ID, m.name, m.powered_by);
}

A válasz egy JSON-tömb. Itt csak a leghasznosabb mezőket mutatjuk (az értékek csak példák):

[
  {
    "ID": 42,
    "name": "Claude Sonnet 5",
    "powered_by": "Anthropic",
    "description": "Balanced model for everyday work.",
    "flagship": true,
    "deprecated": false,
    "thinking_model": true,
    "reasoning_efforts": ["low", "medium", "high"],
    "tools": ["file_upload", "web_search", "remote_mcp"],
    "multiplier": "1",
    "stream_support": true,
    "selectable": true
  }
]

Figyelj a vegyes írásmódra: az ID nagybetűs, minden más mező snake_case. A tizedes értékek, például a multiplier, stringként érkeznek. Részletek: Hibák, lapozás és kvóták.

4. Kérdezz egy modelltől

POST /api/v1/run
Jogosultság custom_run MCP-eszköz custom_run

A POST /run egyetlen szöveget küld el egy modellnek, és visszaadja a válaszát. Beszélgetés nem jön létre, és a rendszer nem fűz hozzá rendszerpromptot, munkaterület-promptot vagy projektutasításokat. A felhasználást ettől még rögzíti.

curl -X POST https://api.stickyprompts.com/api/v1/run \
  -H "Authorization: Bearer $STICKY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"prompt": "Write a one-line tagline for Northwind Analytics.", "ai_model_id": 42}'
r = requests.post(
    f"{BASE}/run",
    headers=HEADERS,
    json={"prompt": "Write a one-line tagline for Northwind Analytics.", "ai_model_id": 42},
)
r.raise_for_status()
print(r.json()["text"])
const res = await fetch(`${BASE}/run`, {
  method: "POST",
  headers: { ...headers, "Content-Type": "application/json" },
  body: JSON.stringify({
    prompt: "Write a one-line tagline for Northwind Analytics.",
    ai_model_id: 42,
  }),
});
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
console.log((await res.json()).text);

Az eredmény egy nem mentett üzenetobjektum (az ID értéke 0). A modell válasza a text mezőben van, nyers Markdown formátumban:

{
  "ID": 0,
  "ai_model_id": 42,
  "text": "Northwind Analytics: see what sells before it sells out.",
  "isUser": false,
  "status": "finished",
  "ai_style": "prompty",
  "error_text": null,
  "error_id": null
}

5. Indíts egy beszélgetést, és folytasd

POST /api/v1/conversation
Jogosultság conversations_manage MCP-eszköz send_message

A beszélgetést a rendszer elmenti, és ugyanúgy megjelenik az alkalmazás Chat History oldalán, mint egy ott indított chat. A POST /conversation létrehozza a beszélgetést, elküldi az első üzenetet, és megvárja a teljes választ. Mindig adj meg modellt: vagy az ai_model_id mezőt, vagy az auto_model_type mezőt (best, balanced vagy cheapest), ha azt szeretnéd, hogy a StickyPrompts minden üzenethez a feladatra legjobb modellt válassza.

curl -X POST https://api.stickyprompts.com/api/v1/conversation \
  -H "Authorization: Bearer $STICKY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "message": "Draft three subject lines for the Northwind Q4 newsletter.",
    "ai_model_id": 42
  }'
r = requests.post(
    f"{BASE}/conversation",
    headers=HEADERS,
    json={
        "message": "Draft three subject lines for the Northwind Q4 newsletter.",
        "ai_model_id": 42,
    },
)
r.raise_for_status()
reply = r.json()
conversation_id = reply["conversation_context_id"]
print(reply["raw_text"])
const res = await fetch(`${BASE}/conversation`, {
  method: "POST",
  headers: { ...headers, "Content-Type": "application/json" },
  body: JSON.stringify({
    message: "Draft three subject lines for the Northwind Q4 newsletter.",
    ai_model_id: 42,
  }),
});
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
const reply = await res.json();
const conversationId = reply.conversation_context_id;
console.log(reply.raw_text);

A válasz a kész AI-üzenet. A conversation_context_id mezője az új beszélgetés azonosítója (rövidítve):

{
  "ID": 90412,
  "CreatedAt": "2026-09-28T09:14:03.512Z",
  "conversation_context_id": 5120,
  "ai_model_id": 42,
  "is_auto_model": false,
  "text": "Here are three options for the subject line: ...",
  "raw_text": "Here are three options for the subject line: ...",
  "isUser": false,
  "status": "finished",
  "error_text": null,
  "error_id": null,
  "response_duration_ms": 6210,
  "attachments": []
}

Ugyanebbe a beszélgetésbe a POST /conversation/{id} hívással küldhetsz újabb üzenetet. A folytató hívás csak az üzenetet várja (és opcionálisan csatolmányokat, tudásbázisokat és eszközöket); a beszélgetés modellje nem változik.

POST /api/v1/conversation/:id
Jogosultság conversations_manage MCP-eszköz send_message
curl -X POST https://api.stickyprompts.com/api/v1/conversation/5120 \
  -H "Authorization: Bearer $STICKY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"message": "Make the second one shorter and more playful."}'
r = requests.post(
    f"{BASE}/conversation/{conversation_id}",
    headers=HEADERS,
    json={"message": "Make the second one shorter and more playful."},
)
r.raise_for_status()
print(r.json()["raw_text"])
const res2 = await fetch(`${BASE}/conversation/${conversationId}`, {
  method: "POST",
  headers: { ...headers, "Content-Type": "application/json" },
  body: JSON.stringify({ message: "Make the second one shorter and more playful." }),
});
if (!res2.ok) throw new Error(`${res2.status} ${await res2.text()}`);
console.log((await res2.json()).raw_text);

A válasz ugyanilyen üzenetobjektum. Hosszú válaszokhoz használhatod helyette a POST /conversation/stream végpontot: ez azonnal visszaadja a beszélgetés azonosítóját, a választ pedig WebSocketen keresztül küldi. Részletek: Beszélgetések és üzenetek.

6. Futtass egy mentett promptot változókkal

POST /api/v1/run/prompt/:id/variables
Jogosultság run_prompt

A mentett promptok {{variables}} formájú változókat tartalmaznak. Ez a végpont egyetlen hívással kitölti őket, és lefuttatja a promptot a saját modelljével és válaszstílusával. A futtatás új beszélgetést hoz létre.

Kétféle azonosítóra lesz szükséged:

  • A prompt azonosítója. Listázd a promptjaidat a GET /prompt hívással (jogosultság: prompts_get), és olvasd ki az egyes promptok ID mezőjét.
  • A változók azonosítói. A variable_values minden eleme a numerikus variable_id alapján hivatkozik egy változóra. API-kulccsal nem kérhetsz le egyetlen promptot a változóival együtt (a GET /prompt/:id kulccsal nem érhető el), ezért az azonosítókat az alábbiak egyikéből vedd: a prompt futtatási előzményeiből (a GET /prompt/:id/run_history minden futtatás változóit felsorolja a variable_id, slug és value mezővel), egy példányból (GET /instance/:id), vagy a POST /variable válaszából, ha a változót az API-n keresztül hoztad létre. Elég egyszer kikeresned őket, utána tárold el a konfigurációdban. Részletek: Promptok és futtatások.
curl -X POST https://api.stickyprompts.com/api/v1/run/prompt/42/variables \
  -H "Authorization: Bearer $STICKY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "variable_values": [
      {"variable_id": 301, "value": "Bluebird Market"},
      {"variable_id": 302, "value": "Growth plan renewal"}
    ]
  }'
r = requests.post(
    f"{BASE}/run/prompt/42/variables",
    headers=HEADERS,
    json={
        "variable_values": [
            {"variable_id": 301, "value": "Bluebird Market"},
            {"variable_id": 302, "value": "Growth plan renewal"},
        ]
    },
)
r.raise_for_status()
run = r.json()
print(run["run_status"], run["result"])
const res3 = await fetch(`${BASE}/run/prompt/42/variables`, {
  method: "POST",
  headers: { ...headers, "Content-Type": "application/json" },
  body: JSON.stringify({
    variable_values: [
      { variable_id: 301, value: "Bluebird Market" },
      { variable_id: 302, value: "Growth plan renewal" },
    ],
  }),
});
if (!res3.ok) throw new Error(`${res3.status} ${await res3.text()}`);
const run = await res3.json();
console.log(run.run_status, run.result);

Azok a változók, amelyeket kihagysz vagy üresen küldesz, az alapértelmezett értéküket kapják. A válasz egyetlen futtatási objektum (rövidítve):

{
  "id": 7781,
  "created_at": "2026-09-28T09:12:03Z",
  "result": "<p>Hi Sarah, it has been a great year with Bluebird Market ...</p>\n",
  "raw_text": null,
  "runtime": 4210,
  "ai_model_id": 42,
  "conversation_context_id": 16044,
  "conversation_context_slug": "q8w2m1zc",
  "error_text": null,
  "error_id": null,
  "run_status": "success"
}

Amit érdemes tudni:

  • A result a modell Markdown-válaszából renderelt HTML. A nyers Markdownhoz olvasd ki a beszélgetést a GET /conversation/16044 hívással.
  • Szolgáltatói hiba esetén is 200-as választ kapsz, run_status: "error" értékkel és kitöltött error_text / error_id mezővel. Mindig ellenőrizd a run_status értékét.
  • Ha csak egy bemenetet kell módosítanod, a POST /run/prompt/:id hívás a {"data": "..."} törzzsel újrafuttatja a prompt legutóbbi futtatását, az elsődleges változóban az új szöveggel - ehhez nem kellenek változóazonosítók.

Következő lépések