Skip to main content
Try the full guest experience free — 25 photo or video uploads, no card. Event Pass is $29 once, no subscription.See launch pricing →
API v1

API Documentation

Integrate Picsui into your applications. Create events, manage galleries, and automate workflows with our REST API.

API at a glance

REST API

JSON-based

Secure

Bearer token auth

Well-Documented

Every endpoint documented

SDKs

Multiple languages

Getting Started

1

Get your API key

Generate an API key from your dashboard. Keep it secure and never expose it in client-side code.

Email us for a key
2

Base URL

All API requests should be made to:

https://picsui.com/api/v1
3

Authentication

Include your API key in the Authorization header of every request:

Authorization: Bearer YOUR_API_KEY

Endpoints

GET/api/v1/events
List your events
POST/api/v1/events/create
Create an event (requires the write scope)
GET/api/v1/events/{id}/photos
List photos in an event
PATCH/api/v1/photos/{id}
Set a photo's status to approved, rejected or pending (write scope)
GET/api/v1/me
The account the token belongs to
POST/api/v1/devices
Register a device for push notifications
DELETE/api/v1/devices
Unregister a device
DELETE/api/v1/account
Permanently delete the account and its data

Code Examples

Create an Event

// Create an event. Requires an API key with the "write" scope.
const response = await fetch('https://picsui.com/api/v1/events/create', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    name: 'My Wedding Reception',   // 2-120 characters
    eventDate: '2026-06-15',
    moderationEnabled: true,
  })
});

const event = await response.json();

Approve a Photo

// Approve or reject a photo. Requires the "write" scope.
const response = await fetch(
  'https://picsui.com/api/v1/photos/PHOTO_ID',
  {
    method: 'PATCH',
    headers: {
      'Authorization': 'Bearer YOUR_API_KEY',
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({ status: 'approved' })  // approved | rejected | pending
  }
);

List Photos

// List the photos in an event
const response = await fetch(
  'https://picsui.com/api/v1/events/EVENT_ID/photos',
  {
    headers: {
      'Authorization': 'Bearer YOUR_API_KEY',
    }
  }
);

const { photos } = await response.json();

Rate Limits

We do not publish a per-plan rate limit yet. Keep request volume reasonable and cache what you can; if you are planning a high-volume integration, email Support@Picsui.com first so we can agree limits before you build against them.

SDKs & Libraries

🟨

JavaScript/TypeScript

Coming Soon
🐍

Python

Coming Soon
💎

Ruby

Coming Soon
🐘

PHP

Coming Soon

Need Help?

Our developer support team is here to help you integrate Picsui into your applications.