Skip to content

Unsplash & Pexels

Beam biedt een ingebouwde stock foto browser. Gebruikers zoeken via de media library, de API proxied de requests naar Unsplash en Pexels.

Dashboard (media library)
→ GET /stock-photos/search?query=...&provider=unsplash&page=1
→ API Worker proxied naar Unsplash/Pexels API
→ Genormaliseerd response (zelfde schema ongeacht provider)
→ Gebruiker selecteert foto
→ POST /stock-photos/download (Unsplash TOS: tracking verplicht)
→ Foto URL opgeslagen als externe media
ParameterTypeVerplichtBeschrijving
querystringJaZoekterm
providerunsplash | pexelsJaBron
pagenumberNeePagina (default: 1)

Response: 20 resultaten per pagina.

{
photos: [{
id: string
provider: 'unsplash' | 'pexels'
width: number
height: number
color: string | null
description: string | null
tinyUrl: string // ~200px (thumbnails)
thumbnailUrl: string // ~400px
regularUrl: string // ~1080px (voor gebruik)
photographer: string
photographerUrl: string
sourceUrl: string // Link naar origineel
downloadLocation?: string // Unsplash only (tracking URL)
}],
total: number
totalPages: number
}

Verplicht voor Unsplash TOS — triggert een download tracking event.

ParameterTypeValidatie
downloadLocationstringMoet beginnen met https://api.unsplash.com/
  • API: https://api.unsplash.com/search/photos
  • Auth: Authorization: Client-ID {UNSPLASH_ACCESS_KEY}
  • TOS vereiste: Download tracking bij elke “download” actie
  • Rate limit: 50 req/uur (demo), 5000 req/uur (productie)
  • Attributie: Fotograafnaam en link worden opgeslagen
  • API: https://api.pexels.com/v1/search
  • Auth: Authorization: {PEXELS_API_KEY}
  • Rate limit: 200 req/uur
  • Attributie: Fotograafnaam en link worden opgeslagen

Bij rate limits (403/429) of API errors:

  • Response bevat error veld met generieke melding
  • Dashboard toont “Geen resultaten gevonden” — geen technische foutmelding
  • Andere provider blijft beschikbaar
VariabeleWaarType
UNSPLASH_ACCESS_KEYAPI WorkerSecret
PEXELS_API_KEYAPI WorkerSecret