Det offentlige API-et gir organisasjonsadministratorer direkte HTTP-tilgang til sanntidsdataene til organisasjonen deres — hent dem inn i hvilken som helst nettside, app, bot eller automatisering som kan gjøre et HTTP-kall. Det er en funksjon i Club-planen.

Nøkkelen gjelder bare organisasjonen deres — alle endepunkter jobber automatisk mot den gruppen. Base-URL: https://api.ludoya.com/public/v1. Auth-header: X-Api-Key: NØKKELEN_DIN. Grensene avhenger av planen: Club-nøkler tillater 30 kall i minuttet og 2 000 per dag, Business-nøkler 100 i minuttet uten daglig tak; over det får du en 429.
Kjører du WordPress? Da trenger du ikke røre API-et i det hele tatt: den gratis Ludoya-pluginen lister arrangementene deres på deres egen side og lar dere opprette og redigere dem fra WordPress-administrasjonen, med den samme nøkkelen.
Nøkler starter med ldy_ og er 36 tegn lange, så de er lette å oppdage i en konfigurasjonsfil — og lette å skanne etter hvis en noen gang ender opp et sted den ikke burde. Behandle den som et passord: kun på serversiden, og tilbakekall den fra samme side hvis den lekker.
Hva du kan få tilgang til
- Lokasjoner — gruppens tilgjengelige steder og deres plasser; brukes som input når du oppretter arrangementer
- Arrangementer (lesing) — kommende og tidligere arrangementer med tittel, beskrivelse, dato/klokkeslett, tidssone, kapasitet, antall deltakere og status
- Arrangementer (skriving) — opprett og oppdater arrangementer via POST og PUT, med full kontroll over lokasjon, kapasitet, tillatelser, synlighet og bilde
- Underarrangementer — list arrangementene som er nestet i et overordnet arrangement
- Deltakere — legg til noen i et arrangement, endre deltakelsesstatusen deres, eller fjern dem
- Medlemmer — medlemsliste med brukerprofiler og roller (Eier, Administrator, Medlem), paginert
- Invitasjoner — inviter noen inn i gruppen din
- Søk — slå opp Ludoya-brukere og brettspillkatalogen, slik at du kan mappe navn til ID-er før du skriver
- Samling — spillsamling med filtrering etter eierskap, navn, antall spillere og liste; sorterbar og paginert; hvert spill inkluderer BGG-metadata
- Statistikk — statistikk for spilløkter for enhver tidsperiode: totaler, gjennomsnitt, toppspillere med seire og poeng, fordelinger per antall spillere, per lokasjon og per spill
- Kampanjer (lesing) — list gruppens kampanjer med antall medlemmer og økter; hent fullstendige detaljer for kampanjen, inkludert medlemmer, tidligere økter og planlagte arrangementer
- Kampanjer (skriving) — opprett kampanjer for gruppen og oppdater navn, beskrivelse, status og synlighet
- Kampanjemedlemmer — legg til, oppdater og fjern personene i en kampanje
Endepunkter
GET /locations
Returnerer gruppens tilgjengelige lokasjoner. Hver lokasjon har en id, name, valgfri address, capacity, et isDefault-flagg og en spots-liste (hver plass har sin egen id, name og capacity). Bruk lokasjons- og plass-ID-er når du oppretter arrangementer.
Logg inn med Ludoya
Den samme siden som inneholder API-nøkkelen din, gjør også organisasjonen din til en påloggingsleverandør. La folk logge inn på ditt eget nettsted, forum eller fellesskapsplattform med Ludoya-kontoen sin — uten et eget passord de kan glemme, og uten en brukerdatabase du må drifte.
Hvorfor det er verdt det
Når noen godkjenner innloggingen, blir de knyttet til organisasjonen din: avhengig av gruppens opptakspolicy blir de enten medlem med en gang (åpen), sender en forespørsel om å bli med for at en administrator kan godkjenne (be om å bli med), eller bare logger inn uten å bli med (kun invitasjon). Uansett vises de i endepunktet /members som alle andre — slik forblir innloggingen på nettstedet ditt og Ludoya-medlemslisten din automatisk synkronisert.
Slik setter du det opp
Det er standard OpenID Connect, så de fleste plattformer trenger bare en utsteder-URL pluss en klient-ID og hemmelighet. Registrer applikasjonen din fra Public API-siden for å få disse opplysningene, og oppgi omdirigerings-URI-er som nettstedet ditt vil bruke — du kan registrere flere, og hver må samsvare med redirect_uri som nettstedet ditt sender tegn for tegn, inkludert avsluttende skråstrek. Et nesten-treff er den vanligste årsaken til at et første påloggingsforsøk mislykkes.
- Discourse — installer OpenID Connect-tillegget, lim inn discovery-URL-en, legg inn klient-ID og hemmelighet
- WordPress — et hvilket som helst generelt OpenID Connect-tillegg, ved å bruke alternativet "auto discover"
- Alt annet — hvis det støtter OIDC, pek det mot utsteder-URL-en, så konfigurerer det seg selv
Hver innlogging returnerer personens permanente identifikator, brukernavn, visningsnavn og avatar, og e-post. Fullstendige oppsettinstruksjoner, inkludert den manuelle flyten, finnes i utviklerveiledningen i appen under Utviklere → Logg inn med Ludoya.
For dem som logger inn
Alle som har brukt Ludoya til å logge inn et sted kan gjennomgå disse tilkoblingene under Innstillinger → Tilkoblede apper, se når hver ble koblet til og sist brukt, og koble fra hvilken som helst av dem når som helst. Å koble fra kutter nettstedets tilgang umiddelbart, men fjerner dem ikke fra gruppen din.
GET /events
Returnerer kommende og tidligere arrangementer i separate sideinndelte lister.
| Parameter | Type | Standardverdi | Beskrivelse |
|---|---|---|---|
onlyFuture |
boolsk | true |
Sett false for også å returnere tidligere arrangementer |
Hvert arrangement inneholder: type (MEETUP eller PLANNED_PLAY), title, description, startsAt, endsAt, timeZone, imageUrl, capacity, participantCount, canceled, teacher (brukerobjekt eller null), master (brukerobjekt eller null). Brukerobjekter inneholder id, username, name, avatarUrl.
POST /events
Oppretter et arrangement i gruppen. Obligatoriske felt: type og title. Hvis locationId utelates, brukes gruppens standardlokasjon; hvis ingen finnes, returneres 400.
Valgfrie felt inkluderer: description, locationId, spotId, gameId, parentEventId (for underarrangementer), startsAt, endsAt, restrictedAttendance, capacity, minParticipants, estimatedDurationMinutes, maxReservationsPerUser, takeGamesPermission, organizePlaysPermission, teacherUserId, masterUserId, visibility, image.
Feltet image godtar {"base64": "data:image/jpeg;base64,..."} or {"url": "https://..."}. Maks 5 MB.
Returnerer {"id": "string"} med status 201.
PUT /events/{eventId}
Oppdaterer et eksisterende arrangement. Samme kropp som i POST — inkluder bare feltene du vil endre. Den som kaller må være arrangør for arrangementet (gruppekontoen). Returnerer 202 med tom kropp.
GET /events/{eventId}
Henter ett enkelt arrangement etter ID, med samme struktur som elementene i GET /events.
GET /events/{eventId}/children
Lister opp underarrangementene som ligger under et overordnet arrangement — de enkelte sporene eller øktene i et større arrangement. Hvert underarrangement har samme struktur som et vanlig arrangement.
Administrere deltakere
Tre endepunkter lar deg administrere deltakerlisten for et arrangement utenfor Ludoya — praktisk hvis påmeldinger skjer på ditt eget nettsted, eller hvis du importerer en eksisterende liste.
| Metode | Sti | Hva det gjør |
|---|---|---|
POST |
`/events/ |
Flere endepunkter
Resten av API-et, kort fortalt. API-referanse på siden for det offentlige API-et lister opp hvert endepunkt med alle feltene, og den samme kontrakten er publisert som /public/v1/openapi.json, og som /public/v1/llms.txt for en AI-assistent som skriver integrasjonen din. Kopier instruksjoner til AI-assistenten din, på samme side, gir den hele API-et i én innliming, uten nøkkelen din.
For AI-agenter: MCP. En assistent som snakker Model Context Protocol, kobler seg rett til /public/v1/mcp med den samme nøkkelen, og kan bare lese. /public/v1/mcp/write tilbyr også verktøyene som endrer ting, så om en agent får skrive, avgjøres av adressen du gir den.
- Publisere, avlyse, slette. `POST /events/
GET /members
Returnerer en paginert liste over medlemmer.
| Parameter | Type | Standardverdi |
|---|---|---|
pagination.size |
int | 50 |
pagination.offset |
int | 0 |
Hvert medlem inneholder: id, username, name, avatarUrl, role (OWNER, ADMIN, eller MEMBER).
POST /members/invite
Inviterer noen til gruppen din. Denne tar et username direkte — ingen ID-oppslag nødvendig — slik at du kan ta inn medlemmer rett fra ditt eget nettsted eller administrasjonsverktøy.
GET /search/users og GET /search/boardgames
De to oppslagsendepunktene. De fleste skriveoperasjoner trenger en id i stedet for et navn, og med disse kan du hente en.
GET /search/users
| Parameter | Type | Standard |
|---|---|---|
query |
streng | påkrevd |
intent |
streng | — |
pagination.size |
heltall | 20 |
pagination.offset |
heltall | 0 |
GET /search/boardgames
| Parameter | Type | Standard |
|---|---|---|
query |
streng | påkrevd |
filter |
streng | — |
pagination.size |
heltall | 50 |
pagination.offset |
heltall | 0 |
Brettspillfilteret bruker samme semikolon-separerte key=value-form som samlingsfilteret, slik at du kan søke i katalogen etter antall spillere, spilletid, kompleksitet, år, alder eller tagger.
GET /collection
Returnerer spillsamlingen din med filtrering, sortering og paginering.
| Parameter | Type | Standardverdi | Beskrivelse |
|---|---|---|---|
filter |
string | — | Semikolonseparerte key=value-par. Nøkler: ownership (OWNED, PREVIOUSLY_OWNED, PREORDERED, WISHLISTED), played (boolean), listId, nameFilter, playerCountFilterType (OFFICIAL, GOOD, BEST), playerCountFilter (number) |
groupExpansions |
boolean | true |
Grupper utvidelser under tilhørende grunnspill |
sort |
string | — | Format: property,direction — f.eks. name,asc |
pagination |
string | — | Format: size,pageIndex — f.eks. 20,0 |
Respons: totalGames, totalExpansions, games[] — hver med: id, slug, name, imageUrl, isExpansion, yearPublished, minPlayerCount, maxPlayerCount.
GET /stats
Returnerer statistikk for spilløkter for et konfigurerbart tidsvindu.
| Parameter | Type | Standardverdi | Beskrivelse |
|---|---|---|---|
period |
streng | ALL_TIME | Format: PERIOD,date,index. Verdier: ALL_TIME, ONE_YEAR, ONE_MONTH, THIRTY_DAYS, SEVEN_DAYS, ONE_DAY, CUSTOM. index skifter vinduet bakover (0 = gjeldende, 1 = forrige). Egendefinert: CUSTOM,startDate,0,endDate |
Svaret inkluderer:
- Sammendrag — totalt antall spilløkter, total/gjennomsnittlig spilletid, antall unike spill, spillere og lokasjoner
- Etter spiller — spilløkter per person, seire, gjennomsnittlig poengsum og beste poengsum
- Etter antall spillere — fordeling av spill med 2, 3, 4 spillere osv.
- Etter lokasjon — antall spilløkter og unike spill per lokasjon
- Etter spill — antall spilløkter, total/gjennomsnittlig spilletid og unike spillere per tittel
GET /campaigns
Returnerer en sideinndelt liste over kampanjer som tilhører gruppen.
| Parameter | Type | Standardverdi | Beskrivelse |
|---|---|---|---|
status |
string | — | Filtrer etter status: ACTIVE, COMPLETED eller ARCHIVED |
pagination.size |
int | 50 | Elementer per side |
pagination.offset |
int | 0 | Forskyvning |
Hver kampanje inkluderer: id, game (id, name, imageUrl), name, image, status, visibility, createdAt, updatedAt, memberCount, sessionCount.
GET /campaigns/{campaignId}
Returnerer alle detaljer for en kampanje som tilhører gruppen.
Svaret inkluderer: Alle listefeltene, pluss template, description, globalNotes, globalState, members[] (hver med user, role, characterNotes, characterState), sessions[] og events[].
POST /campaigns
Oppretter en kampanje for gruppen. Obligatoriske felt: gameId og name. Synligheten er som standard kun for gruppemedlemmer (ONLY_GROUP) hvis utelatt.
Valgfrie felt: templateId, description, visibility (PUBLIC, ONLY_GROUP, ONLY_FRIENDS eller PRIVATE).
Returnerer {"id": "string"} med status 201.
PUT /campaigns/{campaignId}
Oppdaterer en eksisterende kampanje. Alle felter er valgfrie — ta bare med det du vil endre.
Valgfrie felt: name, description, status (ACTIVE, COMPLETED, ARCHIVED), visibility.
Returnerer 202 med tom responskropp.
Kampanjemedlemmer
Administrer hvem som er i en kampanje, på samme måte som du administrerer deltakere i et arrangement.
| Metode | Sti | Hva den gjør |
|---|---|---|
POST |
`/campaigns/ |
Feilkoder
| Status | Når |
|---|---|
| 400 | Valideringsfeil (mangler obligatorisk felt, ingen lokasjon funnet, ugyldig bilde) |
| 401 | Mangler eller ugyldig API-nøkkel |
| 403 | Handlingen er ikke tillatt, eller gruppen mangler Club-plan eller høyere |
| 404 | Ressurs ikke funnet |
| 429 | Forespørselsgrense overskredet |
Kom i gang
1. Generer en API-nøkkel

- Gå til organisasjonens profilside og trykk på menyen (⋮) → Offentlig API, eller åpne Integrasjoner i konsollen og velg Nøkler og apper
- Trykk Generer nøkkel
- Kopier nøkkelen med en gang — den vises bare én gang og kan ikke hentes frem igjen
Nøkkelen er knyttet til organisasjonen din. Hold den hemmelig: alle som har nøkkelen kan lese og skrive alle dataene nevnt ovenfor.
2. Opphev eller generer på nytt
For å oppheve en eksisterende nøkkel, gå tilbake til Offentlig API-siden og trykk på Opphev. Bekreft dialogen. Alle systemer som bruker den gamle nøkkelen vil umiddelbart begynne å motta 401-feil. For å utstede en ny nøkkel, trykk på Generer nøkkel igjen.
Se også:
- Organisasjoner — organisasjonskontoer og premium-funksjoner
- Premium — priser for Club- og Business-planene
- Integrasjoner — andre måter å koble Ludoya til eksterne verktøy på