Download OpenAPI specification:
The Fstop API enables developers to build integrations and automations for the Fstop photography business platform. Manage clients, projects, bookings, and galleries programmatically.
Retrieve a list of all bookings. Optionally, filter by project_id.
List of bookings
[- [
- {
- "id": "770e8400-e29b-41d4-a716-446655440000",
- "project": {
- "id": "660e8400-e29b-41d4-a716-446655440000",
- "project_name": "Wedding",
- "project_type": "event",
- "client": {
- "id": "550e8400-e29b-41d4-a716-446655440000",
- "first_name": "John",
- "last_name": "Doe",
- "city": "Cleveland",
- "state": "OH",
- "zip_code": "44122",
- "email": "john.doe@example.com",
- "phone_number": "+12161231234",
- "created_at": "2026-05-21T10:00:00Z"
}, - "created_at": "2026-05-21T10:15:00Z"
}, - "date": "2026-06-15",
- "time": "14:00:00",
- "duration": 480,
- "location": "Downtown Venue",
- "created_at": "2026-05-21T10:30:00Z"
}
]
]Create a new booking for a project.
| project_id required | string <uuid> UUID of the project for this booking |
| date required | string <date> Date of the booking |
| time required | string <time> Time of the booking |
| duration required | integer Booking duration in minutes |
| location required | string <= 20 characters Booking location |
Example booking creation request
{- "project_id": "660e8400-e29b-41d4-a716-446655440000",
- "date": "2026-06-15",
- "time": "14:00:00",
- "duration": 480,
- "location": "Downtown Venue"
}Booking created successfully
{- "id": "770e8400-e29b-41d4-a716-446655440001",
- "project": {
- "id": "660e8400-e29b-41d4-a716-446655440000",
- "project_name": "Wedding",
- "project_type": "event",
- "client": {
- "id": "550e8400-e29b-41d4-a716-446655440000",
- "first_name": "John",
- "last_name": "Doe",
- "city": "Cleveland",
- "state": "OH",
- "zip_code": "44122",
- "email": "john.doe@example.com",
- "phone_number": "+12161231234",
- "created_at": "2026-05-21T10:00:00Z"
}, - "created_at": "2026-05-21T10:15:00Z"
}, - "date": "2026-06-15",
- "time": "14:00:00",
- "duration": 480,
- "location": "Downtown Venue",
- "created_at": "2026-05-21T10:30:00Z"
}Get a specific booking by ID.
| id required | string <uuid> A UUID string identifying this booking. |
Single booking details
{- "id": "770e8400-e29b-41d4-a716-446655440000",
- "project": {
- "id": "660e8400-e29b-41d4-a716-446655440000",
- "project_name": "Wedding",
- "project_type": "event",
- "client": {
- "id": "550e8400-e29b-41d4-a716-446655440000",
- "first_name": "John",
- "last_name": "Doe",
- "city": "Cleveland",
- "state": "OH",
- "zip_code": "44122",
- "email": "john.doe@example.com",
- "phone_number": "+12161231234",
- "created_at": "2026-05-21T10:00:00Z"
}, - "created_at": "2026-05-21T10:15:00Z"
}, - "date": "2026-06-15",
- "time": "14:00:00",
- "duration": 480,
- "location": "Downtown Venue",
- "created_at": "2026-05-21T10:30:00Z"
}Update an existing booking.
| id required | string <uuid> A UUID string identifying this booking. |
| project_id required | string <uuid> UUID of the project for this booking |
| date required | string <date> Date of the booking |
| time required | string <time> Time of the booking |
| duration required | integer Booking duration in minutes |
| location required | string <= 20 characters Booking location |
{- "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
- "date": "2019-08-24",
- "time": "14:15:22Z",
- "duration": 0,
- "location": "string"
}Booking updated successfully
{- "id": "770e8400-e29b-41d4-a716-446655440000",
- "project": {
- "id": "660e8400-e29b-41d4-a716-446655440000",
- "project_name": "Wedding",
- "project_type": "event",
- "client": {
- "id": "550e8400-e29b-41d4-a716-446655440000",
- "first_name": "John",
- "last_name": "Doe",
- "city": "Cleveland",
- "state": "OH",
- "zip_code": "44122",
- "email": "john.doe@example.com",
- "phone_number": "+12161231234",
- "created_at": "2026-05-21T10:00:00Z"
}, - "created_at": "2026-05-21T10:15:00Z"
}, - "date": "2026-06-16",
- "time": "15:00:00",
- "duration": 480,
- "location": "Downtown Venue - Updated",
- "created_at": "2026-05-21T10:30:00Z"
}Partially update an existing booking.
| id required | string <uuid> A UUID string identifying this booking. |
| project_id | string <uuid> UUID of the project for this booking |
| date | string <date> Date of the booking |
| time | string <time> Time of the booking |
| duration | integer Booking duration in minutes |
| location | string <= 20 characters Booking location |
{- "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
- "date": "2019-08-24",
- "time": "14:15:22Z",
- "duration": 0,
- "location": "string"
}{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "project": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "project_name": "string",
- "project_type": "event",
- "client": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "first_name": "string",
- "last_name": "string",
- "city": "string",
- "state": "st",
- "zip_code": "string",
- "email": "user@example.com",
- "phone_number": "string",
- "created_at": "2019-08-24T14:15:22Z"
}, - "created_at": "2019-08-24T14:15:22Z"
}, - "date": "2019-08-24",
- "time": "14:15:22Z",
- "duration": 0,
- "location": "string",
- "created_at": "2019-08-24T14:15:22Z"
}List of clients
[- [
- {
- "id": "550e8400-e29b-41d4-a716-446655440000",
- "first_name": "John",
- "last_name": "Doe",
- "city": "Oxford",
- "state": "OH",
- "zip_code": "45056",
- "email": "john.doe@example.com",
- "phone_number": "+12161231234",
- "created_at": "2026-05-21T10:00:00Z"
}, - {
- "id": "550e8400-e29b-41d4-a716-446655440001",
- "first_name": "Jane",
- "last_name": "Smith",
- "city": "Columbus",
- "state": "OH",
- "zip_code": "43215",
- "email": "jane.smith@example.com",
- "phone_number": "+12161235678",
- "created_at": "2026-05-21T10:05:00Z"
}
]
]Create a new client.
| first_name required | string <= 20 characters Client's first name |
| last_name required | string <= 20 characters Client's last name |
| city required | string <= 20 characters City where client is located |
| state required | string <= 2 characters State abbreviation (e.g., CA, NY) |
| zip_code required | string <= 20 characters Postal code for client's address |
| email required | string <email> Client's email address for contact |
| phone_number required | string Client's phone number |
Example client creation request
{- "first_name": "Alice",
- "last_name": "Johnson",
- "city": "Cincinnati",
- "state": "OH",
- "zip_code": "45202",
- "email": "alice.johnson@example.com",
- "phone_number": "+12161239999"
}Client created successfully
{- "id": "550e8400-e29b-41d4-a716-446655440002",
- "first_name": "Alice",
- "last_name": "Johnson",
- "city": "Cincinnati",
- "state": "OH",
- "zip_code": "45202",
- "email": "alice.johnson@example.com",
- "phone_number": "+12161239999",
- "created_at": "2026-05-21T10:10:00Z"
}Get a specific client by ID.
| id required | string <uuid> A UUID string identifying this client. |
Single client details
{- "id": "550e8400-e29b-41d4-a716-446655440000",
- "first_name": "John",
- "last_name": "Doe",
- "city": "Cleveland",
- "state": "OH",
- "zip_code": "44122",
- "email": "john.doe@example.com",
- "phone_number": "+12161231234",
- "created_at": "2026-05-21T10:00:00Z"
}Update an existing client.
| id required | string <uuid> A UUID string identifying this client. |
| first_name required | string <= 20 characters Client's first name |
| last_name required | string <= 20 characters Client's last name |
| city required | string <= 20 characters City where client is located |
| state required | string <= 2 characters State abbreviation (e.g., CA, NY) |
| zip_code required | string <= 20 characters Postal code for client's address |
| email required | string <email> Client's email address for contact |
| phone_number required | string Client's phone number |
{- "first_name": "string",
- "last_name": "string",
- "city": "string",
- "state": "st",
- "zip_code": "string",
- "email": "user@example.com",
- "phone_number": "string"
}Client updated successfully
{- "id": "550e8400-e29b-41d4-a716-446655440000",
- "first_name": "John",
- "last_name": "Doe Updated",
- "city": "Cleveland",
- "state": "OH",
- "zip_code": "44122",
- "email": "john.updated@example.com",
- "phone_number": "+12161231234",
- "created_at": "2026-05-21T10:00:00Z"
}Partially update an existing client.
| id required | string <uuid> A UUID string identifying this client. |
| first_name | string <= 20 characters Client's first name |
| last_name | string <= 20 characters Client's last name |
| city | string <= 20 characters City where client is located |
| state | string <= 2 characters State abbreviation (e.g., CA, NY) |
| zip_code | string <= 20 characters Postal code for client's address |
string <email> Client's email address for contact | |
| phone_number | string Client's phone number |
{- "first_name": "string",
- "last_name": "string",
- "city": "string",
- "state": "st",
- "zip_code": "string",
- "email": "user@example.com",
- "phone_number": "string"
}{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "first_name": "string",
- "last_name": "string",
- "city": "string",
- "state": "st",
- "zip_code": "string",
- "email": "user@example.com",
- "phone_number": "string",
- "created_at": "2019-08-24T14:15:22Z"
}Retrieve a list of all galleries. Optionally filter by project_id.
List of galleries
[- [
- {
- "id": "880e8400-e29b-41d4-a716-446655440000",
- "project": {
- "id": "660e8400-e29b-41d4-a716-446655440000",
- "project_name": "Wedding",
- "project_type": "event",
- "client": {
- "id": "550e8400-e29b-41d4-a716-446655440000",
- "first_name": "John",
- "last_name": "Doe",
- "city": "Cleveland",
- "state": "OH",
- "zip_code": "44122",
- "email": "john.doe@example.com",
- "phone_number": "+12161231234",
- "created_at": "2026-05-21T10:00:00Z"
}, - "created_at": "2026-05-21T10:15:00Z"
}, - "gallery_name": "Ceremony Photos",
- "picture_count": 125,
- "is_visible": true,
- "created_at": "2026-05-21T10:35:00Z"
}
]
]Create a new gallery for a project.
| project_id required | string <uuid> UUID of the project for this gallery |
| gallery_name required | string <= 50 characters Name of the gallery |
| picture_count required | integer Number of pictures in the gallery |
| is_visible required | boolean Whether the gallery is publicly visible |
| url required | string <uri> URL link to the gallery |
Example gallery creation request
{- "project_id": "660e8400-e29b-41d4-a716-446655440000",
- "gallery_name": "Reception Photos",
- "picture_count": 89,
- "is_visible": true,
}Gallery created successfully
{- "id": "880e8400-e29b-41d4-a716-446655440001",
- "project": {
- "id": "660e8400-e29b-41d4-a716-446655440000",
- "project_name": "Wedding",
- "project_type": "event",
- "client": {
- "id": "550e8400-e29b-41d4-a716-446655440000",
- "first_name": "John",
- "last_name": "Doe",
- "city": "Cleveland",
- "state": "OH",
- "zip_code": "44122",
- "email": "john.doe@example.com",
- "phone_number": "+12161231234",
- "created_at": "2026-05-21T10:00:00Z"
}, - "created_at": "2026-05-21T10:15:00Z"
}, - "gallery_name": "Reception Photos",
- "picture_count": 89,
- "is_visible": true,
- "created_at": "2026-05-21T10:35:00Z"
}Get a specific gallery by ID.
| id required | string <uuid> A UUID string identifying this gallery. |
Single gallery details
{- "id": "880e8400-e29b-41d4-a716-446655440000",
- "project": {
- "id": "660e8400-e29b-41d4-a716-446655440000",
- "project_name": "Wedding",
- "project_type": "event",
- "client": {
- "id": "550e8400-e29b-41d4-a716-446655440000",
- "first_name": "John",
- "last_name": "Doe",
- "city": "Cleveland",
- "state": "OH",
- "zip_code": "44122",
- "email": "john.doe@example.com",
- "phone_number": "+12161231234",
- "created_at": "2026-05-21T10:00:00Z"
}, - "created_at": "2026-05-21T10:15:00Z"
}, - "gallery_name": "Ceremony Photos",
- "picture_count": 125,
- "is_visible": true,
- "created_at": "2026-05-21T10:35:00Z"
}Update an existing gallery.
| id required | string <uuid> A UUID string identifying this gallery. |
| project_id required | string <uuid> UUID of the project for this gallery |
| gallery_name required | string <= 50 characters Name of the gallery |
| picture_count required | integer Number of pictures in the gallery |
| is_visible required | boolean Whether the gallery is publicly visible |
| url required | string <uri> URL link to the gallery |
{- "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
- "gallery_name": "string",
- "picture_count": 0,
- "is_visible": true,
}Gallery updated successfully
{- "id": "880e8400-e29b-41d4-a716-446655440000",
- "project": {
- "id": "660e8400-e29b-41d4-a716-446655440000",
- "project_name": "Wedding",
- "project_type": "event",
- "client": {
- "id": "550e8400-e29b-41d4-a716-446655440000",
- "first_name": "John",
- "last_name": "Doe",
- "city": "Cleveland",
- "state": "OH",
- "zip_code": "44122",
- "email": "john.doe@example.com",
- "phone_number": "+12161231234",
- "created_at": "2026-05-21T10:00:00Z"
}, - "created_at": "2026-05-21T10:15:00Z"
}, - "gallery_name": "Ceremony Photos - Updated",
- "picture_count": 125,
- "is_visible": false,
- "created_at": "2026-05-21T10:35:00Z"
}Partially update an existing gallery.
| id required | string <uuid> A UUID string identifying this gallery. |
| project_id | string <uuid> UUID of the project for this gallery |
| gallery_name | string <= 50 characters Name of the gallery |
| picture_count | integer Number of pictures in the gallery |
| is_visible | boolean Whether the gallery is publicly visible |
| url | string <uri> URL link to the gallery |
{- "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
- "gallery_name": "string",
- "picture_count": 0,
- "is_visible": true,
}{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "booking": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "project": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "project_name": "string",
- "project_type": "event",
- "client": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "first_name": "string",
- "last_name": "string",
- "city": "string",
- "state": "st",
- "zip_code": "string",
- "email": "user@example.com",
- "phone_number": "string",
- "created_at": "2019-08-24T14:15:22Z"
}, - "created_at": "2019-08-24T14:15:22Z"
}, - "date": "2019-08-24",
- "time": "14:15:22Z",
- "duration": 0,
- "location": "string",
- "created_at": "2019-08-24T14:15:22Z"
}, - "gallery_name": "string",
- "picture_count": 0,
- "is_visible": true,
- "created_at": "2019-08-24T14:15:22Z"
}Retrieve a list of all projects. Optionally filter by client_id.
List of projects
[- [
- {
- "id": "660e8400-e29b-41d4-a716-446655440000",
- "project_name": "Wedding",
- "project_type": "event",
- "client": {
- "id": "550e8400-e29b-41d4-a716-446655440000",
- "first_name": "John",
- "last_name": "Doe",
- "city": "Cleveland",
- "state": "OH",
- "zip_code": "44122",
- "email": "john.doe@example.com",
- "phone_number": "+12161231234",
- "created_at": "2026-05-21T10:00:00Z"
}, - "created_at": "2026-05-21T10:15:00Z"
}
]
]Create a new project for a client.
| project_name required | string <= 20 characters Name of the project |
| project_type required | string Enum: "event" "portrait" "party" Type of project (event, portrait, or party)
|
| client_id required | string <uuid> UUID of the client for this project |
Example project creation request
{- "project_name": "Birthday Party",
- "project_type": "party",
- "client_id": "550e8400-e29b-41d4-a716-446655440002"
}Project created successfully
{- "id": "660e8400-e29b-41d4-a716-446655440002",
- "project_name": "Birthday Party",
- "project_type": "party",
- "client": {
- "id": "550e8400-e29b-41d4-a716-446655440002",
- "first_name": "Alice",
- "last_name": "Johnson",
- "city": "Cincinnati",
- "state": "OH",
- "zip_code": "45202",
- "email": "alice.johnson@example.com",
- "phone_number": "+12161239999",
- "created_at": "2026-05-21T10:10:00Z"
}, - "created_at": "2026-05-21T10:25:00Z"
}Get a specific project by ID.
| id required | string <uuid> A UUID string identifying this project. |
Single project details
{- "id": "660e8400-e29b-41d4-a716-446655440000",
- "project_name": "Wedding",
- "project_type": "event",
- "client": {
- "id": "550e8400-e29b-41d4-a716-446655440000",
- "first_name": "John",
- "last_name": "Doe",
- "city": "Cleveland",
- "state": "OH",
- "zip_code": "44122",
- "email": "john.doe@example.com",
- "phone_number": "+12161231234",
- "created_at": "2026-05-21T10:00:00Z"
}, - "created_at": "2026-05-21T10:15:00Z"
}Update an existing project.
| id required | string <uuid> A UUID string identifying this project. |
| project_name required | string <= 20 characters Name of the project |
| project_type required | string Enum: "event" "portrait" "party" Type of project (event, portrait, or party)
|
| client_id required | string <uuid> UUID of the client for this project |
{- "project_name": "string",
- "project_type": "event",
- "client_id": "5b3fa7ba-57d3-4017-a65b-d57dcd2db643"
}Project updated successfully
{- "id": "660e8400-e29b-41d4-a716-446655440000",
- "project_name": "Wedding - Updated",
- "project_type": "event",
- "client": {
- "id": "550e8400-e29b-41d4-a716-446655440000",
- "first_name": "John",
- "last_name": "Doe",
- "city": "Cleveland",
- "state": "OH",
- "zip_code": "44122",
- "email": "john.doe@example.com",
- "phone_number": "+12161231234",
- "created_at": "2026-05-21T10:00:00Z"
}, - "created_at": "2026-05-21T10:15:00Z"
}Partially update an existing project.
| id required | string <uuid> A UUID string identifying this project. |
| project_name | string <= 20 characters Name of the project |
| project_type | string Enum: "event" "portrait" "party" Type of project (event, portrait, or party)
|
| client_id | string <uuid> UUID of the client for this project |
{- "project_name": "string",
- "project_type": "event",
- "client_id": "5b3fa7ba-57d3-4017-a65b-d57dcd2db643"
}{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "project_name": "string",
- "project_type": "event",
- "client": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "first_name": "string",
- "last_name": "string",
- "city": "string",
- "state": "st",
- "zip_code": "string",
- "email": "user@example.com",
- "phone_number": "string",
- "created_at": "2019-08-24T14:15:22Z"
}, - "created_at": "2019-08-24T14:15:22Z"
}Authenticate and obtain access and refresh tokens.
| username required | string |
| password required | string |
{- "username": "string",
- "password": "string"
}{- "access": "string",
- "refresh": "string"
}