Fejlesztőknek
Kösd össze a Screenwellt azokkal az eszközökkel, amiket már használsz
Webhookok minden értékeléshez és szakaszváltáshoz, egy REST API az állásaidhoz és jelentkezőidhez, és egy MCP szerver, hogy a Claude, a ChatGPT és más AI-asszisztensek dolgozhassanak neked a Screenwellben.
Minden csomagban és a próbaidőszakban
API kulcsok
A webhookok, az API és az MCP szerver szkriptes használata a fiókod API kulcsát használja. Az alkalmazásban a Beállítások → API és webhookok alatt találod. A Claude és a ChatGPT connectorainak nincs szükségük kulcsra: helyette a Screenwell-lel jelentkezel be.
- Van egy elsődleges és egy másodlagos kulcsod, így üzemkiesés nélkül válthatsz újra.
- A kulcs a te fiókoddal jár el: csak a te állásaidat és a csapatodét látja, mást nem.
- Tartsd a szerveredben. Soha ne tedd bele egy weboldalba vagy mobilalkalmazásba.
Zapier
Kapcsold össze a Screenwellt az ATS-eddel, a Slackkel, a Google Sheetsszel és több mint 7000 alkalmazással, kód nélkül. Minden esemény abban a pillanatban fut le, amikor a Screenwellben megtörténik.
Beállítás
- 1Másold ki az API-kulcsodat az alkalmazásban: Beállítások → API és webhookok.
- 2Nyisd meg a Screenwellt a Zapieren az alábbi gombbal, és fogadd el a meghívást.
- 3Hozz létre egy Zapet, válaszd a Screenwellt, és illeszd be az API-kulcsot, amikor a Zapier kéri.
- 4Válassz eseményt vagy műveletet, teszteld, és kapcsold be a Zapet.
Események
- Interview Scored
- Luna befejezett egy interjút, és kész az értékelés: pontszám, ajánlás, összefoglaló és link.
- Candidate Moved to Stage
- Egy jelölt másik szakaszba került. Választhatóan csak egy szakaszra, például a szűkített listára.
- New Candidate
- Új jelölt került be, az alkalmazásban, API-n vagy az interjú linkjén keresztül.
- New Job
- Új állás jött létre.
- Interview Completed
- Véget ért egy interjú, még az értékelés előtt.
Műveletek és keresések
- Add Candidate to Job
- Név, e-mail, telefon és opcionálisan önéletrajz.
- Send Interview Invite
- E-mailben elküldi az interjú linkjét. E-mail alapján megkeresi vagy felveszi a jelöltet.
- Schedule Meet/Teams Interview
- Lunát beütemezi egy Google Meet- vagy Microsoft Teams-interjúra.
- Update Candidate Stage
- Áthelyezi: Új, Meghívva, Interjú megvolt, Szűkített lista, Felvéve vagy Nem megfelelő.
- Create Job
- Cím, leírás, cég és az interjú nyelve.
- Find Candidate
- E-mail alapján, opcionálisan egy álláson belül.
- Find Job
- Cím alapján.
Ötletek
- Új jelentkező a Workable-ben, Recruitee-ben, Teamtailorban vagy Greenhouse-ban → Send Interview Invite
- Interview Scored → jegyzet és következő szakasz az ATS-ben
- Interview Scored → üzenet a toborzási csatornában Slacken
- Interview Scored → új sor a Google Sheetsben
Webhookok
A Screenwell egy aláírt POST kérést küld JSON törzzsel az URL-edre, amint történik valami. Irányítsd az ATS-edre, egy Zapier catch hookra, vagy a saját végpontodra.
Állítsd be
- 1Az alkalmazásban nyisd meg a Beállítások → API és webhookok menüt, és add meg a webhook URL-edet. Ennek egy nyilvános https:// címnek kell lennie.
- 2Másold ki az aláíró titkot, ami az első mentés után jelenik meg. Ez kell az aláírások ellenőrzéséhez.
- 3Nyomd meg a „Tesztesemény küldése” gombot, hogy kapj egy minta interview.scored eseményt test: true értékkel.
Az URL-t az API-val is beállíthatod: PUT /api/v1/settings/webhook {"webhookUrl": "https://…"}.
Események
- interview.scored
- Luna befejezett egy interjút, és elkészült az értékelés: a 100-ból adott pontszám, a döntése és ennek biztonsága, az indoklása, valamint egy link az értékelőlapra.
- candidate.stage_changed
- Egy jelentkező áthelyeződött a tábla két szakasza között: honnan, hová, és ki mozgatta – luna az interjú után, vagy recruiter, ha valaki a csapatodból tette.
A CV Parsingot használó fiókok továbbra is megkapják annak régebbi eseményeit (cv_parsed, candidate_created és mások).
Így néz ki egy kézbesítés
Minden kézbesítésnek ugyanaz a burkolata: id, eventType, timestamp, userId és data. A teszteseményekben ott van a test: true is.
{
"id": "evt_01J9ZK4T7Q2M8C6V",
"eventType": "interview.scored",
"timestamp": "2026-09-26T09:44:12.000Z",
"userId": "usr_4f1c",
"data": {
"candidate": { "id": "cand_8f2c", "name": "Maya Kowalski", "email": "maya@example.com" },
"job": { "id": "job_31a0", "title": "Senior Frontend Engineer" },
"interview": { "id": "int_77b1", "finishedAt": "2026-09-26T09:43:50.000Z", "durationSeconds": 1920 },
"score": 84,
"decision": "hire",
"confidence": 82,
"summary": "Strong frontend engineer who led a design system migration.",
"reasoning": "Explains her trade-offs clearly and meets 4 of 5 requirements.",
"scorecardUrl": "https://<app-host>/interviews/int_77b1",
"integrity": { "level": "none" }
}
}{
"id": "evt_01J9ZK4VB1XK0D3R",
"eventType": "candidate.stage_changed",
"timestamp": "2026-09-26T09:44:13.000Z",
"userId": "usr_4f1c",
"data": {
"candidate": { "id": "cand_8f2c", "name": "Maya Kowalski", "email": "maya@example.com" },
"job": { "id": "job_31a0", "title": "Senior Frontend Engineer" },
"from": "invited",
"to": "shortlisted",
"movedBy": "luna",
"changedBy": "rule",
"reason": "Moved by rule: score 84 ≥ 75",
"at": "2026-09-26T09:44:13.000Z"
}
}Fejlécek
- X-Screenwell-Event
- Az esemény típusa, például interview.scored.
- X-Screenwell-Event-Id
- Az esemény azonosítója. Minden újrapróbálkozáskor ugyanaz marad, így ezzel szűrheted ki a már feldolgozott eseményeket.
- X-Screenwell-Signature
- t=<unix seconds>,v1=<hex HMAC-SHA256 of "<t>.<raw body>">, az aláíró titkoddal kulcsolva.
Ellenőrizd az aláírást
- 1Olvasd be a nyers kérés törzsét, még a JSON feldolgozása előtt.
- 2Számítsd ki a "<t>.<raw body>" HMAC-SHA256 értékét az aláíró titkoddal, hex formátumban.
- 3Hasonlítsd össze a v1 értékkel konstans idejű összehasonlítással, és utasítsd el azokat a kéréseket, amelyeknél a t 5 percnél régebbi.
import crypto from 'node:crypto'
import express from 'express'
const app = express()
const SECRET = process.env.SCREENWELL_WEBHOOK_SECRET // whsec_...
// Keep the raw body: the signature is over the exact bytes we sent.
app.post('/webhooks/screenwell', express.raw({ type: 'application/json' }), (req, res) => {
const header = req.get('X-Screenwell-Signature') ?? ''
const { t, v1 } = Object.fromEntries(header.split(',').map((part) => part.split('=')))
const expected = crypto.createHmac('sha256', SECRET).update(`${t}.${req.body}`).digest('hex')
const fresh = Math.abs(Date.now() / 1000 - Number(t)) < 5 * 60
const valid = v1?.length === expected.length && crypto.timingSafeEqual(Buffer.from(v1), Buffer.from(expected))
if (!fresh || !valid) return res.status(400).send('bad signature')
const event = JSON.parse(req.body)
// Skip events you have already handled: event.id stays the same on retries.
console.log(event.eventType, event.data)
res.sendStatus(200)
})
app.listen(3000)import hashlib, hmac, json, os, time
from flask import Flask, request, abort
app = Flask(__name__)
SECRET = os.environ["SCREENWELL_WEBHOOK_SECRET"].encode() # whsec_...
@app.post("/webhooks/screenwell")
def screenwell():
header = request.headers.get("X-Screenwell-Signature", "")
parts = dict(p.split("=", 1) for p in header.split(",") if "=" in p)
t, v1 = parts.get("t", "0"), parts.get("v1", "")
body = request.get_data() # the raw bytes, before any JSON parsing
expected = hmac.new(SECRET, f"{t}.".encode() + body, hashlib.sha256).hexdigest()
if abs(time.time() - int(t)) > 300 or not hmac.compare_digest(v1, expected):
abort(400)
event = json.loads(body)
# Skip events you have already handled: event["id"] stays the same on retries.
print(event["eventType"], event["data"])
return "", 200Újrapróbálkozások
Válaszolj bármilyen 2xx státusszal 10 másodpercen belül. Ha a végpontod hibázik vagy nem válaszol, a Screenwell 1 perc, 5 perc, 30 perc és 2 óra múlva próbálja újra. A Beállítások → API és webhookok mutatja a legutóbbi kézbesítéseket az állapotukkal és a végpontod válaszával.
- 0
- +1m
- +5m
- +30m
- +2h
REST API
Egy JSON API a fiókod állásaihoz, jelentkezőihez és interjúihoz. Küldd a kulcsodat az X-API-KEY fejlécben. A válaszok így néznek ki: {"status": "success", "data": …}.
- Alap URL
https://api.screenwell.ai/api/v1- Hitelesítés
X-API-KEY: <API key>
Állások
- GET
/jobsA te állásaid és a csapatodéi. - GET
/jobs/:idEgy állás a leírásával és a szükséges készségekkel. - POST
/jobsHozz létre egy állást: cím, cég, helyszín, leírás és több más adat. - PUT
/jobs/:idMódosítsd egy állás adatait.
Jelentkezők
- POST
/jobs/:id/candidatesAdj hozzá egy jelentkezőt egy álláshoz az önéletrajzuk alapján: fájlfeltöltéssel (file), linkkel (fileUrl) vagy base64 formátumban. - POST
/jobs/:id/candidates/batchAdj hozzá több önéletrajzot egyszerre egy álláshoz (fileUrls vagy base64Files). - GET
/candidates/:idEgy jelentkező az önéletrajz adataival, az állapotával és Luna elemzésével. - PUT
/candidates/:id/statusHelyezz át egy jelentkezőt, például erre: selected (Rövidlistás), hired vagy rejected. - GET
/candidates/:id/cvEgy link a jelentkező önéletrajz-fájljához.
Interjúk és értékelések
- GET
/meetingsInterjúk és hívások, legújabb elöl. Szűrhetsz az isInterview=true, limit és offset paraméterekkel. - GET
/meetings/:id/interview-insightsEgy interjú értékelőlapja: pontszám, javaslat, erősségek, aggályok és bizonyítékok. - GET
/meetings/:id/transcriptAz interjú átirata.
Fiók
- GET
/quotaHány interjú maradt neked ebben a hónapban. - GET · PUT
/settings/webhookOlvasd le vagy állítsd be a webhook URL-edet.
Jelentkezői állapotok
A tábla szakaszai ezekre az állapotokra képződnek le: Új = applied, Meghívva = interview_scheduled, Interjúztatva = interviewed, Rövidlistás = selected, Felvéve = hired, Nem megfelelő = rejected. Az állapot módosítása sosem küld e-mailt a jelentkezőnek.
Példa: jelentkező hozzáadása önéletrajzból
curl -X POST https://api.screenwell.ai/api/v1/jobs/job_31a0/candidates \
-H "X-API-KEY: $SCREENWELL_API_KEY" \
-F "file=@maya-kowalski-cv.pdf"
# or from a link
curl -X POST https://api.screenwell.ai/api/v1/jobs/job_31a0/candidates \
-H "X-API-KEY: $SCREENWELL_API_KEY" \
-H "Content-Type: application/json" \
-d '{"fileUrl": "https://example.com/cv/maya.pdf"}'curl -X PUT https://api.screenwell.ai/api/v1/candidates/cand_8f2c/status \
-H "X-API-KEY: $SCREENWELL_API_KEY" \
-H "Content-Type: application/json" \
-d '{"status": "selected"}'MCP szerver
Dolgozz a Screenwell-lel a Claude-ból, a ChatGPT-ből, a Cursorból vagy bármelyik MCP kliensből: „Kit tett Luna rövidlistára ezen a héten?”, „Adj hozzá 5 önéletrajzot a Backend pozícióhoz”, „Küldd el Tomasnak az interjúlinket”. Az asszisztens a te fiókoddal jár el, ugyanazzal a hozzáféréssel, amivel te rendelkezel az alkalmazásban.
- Végpont
POST https://api.screenwell.ai/mcp- Authorization
Bearer <bejelentkezési token vagy API kulcs>
A claude.ai-ból vagy a ChatGPT-ből: jelentkezz be a Screenwell-lel
Nincs kulcs, amit másolnod kellene. Add hozzá a Screenwellt connectorként a szerver URL-lel, majd jelentkezz be a Screenwell-fiókoddal, és hagyd jóvá a hozzáférést.
claude.ai (web, asztali és mobil)
- 1Nyisd meg: Settings → Connectors → Add custom connector. Team és Enterprise csomagon egy tulajdonos adja hozzá először, az Organization settings alatt.
- 2Nevezd el Screenwellnek, és add meg a szerver URL-t. Az OAuth kliensazonosítót és titkot hagyd üresen.
- 3Kattints a Connect gombra. Megnyílik a Screenwell: jelentkezz be, ellenőrizd a hozzáférést, és kattints az Allow gombra. Utána kapcsold be a Screenwellt egy chat eszközmenüjében.
ChatGPT
- 1Nyisd meg: Settings → Apps & Connectors → Advanced settings, és kapcsold be a Developer mode-ot. Business, Enterprise és Edu munkaterületeken ehhez egy adminnak kell engedélyeznie.
- 2Válaszd a Create lehetőséget, nevezd el Screenwellnek, add meg a szerver URL-t, és hitelesítésként válaszd az OAuth-ot.
- 3Megnyílik a Screenwell: jelentkezz be, ellenőrizd a hozzáférést, és kattints az Allow gombra. Utána válaszd ki a connectort egy chatben.
https://api.screenwell.ai/mcpA Screenwell oldal megmutatja, melyik alkalmazás kér hozzáférést, hová küld vissza, és mit kér: csak olvasást, vagy olvasást és cselekvést (jelentkezők hozzáadása, áthelyezése és e-mail küldése, mindig a te jóváhagyásoddal).
Minden csatlakoztatott alkalmazás megjelenik a Beállítások → API és webhookok → Csatlakoztatott alkalmazások alatt. A Leválasztás a következő kérésnél megszünteti a hozzáférést.
API kulccsal: Claude Code, Cursor és szkriptek
Azok az eszközök, amelyeknél beállítható egy fejléc, az API kulcsodat is használhatják. A Claude Code be is tud jelentkezni: add hozzá a szervert fejléc nélkül, majd futtasd az /mcp parancsot, és válaszd az Authenticate lehetőséget.
# sign in with Screenwell: add the server, then run /mcp and choose Authenticate
claude mcp add --transport http screenwell https://api.screenwell.ai/mcp
# or with an API key
claude mcp add --transport http screenwell https://api.screenwell.ai/mcp \
--header "Authorization: Bearer <API key>"
# read-only
claude mcp add --transport http screenwell-read https://api.screenwell.ai/mcp \
--header "Authorization: Bearer <API key>" \
--header "X-Screenwell-Scope: read"{
"mcpServers": {
"screenwell": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://api.screenwell.ai/mcp", "--header", "Authorization: Bearer ${SCREENWELL_KEY}"],
"env": { "SCREENWELL_KEY": "<API key>" }
}
}
}A Claude Desktop az mcp-remote-on keresztül csatlakozik, ami automatikusan hozzáadja a kulcs fejlécet.
A Cursor, a VS Code, az MCP Inspector és a szkriptek ugyanazt az URL-t használják, egy API kulcs fejléccel vagy bejelentkezéssel.
Egy API kulccsal add hozzá az X-Screenwell-Scope: read fejlécet egy csak olvasható kapcsolathoz. Az asszisztens ekkor csak rákereshet dolgokra, de nem adhat hozzá, helyezhet át vagy küldhet e-mailt senkinek.
Eszközök
Rákeresés
list_jobsAz állásaid a jelentkezőkkel szakaszonként, és hogy az interjúlink be van-e kapcsolva.get_jobEgy állás Luna interjútervével, az interjúlinkkel és a jelentkezői folyamattal.list_candidatesJelentkezők állás, szakasz vagy név szerint, a legutóbbi pontszámukkal és azzal, hogy ki mozgatta őket utoljára.get_candidateEgy jelentkező: elérhetőségek, Luna felkészülési anyaga, önéletrajz-összefoglaló, értékelőlap és a hiring manager visszajelzése.get_scorecardA teljes értékelőlap: 100-ból adott pontszám, döntés, erősségek, hiányosságok és kulcsfontosságú pillanatok.ask_lunaTegyél fel egy kérdést Lunának, a felvételi tanácsadódnak, a jelentkezőidről.
Cselekvés
add_candidateAdj hozzá egy jelentkezőt az adataik vagy egy önéletrajz (PDF vagy Word) alapján. Luna először elolvassa az önéletrajzot.move_candidateA te jóváhagyásod kell hozzáHelyezz át egy jelentkezőt egy másik szakaszba.add_noteAdj hozzá egy jegyzetet a csapatodnak egy jelentkezőhöz.send_interview_linkA te jóváhagyásod kell hozzáKüldd el e-mailben az állás interjúlinkjét legfeljebb 50 jelentkezőnek.
A te jóváhagyásod nélkül semmi nem jut el egy jelentkezőhöz
- Az interjúlink elküldése, valamint valaki Felvéve vagy Nem megfelelő szakaszba helyezése előbb egy előnézetet ad vissza („Ez e-mailt küld 3 jelentkezőnek: …”). Semmi nem történik, amíg az asszisztens meg nem kérdez téged, és te bele nem egyezel.
- Az asszisztens csak azt látja, amit te is látsz az alkalmazásban: a te állásaidat és a csapatodéit. Minden csomagban és a próbaidőszakban is működik, ugyanúgy, mint az API.
- Kulcsonként legfeljebb 60 eszközhívás percenként. Az önéletrajzok olvasásának és a Kérdezd Lunát funkciónak saját óránkénti korlátja van.
Valami nagyobbat építenél?
Mondd el, mit szeretnél összekötni. Segítünk beállítani.