Logo

Byg på Skyskraber

Integrer med Skyskraber via vores REST API. Hent brugerdata, toplister, markedsplads-opslag og meget mere.

Kom i gang

1

Opret en app

Registrer din applikation i din Skyskraber-profil under "Developer" for at få et client_id og client_secret.

2

Autentificer

Brug OAuth 2.0 authorization code flow med PKCE til at få adgang på vegne af brugere.

3

Kald API'et

Send requests til vores REST API med din access token i Authorization-headeren.

OAuth 2.0

Skyskraber understøtter to autentificeringsmetoder:

Basic Auth (app-niveau)

Brug Authorization: Basic base64(client_id:client_secret) til at tilgå statistik, marketplace og rum direkte — ingen bruger-login krævet.

OAuth 2.0 Bearer Token (bruger-niveau)

Brug Authorization Code flow med PKCE for at tilgå brugerdata på vegne af en bruger. Se flow nedenfor.

1. Autoriserings-URL

GET /api/oauth/authorize ?client_id=DIN_CLIENT_ID &redirect_uri=DIN_URI &response_type=code &scope=user:profile:read &state=TILFAELDIG_STRENG &code_challenge=BASE64URL_SHA256_HASH &code_challenge_method=S256

Generér en code_verifier (43-128 tegn), hash den med SHA-256 og base64url-encod resultatet som code_challenge.

2. Token-udveksling

POST https://www.skyskraber.dk/api/oauth/token

Send som JSON body (Content-Type: application/json):

// Authorization code exchange { "grant_type": "authorization_code", "code": "AUTH_CODE_FRA_REDIRECT", "redirect_uri": "DIN_URI", "client_id": "DIN_CLIENT_ID", "client_secret": "DIN_CLIENT_SECRET", "code_verifier": "DIN_ORIGINALE_CODE_VERIFIER" } // Refresh token { "grant_type": "refresh_token", "refresh_token": "DIN_REFRESH_TOKEN", "client_id": "DIN_CLIENT_ID", "client_secret": "DIN_CLIENT_SECRET" }

3. Brugerinfo & token-tilbagekaldelse

GET/api/oauth/userinfoHent profil for den autoriserede bruger (kræver Bearer token)
POST/api/oauth/revokeTilbagekald en access eller refresh token (JSON: { "token": "...", "token_type_hint": "access_token" })

Tilladelser (scopes)

OAuth Bearer — kræver bruger-login via authorize flow:

user:profile:readLæs basisprofil (brugernavn, level, avatar, online-status)

Basic Auth — app-niveau, ingen bruger-login krævet:

marketplace:readLæs markedspriser og salgshistorik
statistics:readLæs serverstatistik, toplister og katalog
rooms:readLæs ruminformation
app:users:readSe brugere tilknyttet din applikation og tilgå deres profiler

API-reference

Base URL: https://www.skyskraber.dk/api/v1

Alle responses returneres som JSON i en envelope med data og meta.timestamp. Paginerede endpoints inkluderer pagination. Inkluder din access token: Authorization: Bearer DIN_TOKEN

Ved fejl returneres: { error: { code: string, message: string } }

Rate limit: 60 requests/minut per applikation. Ved overskridelse returneres 429 med { error: { code: "rate_limit_exceeded", message: "..." } } og header Retry-After (sekunder).

Asset-rendering

Avatarer, ting, tøj og rum er bygget op af lagdelte billeder. API'et returnerer rå asset-data (lag, offsets, skin tone m.m.) — du renderer selv client-side. Se starter kit'et for en komplet canvas-rendering implementering.

Data-format

Hvert asset-lag returneres som et objekt med disse felter:

imageUrl/api/files/{uuid}URL til billedfilen
layerType"foreground" | "background"foreground = bag avatar-kroppen, background = foran avatar-kroppen
offsetX / offsetYnumberPosition: drawX = avatarX - offsetX, drawY = avatarY - offsetY
frames / frameDurationnumberSprite sheet: horisontal strip, hver frame = totalWidth / frames bred
scalestringSkala-multiplikator for billedet
sortOrdernumberRækkefølge indenfor lag-gruppen (lavere først)
needsSkinTonebooleanOm billedet skal farves med brugerens hudtone

Render-rækkefølge

1. Foreground-lag

Lag med layerType "foreground" tegnes først (bag kroppen). Sortér efter sortOrder, derefter wearable order.

2. Avatar-kroppen

Tegn base avatar-billedet (/avatars/{sex}/happy.png). Påfør hudtone hvis skinTone ≠ 0.5.

3. Background-lag

