Features
Websites & publishingPortfolio engineMedia & deliveryConservation & fieldworkClient deliveryCoursesCommerce & operationsTeam & workflow
FoundationSolutionsPricing
DocumentationDeveloper APIGuides
About
AboutCommitmentNewsroom
Sign In
ArtInStack

The creative operating system

Product

  • Features overview
  • Websites
  • Portfolio
  • Media
  • Conservation
  • Client delivery
  • Courses
  • Commerce
  • Team
  • Solutions

Resources

  • Guides
  • Software
  • Documentation
  • Developer API
  • Platform foundation
  • Pricing
  • Changelog
  • Roadmap

About

  • About
  • Commitment
  • Newsroom
  • Status
  • Talk to us

Customer login

© 2026 ArtInStack. All rights reserved.

Privacy policyTerms of service

ArtInStack Developer Platform

Build custom integrations, automate workflows, and connect official clients like Lightroom Classic using the ArtInStack HTTP API. Open API reference.

Developer API
  • Overview
  • Authentication
  • OAuth 2.0
  • Personal access tokens
  • Scopes
  • Errors
  • Idempotency
  • API reference
  • Media
  • Portfolios
  • Lightroom Classic
  • Developer settings
Developer API

OAuth 2.0

Authorization Code with PKCE for public clients; authorize in the browser, exchange the code at `/api/oauth/token`, call `/api/v1` with the access token.

Third-party and official clients use OAuth 2.0 Authorization Code + PKCE. Confidential clients with a client_secret are supported for server-side apps registered by workspace owners.

Public client flow (Lightroom)

1. Plugin opens browser → GET /oauth/authorize?client_id=…&code_challenge=…&redirect_uri=…&scope=…
2. User logs in (if needed) → consent screen (scopes + workspace)
3. Redirect to loopback → ?code=…
4. POST /api/oauth/token (code + code_verifier) → access + refresh tokens
5. API calls → Authorization: Bearer aist_at_…

Desktop clients use a loopback redirect (e.g. http://127.0.0.1:54321/callback) registered on the OAuth application. Public clients do not embed a client_secret.

Endpoints

MethodPathRole
GET/oauth/authorizeConsent page (reuses dashboard login when needed)
POST/api/oauth/tokenExchange code or refresh token
POST/api/oauth/revokeRevoke access or refresh token

Platform vs custom clients

TierWho registersDashboard
PlatformArtInStack ops (Directus oauth_clients)User sees app under Connected apps after consent
WorkspaceWorkspace ownerSettings → Developer → OAuth applications

Official Lightroom uses a platform-owned client row. Photographers do not register it themselves.

Refresh

Use the refresh token at /api/oauth/token before the access token expires. Serialize refresh in the client to avoid races during concurrent uploads.