API-referens

DisplayFlows REST API ger dig programmatisk åtkomst till skärmar, platser, media, spellistor och scheman. Alla endpoints är JSON-baserade och authentifieras via session-cookies eller API-nycklar.

Base URL: https://displayflow.app Format: JSON Auth: Cookie eller Bearer

Autentisering

Hantera sessioner, organisationer och API-nycklar. Better Auth hanterar all auth via /api/auth/*.

POST /api/auth/sign-up/email

Skapa konto

Registrera en ny användare med e-post och lösenord. Skickar ett verifieringsmeddelande.

Autentisering: Ingen

Parametrar

email string E-postadress*
password string Lösenord (min 8 tecken)*
name string Visningsnamn*

Kodexempel

curl -X POST https://displayflow.app/api/auth/sign-up/email \
  -H "Content-Type: application/json" \
  -d '{"email":"[email protected]","password":"hemligt123","name":"Anna Andersson"}'

Svar

JSON
{
  "user": {
    "id": "user_abc123",
    "email": "[email protected]",
    "name": "Anna Andersson"
  },
  "session": { "id": "sess_xyz", "expiresAt": "..." }
}
POST /api/auth/sign-in/email

Logga in

Loggar in med e-post och lösenord. Returnerar en session via cookie.

Autentisering: Ingen

Parametrar

email string E-postadress*
password string Lösenord*

Kodexempel

curl -X POST https://displayflow.app/api/auth/sign-in/email \
  -H "Content-Type: application/json" \
  -c cookies.txt \
  -d '{"email":"[email protected]","password":"hemligt123"}'

Svar

JSON
{
  "user": { "id": "user_abc123", "email": "[email protected]" },
  "session": { "id": "sess_xyz", "expiresAt": "..." }
}
GET /api/auth/get-session

Hämta session

Returnerar den aktuella sessionen och användaren om cookie är giltig.

Autentisering: Session

Kodexempel

curl https://displayflow.app/api/auth/get-session \
  -b cookies.txt

Svar

JSON
{
  "user": { "id": "user_abc123", "email": "[email protected]" },
  "session": { "id": "sess_xyz", "expiresAt": "..." }
}
POST /api/auth/sign-out

Logga ut

Invaliderar den aktuella sessionen och rensar cookien.

Autentisering: Session

Kodexempel

curl -X POST https://displayflow.app/api/auth/sign-out \
  -b cookies.txt

Skärmar

Hantera fysiska och virtuella skärmar. Alla endpoints är organisations-scopade.

GET /api/screens

Lista skärmar

Hämtar alla skärmar i din organisation. Accepterar ?limit= och ?offset= (standard 50, max 200).

Autentisering: Session eller API-nyckel

Parametrar

limit number? Antal resultat (max 200)
offset number? Hoppa över resultat

Kodexempel

curl https://displayflow.app/api/screens?limit=50 \
  -H "Authorization: Bearer df_your_api_key"

Svar

JSON
[
  {
    "id": "screen_abc",
    "name": "Restaurang Skärm 1",
    "status": "online",
    "platform": "browser",
    "locationId": "loc_xyz",
    "organizationId": "org_123",
    "lastSeenAt": "2026-08-03T11:00:00.000Z"
  }
]
POST /api/screens

Skapa skärm

Skapar en ny skärm i din organisation. Returnerar 201 vid framgång.

Autentisering: Session

Parametrar

name string Skärmens namn*
organizationId string Organisations-ID*
platform string? Plattform (browser, windows, android-tv, raspberry-pi, samsung-tizen, debian-usb)
locationId string? Plats-ID

Kodexempel

curl -X POST https://displayflow.app/api/screens \
  -H "Content-Type: application/json" \
  -b cookies.txt \
  -d '{"name":"Lobby Skärm","organizationId":"org_123","platform":"browser"}'

Svar

JSON
{
  "id": "screen_def",
  "name": "Lobby Skärm",
  "status": "pending",
  "platform": "browser",
  "organizationId": "org_123"
}
GET /api/screens/:id

Hämta skärm

Hämtar en specifik skärm. Returnerar 404 om skärmen inte finns i din organisation.

Autentisering: Session eller API-nyckel

Kodexempel

curl https://displayflow.app/api/screens/screen_abc \
  -H "Authorization: Bearer df_your_api_key"
PATCH /api/screens/:id

Uppdatera skärm

Uppdaterar en skärms namn, plats eller beskrivning.

Autentisering: Session

Parametrar

name string? Nytt namn
locationId string? Ny plats
description string? Beskrivning

Kodexempel

curl -X PATCH https://displayflow.app/api/screens/screen_abc \
  -H "Content-Type: application/json" \
  -b cookies.txt \
  -d '{"name":"Restaurang Skärm 1"}'
DELETE /api/screens/:id

Ta bort skärm

Tar bort en skärm permanent. Returnerar 204 vid framgång.

Autentisering: Session

Kodexempel

curl -X DELETE https://displayflow.app/api/screens/screen_abc \
  -b cookies.txt
POST /api/screens/:id/rotate-token

Rotera spelartoken

Genererar en ny playerToken för skärmen. Skickar en reload-signal till ansluten enhet.

Autentisering: Session

Kodexempel

curl -X POST https://displayflow.app/api/screens/screen_abc/rotate-token \
  -b cookies.txt

Platser

Hantera platser för att gruppera skärmar fysiskt eller logiskt.

GET /api/locations

Lista platser

Hämtar alla platser i din organisation.

Autentisering: Session eller API-nyckel

Kodexempel

curl https://displayflow.app/api/locations \
  -H "Authorization: Bearer df_your_api_key"

Svar

JSON
[
  {
    "id": "loc_xyz",
    "name": "Restaurang Stockholm",
    "slug": "restaurang-stockholm",
    "organizationId": "org_123"
  }
]
POST /api/locations

Skapa plats

Skapar en ny plats. Slug genereras automatiskt. Returnerar 201.

Autentisering: Session

Parametrar

name string Platsens namn*
organizationId string Organisations-ID*

Kodexempel

curl -X POST https://displayflow.app/api/locations \
  -H "Content-Type: application/json" \
  -b cookies.txt \
  -d '{"name":"Restaurang Göteborg","organizationId":"org_123"}'
DELETE /api/locations/:id

Ta bort plats

Tar bort en plats. Skärmar på platsen flyttas till ingen plats. Returnerar 204.

Autentisering: Session

Kodexempel

curl -X DELETE https://displayflow.app/api/locations/loc_xyz -b cookies.txt

Media

Hantera mediabibliotek: bilder, video och dokument. Stöder presigned uploads till R2.

GET /api/media

Lista media

Hämtar alla mediafiler i din organisation.

Autentisering: Session eller API-nyckel

Kodexempel

curl https://displayflow.app/api/media -H "Authorization: Bearer df_your_api_key"

Svar

JSON
[
  {
    "id": "media_abc",
    "name": "sommarkampanj.png",
    "type": "image",
    "status": "ready",
    "mimeType": "image/png",
    "size": 245678,
    "width": 1920,
    "height": 1080
  }
]
POST /api/media

Skapa media

Skapar en media-post. Om R2 är konfigurerat returneras en presigned URL för direktuppladdning. Returnerar 201.

Autentisering: Session

Parametrar

name string Filnamn*
type string image, video eller document*
organizationId string Organisations-ID*
mimeType string? MIME-typ (t.ex. image/png)
size number? Filstorlek i bytes

Kodexempel

curl -X POST https://displayflow.app/api/media \
  -H "Content-Type: application/json" -b cookies.txt \
  -d '{"name":"bild.png","type":"image","organizationId":"org_123","mimeType":"image/png","size":245678}'

Svar

JSON
{
  "media": {
    "id": "media_abc",
    "name": "bild.png",
    "status": "uploading"
  },
  "presignedUrl": "https://r2.example.com/upload?signature=..."
}
DELETE /api/media/:id

Ta bort media

Tar bort en mediafil och alla dess varianter. Returnerar 204.

Autentisering: Session

Kodexempel

curl -X DELETE https://displayflow.app/api/media/media_abc -b cookies.txt

Spellistor

Hantera spellistor och deras innehåll. Spellistor kan innehålla bilder, video och dokument.

GET /api/playlists

Lista spellistor

Hämtar alla spellistor i din organisation.

Autentisering: Session eller API-nyckel

Kodexempel

curl https://displayflow.app/api/playlists -H "Authorization: Bearer df_your_api_key"

Svar

JSON
[
  {
    "id": "pl_abc",
    "name": "Lunchmeny",
    "status": "active",
    "loop": true,
    "shuffle": false,
    "itemCount": 12
  }
]
POST /api/playlists

Skapa spellista

Skapar en ny spellista. Returnerar 201.

Autentisering: Session

Parametrar

name string Spellistans namn*
organizationId string Organisations-ID*
description string? Beskrivning

Kodexempel

curl -X POST https://displayflow.app/api/playlists \
  -H "Content-Type: application/json" -b cookies.txt \
  -d '{"name":"Kvällsmeny","organizationId":"org_123"}'
DELETE /api/playlists/:id

Ta bort spellista

Tar bort en spellista och alla dess objekt. Returnerar 204.

Autentisering: Session

Kodexempel

curl -X DELETE https://displayflow.app/api/playlists/pl_abc -b cookies.txt

Scheman

Hantera schemaläggning — vilka spellistor som visas på vilka skärmar och när.

GET /api/schedules/playlist/:playlistId

Hämta schema för spellista

Hämtar alla schemaobjekt för en specifik spellista, med populerade skärmnamn.

Autentisering: Session eller API-nyckel

Kodexempel

curl https://displayflow.app/api/schedules/playlist/pl_abc \
  -H "Authorization: Bearer df_your_api_key"

Svar

JSON
[
  {
    "id": "sched_abc",
    "screenId": "screen_abc",
    "screenName": "Restaurang Skärm 1",
    "playlistId": "pl_abc",
    "dayOfWeek": 1,
    "startTime": "08:00",
    "endTime": "12:00"
  }
]
POST /api/schedules

Skapa schema

Skapar ett nytt schemaobjekt. Returnerar 201.

Autentisering: Session

Parametrar

screenId string Skärm-ID*
playlistId string Spelliste-ID*
dayOfWeek number Veckodag (0=söndag, 6=lördag)*
startTime string Starttid (HH:MM)*
endTime string Sluttid (HH:MM)*

Kodexempel

curl -X POST https://displayflow.app/api/schedules \
  -H "Content-Type: application/json" -b cookies.txt \
  -d '{"screenId":"screen_abc","playlistId":"pl_abc","dayOfWeek":1,"startTime":"08:00","endTime":"12:00"}'
DELETE /api/schedules/:id

Ta bort schema

Tar bort ett schemaobjekt. Returnerar 204.

Autentisering: Session

Kodexempel

curl -X DELETE https://displayflow.app/api/schedules/sched_abc -b cookies.txt

Parning

Para ihop fysiska enheter med skärmar via 6-siffriga koder.

POST /api/pairing/start

Starta parning

Genererar en 6-siffrig kod och en playerToken. Koden är giltig i 10 minuter.

Autentisering: Session

Kodexempel

curl -X POST https://displayflow.app/api/pairing/start \
  -H "Content-Type: application/json" -b cookies.txt \
  -d '{"organizationId":"org_123","screenId":"screen_abc"}'

Svar

JSON
{
  "code": "123456",
  "playerToken": "pt_xyz789",
  "expiresAt": "2026-08-03T11:10:00.000Z"
}
POST /api/pairing/check

Kontrollera parningsstatus

Kontrollerar om en parningskod har bekräftats av en enhet.

Autentisering: Session

Parametrar

code string 6-siffrig parningskod*

Kodexempel

curl -X POST https://displayflow.app/api/pairing/check \
  -H "Content-Type: application/json" -b cookies.txt \
  -d '{"code":"123456"}'

Fakturering

Hantera prenumerationer och planer via Stripe.

GET /api/billing/plans

Lista planer

Hämtar tillgängliga abonnemangsplaner. Publik endpoint, ingen auth krävs.

Autentisering: Ingen

Kodexempel

curl https://displayflow.app/api/billing/plans

Svar

JSON
{
  "starter": { "monthly": 23900, "yearly": 229000 },
  "pro": { "monthly": 59900, "yearly": 574000 }
}

Hälsa

Övervaka API:ets hälsa och tjänstestatus.

GET /api/health

Hälsokontroll

Kontrollerar status på databas, auth, lagring och fakturering. Publik endpoint.

Autentisering: Ingen

Kodexempel

curl https://displayflow.app/api/health

Svar

JSON
{
  "status": "ok",
  "timestamp": "2026-08-03T11:00:00.000Z",
  "checks": {
    "database": { "status": "pass" },
    "auth": { "status": "pass" },
    "storage": { "status": "pass" },
    "billing": { "status": "pass" }
  }
}