ÄrHär

Deltagar-API

Hämta incheckade deltagare eller checka in personer direkt från en integration. API:t aktiveras separat för varje sida i superadmin.

API-nyckel

Välj Aktivera API eller Ny API-nyckel vid rätt sida i superadmin. Nyckeln visas en gång. När du byter nyckel slutar den gamla fungera direkt; uppdatera därför nyckeln i din integration. Stäng av API återkallar åtkomsten.

Skicka nyckeln i Authorization: Bearer …. Den ger rätt att läsa och checka in deltagare för den aktuella sidan, inklusive kontaktfält och alla sparade frågesvar. Använd nyckeln på din server, aldrig i en publik webbsidas kod eller i URL:en.

Exemplen använder Koppars. Byt värdnamn om du arbetar med en annan sida. Sätt miljövariabeln ARHAR_API_KEY till din aktuella nyckel innan du kör exemplen.

Hämta deltagare

curl 'https://koppars.arhar.se/api/v1/participants?limit=100&after_id=0' \
  -H "Authorization: Bearer $ARHAR_API_KEY"

Svaret innehåller kvarvarande incheckningar i stigande id-ordning:

{
  "unit": "koppars",
  "participants": [{
    "id": 123,
    "name": "Anna Andersson",
    "role": "Projektledare",
    "email": "anna@example.se",
    "phone": "",
    "link": "",
    "linkedin": "",
    "photo_filename": "",
    "custom_answers": [],
    "created_at": "2026-10-01T08:30:00Z"
  }],
  "count": 1,
  "next_after_id": 123,
  "has_more": false
}

limit är 1–500, standard 100. after_id är minst 0, standard 0. Skicka föregående next_after_id i nästa anrop. Fortsätt direkt om has_more är true, annars spara markören och hämta senare. count är antalet i just det svaret.

Incheckningar rensas vid ordinarie nattstädning, normalt 00:05 svensk tid. Hämta och spara uppgifterna innan dess om du behöver historik. API:t visar inte borttagningshändelser.

Checka in en person

curl 'https://koppars.arhar.se/api/v1/participants' \
  -H "Authorization: Bearer $ARHAR_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"name":"Anna Andersson","role":"Projektledare","email":"anna@example.se"}'

HTTP 201 betyder att personen är incheckad och syns i deltagarlistan. Svaret innehåller unit och participant, med samma deltagarfält som ovan och det nya id:t.

Varje lyckat POST skapar en ny incheckning. Upprepa inte automatiskt ett anrop om svaret tappas; kontrollera listan först för att undvika dubbletter. API-incheckning sätter ingen personlig deltagarcookie.

Fält och egna frågor

FältInnehåll
nameNamn, alltid obligatoriskt.
roleSysselsättning/företag. Obligatoriskt som standard.
email, phoneE-post och telefon.
link, linkedinWebbadress och LinkedIn-profil. För LinkedIn går både användarnamn (t.ex. anna-andersson) och fullständig profillänk bra.
q_…Egna frågesvar som text, med frågans id som fältnamn.
photoBildfil i multipart/form-data.

Eventets inställningar styr vilka fält som används och är obligatoriska. Avstängda fält sparas inte. Textfält och frågesvar får vara högst 2 000 tecken.

Hämta definitionerna från https://koppars.arhar.se/api/settings. custom_questions och field_config är JSON-kodade strängar och behöver parsas. fields anger aktiva kontaktfält. Skicka frågans id som ett toppnivåfält, till exempel:

{
  "name": "Anna Andersson",
  "role": "Projektledare",
  "q_topic": "Automation"
}

q_topic är ett exempel; använd id:t från ditt event. I svaren är custom_answers en lista med id, label och value.

Checka in med foto

curl 'https://koppars.arhar.se/api/v1/participants' \
  -H "Authorization: Bearer $ARHAR_API_KEY" \
  -F 'name=Anna Andersson' \
  -F 'role=Projektledare' \
  -F 'photo=@portratt.jpg'

Använd multipart/form-data för bilder och lägg till eventets övriga obligatoriska fält. Om foto är obligatoriskt räcker inte ett JSON-anrop.

Svarskoder

KodBetydelse
200Deltagarlistan hämtades.
201Personen checkades in.
400Felaktiga parametrar, ogiltig bild eller saknade obligatoriska fält. Läs error i svaret.
401Saknad eller felaktig nyckel. Kontrollera om den har bytts.
403API:t är avstängt för sidan.
404Sidan saknas eller är inaktiverad.
413Anropet eller uppladdningen är för stor.
429Sidans dagstak för incheckningar är nått.

Tidsstämplar anges i UTC. API-svaren använder Cache-Control: no-store.