Programeri
Povežite Screenwell s alatima koje već koristite
Webhookovi za svaku ocjenu i promjenu faze, REST API za Vaše pozicije i kandidate, te MCP server kako bi Claude, ChatGPT i drugi AI asistenti mogli raditi sa Screenwellom umjesto Vas.
Na svakom planu i u probnom periodu
API ključevi
Webhookovi, API i MCP server za skripte koriste API ključ Vašeg naloga. Naći ćete ga u aplikaciji pod Podešavanja → API i webhookovi. Claude i ChatGPT konektori ne trebaju ključ: umjesto toga se prijavljujete sa Screenwellom.
- Imate primarni i sekundarni ključ, tako da možete preći na novi ključ bez prekida rada.
- Ključ djeluje u Vaše ime: vidi Vaše pozicije i pozicije Vašeg tima, i ništa drugo.
- Čuvajte ga na svom serveru. Nikada ga ne stavljajte u web stranicu ili mobilnu aplikaciju.
Zapier
Povežite Screenwell sa svojim ATS-om, Slackom, Google Sheetsom i s više od 7.000 drugih aplikacija, bez pisanja koda. Svaki okidač se aktivira u trenutku kada se nešto desi u Screenwellu.
Postavljanje
- 1Kopirajte svoj API ključ u aplikaciji: Postavke → API i webhookovi.
- 2Otvorite Screenwell na Zapieru dugmetom ispod i prihvatite pozivnicu.
- 3Napravite Zap, odaberite Screenwell i zalijepite API ključ kada ga Zapier zatraži.
- 4Odaberite okidač ili radnju, testirajte i uključite Zap.
Okidači
- Interview Scored
- Luna je završila intervju i ocjena je spremna: rezultat, preporuka, sažetak i link.
- Candidate Moved to Stage
- Kandidat je promijenio fazu. Opcionalno samo za jednu fazu, npr. Uži izbor.
- New Candidate
- Dodan je kandidat, u aplikaciji, putem API-ja ili preko linka za intervju.
- New Job
- Kreiran je posao.
- Interview Completed
- Intervju je završen, prije nego što je ocjena spremna.
Radnje i pretrage
- Add Candidate to Job
- Ime, e-mail, telefon i opcionalno CV.
- Send Interview Invite
- E-mailom šalje link za intervju. Pronalazi kandidata po e-mailu ili ga dodaje.
- Schedule Meet/Teams Interview
- Zakazuje Lunu za intervju u Google Meetu ili Microsoft Teamsu.
- Update Candidate Stage
- Premješta u Novi, Pozvan, Intervjuisan, Uži izbor, Zaposlen ili Ne odgovara.
- Create Job
- Naziv, opis, firma i jezik intervjua.
- Find Candidate
- Po e-mailu, opcionalno unutar jednog posla.
- Find Job
- Po nazivu.
Ideje
- Novi kandidat u Workableu, Recruiteeu, Teamtailoru ili Greenhouseu → Send Interview Invite
- Interview Scored → bilješka i sljedeća faza u vašem ATS-u
- Interview Scored → poruka u kanalu za zapošljavanje u Slacku
- Interview Scored → novi red u Google Sheetsu
Webhookovi
Screenwell šalje potpisani POST zahtjev sa JSON sadržajem na Vaš URL čim se nešto dogodi. Usmjerite ga na svoj ATS, Zapier catch hook ili vlastiti endpoint.
Postavljanje
- 1U aplikaciji otvorite Podešavanja → API i webhookovi i dodajte svoj webhook URL. Mora biti javna https adresa.
- 2Kopirajte tajni ključ za potpis koji se pojavljuje nakon prvog čuvanja. Potreban Vam je za provjeru potpisa.
- 3Pritisnite „Pošalji testni događaj” da dobijete uzorak interview.scored sa test: true.
URL možete postaviti i putem API-ja: PUT /api/v1/settings/webhook {"webhookUrl": "https://…"}.
Događaji
- interview.scored
- Luna je završila intervju i ocjena je spremna: rezultat od 100, njena odluka i koliko je sigurna, njeno obrazloženje i link na ocjenu.
- candidate.stage_changed
- Kandidat je promijenio fazu na tabli, s podacima odakle, kamo i ko ga je premjestio: luna nakon intervjua, ili recruiter kada je to učinio neko iz Vašeg tima.
Nalozi koji su koristili CV Parsing i dalje primaju njegove starije događaje (cv_parsed, candidate_created i druge).
Kako izgleda isporuka
Svaka isporuka ima isti omot podataka: id, eventType, timestamp, userId i data. Testni događaji nose i test: true.
{
"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"
}
}Zaglavlja
- X-Screenwell-Event
- Tip događaja, npr. interview.scored.
- X-Screenwell-Event-Id
- ID događaja. Ostaje isti pri svakom ponovnom pokušaju, pa ga koristite da preskočite događaje koje ste već obradili.
- X-Screenwell-Signature
- t=<unix seconds>,v1=<hex HMAC-SHA256 of "<t>.<raw body>">, potpisano Vašim tajnim ključem za potpis.
Provjera potpisa
- 1Pročitajte sirovo tijelo zahtjeva, prije bilo kakvog JSON parsiranja.
- 2Izračunajte HMAC-SHA256 od "<t>.<raw body>" s Vašim tajnim ključem za potpis, u hex formatu.
- 3Uporedite ga sa v1 u konstantnom vremenu i odbijte zahtjeve čiji je t stariji od 5 minuta.
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 "", 200Ponovni pokušaji
Odgovorite bilo kojim 2xx statusom u roku od 10 sekundi. Ako Vaš endpoint ne uspije ili ne odgovori, Screenwell pokušava ponovo nakon 1 minute, 5 minuta, 30 minuta i 2 sata. Podešavanja → API i webhookovi prikazuje najnovije isporuke s njihovim statusom i odgovorom Vašeg endpointa.
- 0
- +1m
- +5m
- +30m
- +2h
REST API
JSON API za pozicije, kandidate i intervjue u Vašem nalogu. Pošaljite svoj ključ u zaglavlju X-API-KEY. Odgovori izgledaju kao {"status": "success", "data": …}.
- Osnovni URL
https://api.screenwell.ai/api/v1- Autentifikacija
X-API-KEY: <API key>
Pozicije
- GET
/jobsVaše pozicije i pozicije Vašeg tima. - GET
/jobs/:idJedna pozicija s opisom i vještinama. - POST
/jobsKreirajte poziciju: naziv, kompanija, lokacija, opis i drugo. - PUT
/jobs/:idIzmijenite podatke o poziciji.
Kandidati
- POST
/jobs/:id/candidatesDodajte kandidata na poziciju na osnovu njegovog CV-a: otpremanjem fajla (file), linkom (fileUrl) ili base64 formatom. - POST
/jobs/:id/candidates/batchDodajte više CV-ova na poziciju odjednom (fileUrls ili base64Files). - GET
/candidates/:idKandidat s podacima iz CV-a, statusom i Luninom analizom. - PUT
/candidates/:id/statusPremjestite kandidata, npr. u selected (Uži izbor), hired ili rejected. - GET
/candidates/:id/cvLink na CV fajl kandidata.
Intervjui i ocjene
- GET
/meetingsIntervjui i pozivi, od najnovijih. Filtrirajte pomoću isInterview=true, limit i offset. - GET
/meetings/:id/interview-insightsOcjena intervjua: rezultat, preporuka, prednosti, nedoumice i dokazi. - GET
/meetings/:id/transcriptTranskript intervjua.
Nalog
- GET
/quotaKoliko Vam je intervjua preostalo ovog mjeseca. - GET · PUT
/settings/webhookPročitajte ili postavite svoj webhook URL.
Statusi kandidata
Faze na tabli odgovaraju ovim statusima: Novi = applied, Pozvan = interview_scheduled, Intervjuisan = interviewed, Uži izbor = selected, Zaposlen = hired, Ne odgovara = rejected. Promjena statusa nikada ne šalje email kandidatu.
Primjer: dodavanje kandidata na osnovu CV-a
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 server
Radite sa Screenwellom iz Claudea, ChatGPT-a, Cursora ili bilo kojeg MCP klijenta: „Koga je Luna stavila u uži izbor ove sedmice?”, „Dodaj ovih 5 CV-ova na poziciju Backend”, „Pošalji Tomasu link za intervju”. Asistent djeluje u Vaše ime, s istim pristupom koji imate u aplikaciji.
- Endpoint
POST https://api.screenwell.ai/mcp- Authorization
Bearer <token za prijavu ili API ključ>
Iz claude.ai ili ChatGPT-a: prijavite se sa Screenwellom
Nema ključa za kopiranje. Dodajte Screenwell kao konektor sa URL-om servera, zatim se prijavite svojim Screenwell nalogom i odobrite pristup.
claude.ai (web, desktop i mobilni)
- 1Otvorite Settings → Connectors → Add custom connector. Na Team i Enterprise planovima, vlasnik ga prvo dodaje pod Organization settings.
- 2Nazovite ga Screenwell i unesite URL servera. Ostavite OAuth client ID i secret prazne.
- 3Kliknite Connect. Otvara se Screenwell: prijavite se, provjerite pristup i kliknite Allow. Zatim uključite Screenwell u meniju alata unutar razgovora.
ChatGPT
- 1Otvorite Settings → Apps & Connectors → Advanced settings i uključite Developer mode. Za Business, Enterprise i Edu radne prostore to prvo mora dozvoliti administrator.
- 2Odaberite Create, nazovite ga Screenwell, unesite URL servera i izaberite OAuth kao metod autentifikacije.
- 3Otvara se Screenwell: prijavite se, provjerite pristup i kliknite Allow. Zatim izaberite konektor unutar razgovora.
https://api.screenwell.ai/mcpScreenwell stranica prikazuje koja aplikacija traži pristup, adresu na koju Vas vraća, i pristup koji traži: samo čitanje, ili čitanje i djelovanje (dodavanje, premještanje i slanje emaila kandidatima, uvijek nakon Vaše potvrde).
Svaka povezana aplikacija je navedena pod Podešavanja → API i webhookovi → Povezane aplikacije. Prekini vezu je isključuje kod sljedećeg zahtjeva.
S API ključem: Claude Code, Cursor i skripte
Alati koji omogućavaju postavljanje zaglavlja mogu umjesto toga koristiti Vaš API ključ. Claude Code se može i prijaviti: dodajte server bez zaglavlja, zatim pokrenite /mcp i izaberite Authenticate.
# 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>" }
}
}
}Claude Desktop se povezuje putem mcp-remote, koji za Vas dodaje zaglavlje s ključem.
Cursor, VS Code, MCP Inspector i skripte koriste isti URL, s API ključem u zaglavlju ili prijavom.
S API ključem dodajte zaglavlje X-Screenwell-Scope: read za vezu samo za čitanje. Asistent tada može pretraživati podatke, ali ne može ništa dodavati, premještati niti slati email bilo kome.
Alati
Pretraga
list_jobsVaše pozicije s kandidatima po fazi i informacijom da li je link za intervju uključen.get_jobPozicija s Luninim planom intervjua, linkom za intervju i tokom kandidata.list_candidatesKandidati po poziciji, fazi ili imenu, s njihovim posljednjim rezultatom i ko ih je posljednji premjestio.get_candidateJedan kandidat: kontakt podaci, Luninu pripremu, sažetak CV-a, ocjena i povratna informacija hiring managera.get_scorecardPuna ocjena: rezultat od 100, odluka, prednosti, nedostaci i ključni trenuci.ask_lunaPostavite pitanje Luni, Vašoj savjetnici za zapošljavanje, o Vašim kandidatima.
Radnje
add_candidateDodajte kandidata na osnovu njegovih podataka ili CV-a (PDF ili Word). Luna prvo pročita CV.move_candidateTreba Vaš pristanakPremjestite kandidata u drugu fazu.add_noteDodajte bilješku za svoj tim uz kandidata.send_interview_linkTreba Vaš pristanakPošaljite email s linkom za intervju za poziciju do 50 kandidata.
Ništa ne stiže do kandidata bez Vaše potvrde
- Slanje linka za intervju, kao i premještanje nekoga u Zaposlen ili Ne odgovara, prvo vraća pregled („Ovo će poslati email na 3 kandidata: …”). Ništa se ne dešava dok se asistent ne obrati Vama i Vi se ne saglasite.
- Asistent vidi samo ono što vidite i Vi u aplikaciji: Vaše pozicije i pozicije Vašeg tima. Radi na svakom planu i u probnom periodu, isto kao i API.
- Najviše 60 poziva alata po minuti za svaki ključ. Čitanje CV-ova i Pitaj Lunu imaju vlastita satna ograničenja.
Gradite nešto veće?
Recite nam šta biste željeli povezati. Pomoći ćemo Vam da to postavite.