Lag med layerType "background" tegnes sidst (foran kroppen). Samme sortering.

Hudtone (skin tone)

Lag med needsSkinTone: true skal farves med brugerens hudtone-værdi (0–1, standard 0.5). Algoritmen bruger HSL-baseret recoloring — se kildekoden for den præcise implementering. Billeder hvor needsSkinTone er false tegnes som de er.

Startsæt

Fork vores starter kit og hav en fungerende fællesskabs-app på få minutter. Det demonstrerer alle API-endpoints med OAuth, avatar-rendering, katalog-browser, rum-browser, statistik og markedspris-detaljer.

OAuth 2.0 med PKCE

Fuld authorization code flow med S256

Avatar-rendering

Canvas-baseret med hudtone og lag-komposition

Katalog-browser

Virtualiseret liste med filtre og markedspriser

Rum-browser

Kortvisning med søgning og paginering

Statistik-dashboard

Online-tæller, totaler og toplister

Mørkt tema

Systembaseret tema med skift

Hurtig start

# 1. Fork og klon gh repo fork miccidk/skyskraber-starter-kit --clone cd skyskraber-starter-kit # 2. Installér bun install # 3. Konfigurér cp .env.example .env # Udfyld VITE_CLIENT_ID og VITE_CLIENT_SECRET # 4. Start bun run dev

Hastighedsgrænser

NiveauGrænse
Alle apps60 requests/minut

Ved overskridelse returnerer API'et 429 Too Many Requests med en Retry-After header. Verificerede apps kan få forhøjede grænser i fremtiden.

Fejlhåndtering

Alle fejl returneres som JSON med et error-felt. HTTP-statuskoden indikerer fejltypen:

400Bad RequestUgyldigt request eller manglende felter
401UnauthorizedUgyldig eller udløbet access token
403ForbiddenManglende scope eller ingen adgang til ressourcen
404Not FoundRessourcen blev ikke fundet
429Too Many RequestsRate limit overskredet — se Retry-After header
500Internal Server ErrorUventet serverfejl — prøv igen senere

Betingelser for API-brug

Ved at oprette en applikation og benytte Skyskraber API accepterer du følgende betingelser. Overtrædelse kan medføre øjeblikkelig suspension af din applikation og API-adgang.

1. Tilladt brug

API-adgang gives udelukkende til fællesskabs-apps og ikke-kommercielle projekter relateret til Skyskraber. Din applikation skal tydeligt fremstå som et community-projekt og må ikke give indtryk af at være et officielt Skyskraber-produkt.

2. Ophavsret og indhold

Alt indhold tilgængeligt via API'et — herunder brugerdata, billeder, avatarer, tøj, ting, rum-assets og statistik — er ophavsretligt beskyttet og tilhører Skyskraber. Du må ikke:

  • Bruge indholdet til kommercielle formål (salg, reklame, betalingstjenester, monetarisering)
  • Videresælge, sublicensere eller redistribuere data eller API-adgang til tredjeparter
  • Massehente (scrape) eller systematisk kopiere indhold til opbygning af egne databaser
  • Bruge indholdet til træning af AI/ML-modeller uden skriftlig tilladelse

3. Brugerdata og privatliv

Du er ansvarlig for at beskytte brugerdata i overensstemmelse med GDPR og dansk lovgivning. Brugerdata må kun bruges til det formål brugeren har givet samtykke til via OAuth-godkendelsen. Du må ikke dele brugerdata med tredjeparter.

4. Fair brug

Overhold de fastsatte hastighedsgrænser. Undlad at overbelaste API'et med unødvendige forespørgsler. Implementer caching hvor det er muligt. Misbrug af API-ressourcer kan medføre begrænsning eller suspension.

5. Kreditering

Din applikation skal tydeligt angive at data stammer fra Skyskraber, f.eks. med teksten "Data fra Skyskraber" eller Skyskrabers logo med link til skyskraber.dk.

6. Ændringer og ophør

Skyskraber forbeholder sig retten til at ændre, begrænse eller opsige API-adgang til enhver tid og uden varsel. Vi kan opdatere disse betingelser — fortsat brug af API'et udgør accept af opdaterede betingelser.

Disse betingelser supplerer Skyskrabers generelle servicevilkår. Ved uoverensstemmelse gælder de mest restriktive betingelser.

Klar til at bygge?

Opret din første app i dag og bliv en del af Skyskraber-økosystemet. Se også eksisterende fællesskabet.

Skyskraber

En 2D-chatverden med sjov, aktivitet og fællesskab.

Kontakt & Følg oskontakt@skyskraber.dk
© Skyskraber 2026