Byg på Skyskraber
Integrer med Skyskraber via vores REST API. Hent brugerdata, toplister, markedsplads-opslag og meget mere.
Kom i gang
Opret en app
Registrer din applikation i din Skyskraber-profil under "Developer" for at få et client_id og client_secret.
Autentificer
Brug OAuth 2.0 authorization code flow med PKCE til at få adgang på vegne af brugere.
Kald API'et
Send requests til vores REST API med din access token i Authorization-headeren.
OAuth 2.0
Skyskraber understøtter to autentificeringsmetoder:
Brug Authorization: Basic base64(client_id:client_secret) til at tilgå statistik, marketplace og rum direkte — ingen bruger-login krævet.
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=S256Generér en code_verifier (43-128 tegn), hash den med SHA-256 og base64url-encod resultatet som code_challenge.
2. Token-udveksling
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
/api/oauth/userinfoHent profil for den autoriserede bruger (kræver Bearer token)/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 salgshistorikstatistics:readLæs serverstatistik, toplister og katalogrooms:readLæs ruminformationapp:users:readSe brugere tilknyttet din applikation og tilgå deres profilerAPI-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 billedfilenlayerType"foreground" | "background"foreground = bag avatar-kroppen, background = foran avatar-kroppenoffsetX / offsetYnumberPosition: drawX = avatarX - offsetX, drawY = avatarY - offsetYframes / frameDurationnumberSprite sheet: horisontal strip, hver frame = totalWidth / frames bredscalestringSkala-multiplikator for billedetsortOrdernumberRækkefølge indenfor lag-gruppen (lavere først)needsSkinTonebooleanOm billedet skal farves med brugerens hudtoneRender-rækkefølge
Lag med layerType "foreground" tegnes først (bag kroppen). Sortér efter sortOrder, derefter wearable order.
Tegn base avatar-billedet (/avatars/{sex}/happy.png). Påfør hudtone hvis skinTone ≠ 0.5.
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 devHastighedsgrænser
| Niveau | Grænse |
|---|---|
| Alle apps | 60 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 felter401UnauthorizedUgyldig eller udløbet access token403ForbiddenManglende scope eller ingen adgang til ressourcen404Not FoundRessourcen blev ikke fundet429Too Many RequestsRate limit overskredet — se Retry-After header500Internal Server ErrorUventet serverfejl — prøv igen senereBetingelser 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.