Integriere unsere API. Baue Vertrauen auf.

Greife programmatisch auf die hochmoderne Foto-Verifizierungs-Engine von Lumethic zu. Automatisiere Echtheitsprüfungen und schaffe so direkt in deiner Anwendung eine neue Ebene des Vertrauens.

Erste Schritte

Registrieren

Erstelle dein Konto, um sofortigen Zugriff zu erhalten.

Schlüssel generieren

Gehe zu deinem Dashboard, um deinen einzigartigen API-Schlüssel zu erstellen.

Doku lesen

Erkunde unsere interaktive API-Dokumentation, um mit der Integration zu beginnen.

Registrieren und loslegen

Ein API-Schlüssel ist für alle Anfragen erforderlich.

API Overview

Lumethic - Integration API v1.0.0 · 28 endpoints

RESTful API for photo authenticity verification. Build automated integrations with any programming language: photo management systems, DAMs, CMSs, editorial workflows, or AI agents.

Base URL: https://api.lumethic.com

Upload RAW + JPEG pairs
Verify authenticity analysis
Share shareable reports

Authentication

Header: X-API-Key: your_key

Get your API key →

File Formats

RAW: CR2, CR3, ARW, NEF, DNG, RAF, ORF, RW2, PEF, SRW

JPEG: jpg, jpeg

Pricing

Free: 5 verifications/mo

Basic: 50/mo, €3.95

Professional: 1,000/mo, €49.95

Enterprise: volume pricing, SLA

Overage: €0.25 (negotiable at volume). Plans →

Quick Start

# 1. Create a verification
curl -X POST "https://api.lumethic.com/v1/verifications/" \
  -H "X-API-Key: your_api_key" \
  -F "raw=@photo.CR2" -F "image=@photo.jpg"

# 2. Poll for result (every 20s, timeout 10min)
curl "https://api.lumethic.com/v1/verifications/{id}" -H "X-API-Key: your_api_key"

# Response: { status, result: true/false, result_confidence: 0.95 }

Processing runs forensic analyses (RAW integrity, EXIF, sensor patterns, SSIM, histogram, recapture detection). See our whitepaper for details.

For AI Agents & Automated Integrations

Use the OpenAPI 3.1 spec to auto-generate type-safe clients:

openapi-generator generate -i https://api.lumethic.com/openapi.json -g python -o ./client
Workflow: POST /v1/verifications/ → Poll GET /v1/verifications/{id} → Read result & confidence

API Endpoints

Complete reference for all 28 endpoints, grouped by functionality.

Verifications

Create and manage photo authenticity verifications.

13 endpoints
GET/v1/verifications/
Auth

List Verifications

Retrieve a paginated list of photo authenticity verifications for your account.

View Details

Parameters

NameInType
offsetqueryinteger
sizequeryinteger
sort_byquerystring
sort_orderquerystring
searchquerystring
statusquerystring
resultquerystring

✓ Response 200 — Paginated list of verifications

FieldType
items*object[]
total*integer
offset*integer
size*integer
total_pages*integer
▶ Example Response
{
  "items": [
    {
      "id": "550e8400-e29b-41d4-a716-446655440000",
      "status": "...",
      "results": [
        "..."
      ],
      "result": null,
      "result_confidence": null,
      "raw_metadata": null,
      "image_metadata": null,
      "rendition_info": null,
      "rendition_corrected_info": null,
      "raw_photo_hash": null,
      "image_photo_hash": null,
      "image_thumbnail_url": null,
      "name": null,
      "short_code": null,
      "account_id": "550e8400-e29b-41d4-a716-446655440000",
      "updated_at": "2024-01-15T10:30:00Z",
      "created_at": "2024-01-15T10:30:00Z"
    }
  ],
  "total": 0,
  "offset": 0,
  "size": 0,
  "total_pages": 0
}
▶ Error Responses (3)
400Invalid filter or sort parameter
404Not found
422Validation Error
{
  "detail": [
    {
      "loc": [
        "..."
      ],
      "msg": "string",
      "type": "string"
    }
  ]
}
POST/v1/verifications/
Auth

Create Verification

Create a new photo authenticity verification by uploading RAW and JPEG files.

View Details

Request Body (multipart/form-data) *

FieldType
raw*string(binary)
image*string(binary)
attestation_idstring
▶ Example Request
{
  "raw": "<binary file>",
  "image": "<binary file>",
  "attestation_id": null
}

✓ Response 201 — Verification created and queued for processing

FieldType
id*string(uuid)
security_scorenumber
▶ Example Response
{
  "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}
▶ Error Responses (3)
402Quota or budget limit reached
404Not found
422File hash mismatch
GET/v1/verifications/{verification_id}
Auth

Get Verification

Retrieve detailed results for a specific photo verification.

View Details

Parameters

NameInType
verification_id*pathstring

✓ Response 200 — Verification details returned

FieldType
id*string(uuid)
status*"pending" | "queued" | "in_progress" | "completed" | "failed"
results*object[]
result*boolean
result_confidence*number
raw_metadata*object
image_metadata*object
rendition_info*object
rendition_corrected_info*object
raw_photo_hash*string
image_photo_hash*string
image_thumbnail_url*string
name*string
account_id*string(uuid)
updated_at*string(date-time)
created_at*string(date-time)
security_scorenumber
attestation_validatedboolean
device_fingerprint_idstring
camera_fingerprint_idstring
sequence_numberinteger
integrity_scorenumber
jailbreak_indicatorsstring[]
capture_gps_latitudenumber
capture_gps_longitudenumber
▶ Example Response
{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "status": "pending",
  "results": [
    {
      "verificator_id": "550e8400-e29b-41d4-a716-446655440000",
      "verification_id": "550e8400-e29b-41d4-a716-446655440000",
      "details": {},
      "result": true,
      "confidence_score": 0,
      "id": "550e8400-e29b-41d4-a716-446655440000",
      "updated_at": "2024-01-15T10:30:00Z",
      "created_at": "2024-01-15T10:30:00Z"
    }
  ],
  "result": null,
  "result_confidence": null,
  "raw_metadata": null,
  "image_metadata": null,
  "rendition_info": null,
  "rendition_corrected_info": null,
  "raw_photo_hash": null,
  "image_photo_hash": null,
  "image_thumbnail_url": null,
  "name": null,
  "account_id": "550e8400-e29b-41d4-a716-446655440000",
  "updated_at": "2024-01-15T10:30:00Z",
  "created_at": "2024-01-15T10:30:00Z",
  "security_score": null,
  "attestation_validated": false,
  "device_fingerprint_id": null,
  "camera_fingerprint_id": null,
  "sequence_number": null,
  "integrity_score": null,
  "jailbreak_indicators": null,
  "capture_gps_latitude": null,
  "capture_gps_longitude": null
}
▶ Error Responses (2)
404Verification not found
422Validation Error
{
  "detail": [
    {
      "loc": [
        "..."
      ],
      "msg": "string",
      "type": "string"
    }
  ]
}
DELETE/v1/verifications/{verification_id}
Auth

Delete Verification

Delete a verification permanently.

View Details

Parameters

NameInType
verification_id*pathstring

✓ Response 200 — Verification deleted

FieldType
detail*string
▶ Example Response
{
  "detail": "string"
}
▶ Error Responses (3)
403Access denied
404Not found
422Validation Error
{
  "detail": [
    {
      "loc": [
        "..."
      ],
      "msg": "string",
      "type": "string"
    }
  ]
}
GET/v1/verifications/{verification_id}/share
Auth

Get Verification Share

Get current sharing configuration for a verification.

View Details

Parameters

NameInType
verification_id*pathstring

✓ Response 200 — Share settings returned

FieldType
verification_id*string(uuid)
access_type*"restricted" | "anyone_with_link"
share_url*string
invited_emails*string[]
▶ Example Response
{
  "verification_id": "550e8400-e29b-41d4-a716-446655440000",
  "access_type": "restricted",
  "share_url": "string",
  "invited_emails": [
    "string"
  ]
}
▶ Error Responses (3)
403Sharing not available
404Not found
422Validation Error
{
  "detail": [
    {
      "loc": [
        "..."
      ],
      "msg": "string",
      "type": "string"
    }
  ]
}
POST/v1/verifications/{verification_id}/share
Auth

Create Or Update Verification Share

Enable or update sharing settings for a verification.

View Details

Parameters

NameInType
verification_id*pathstring

Request Body (application/json) *

FieldType
access_type*"restricted" | "anyone_with_link"
▶ Example Request
{
  "access_type": "anyone_with_link"
}

✓ Response 200 — Sharing enabled or updated

FieldType
verification_id*string(uuid)
access_type*"restricted" | "anyone_with_link"
share_url*string
invited_emails*string[]
▶ Example Response
{
  "verification_id": "550e8400-e29b-41d4-a716-446655440000",
  "access_type": "restricted",
  "share_url": "string",
  "invited_emails": [
    "string"
  ]
}
▶ Error Responses (3)
403Sharing not available
404Not found
422Validation Error
{
  "detail": [
    {
      "loc": [
        "..."
      ],
      "msg": "string",
      "type": "string"
    }
  ]
}
DELETE/v1/verifications/{verification_id}/share
Auth

Delete Verification Share

Disable sharing for a verification (make it private).

View Details

Parameters

NameInType
verification_id*pathstring

✓ Response 200 — Sharing disabled

FieldType
detail*string
▶ Example Response
{
  "detail": "string"
}
▶ Error Responses (3)
403Sharing not available
404Not found
422Validation Error
{
  "detail": [
    {
      "loc": [
        "..."
      ],
      "msg": "string",
      "type": "string"
    }
  ]
}
POST/v1/verifications/{verification_id}/share/invites
Auth

Add Verification Invite

Invite a specific user to access a shared verification.

View Details

Parameters

NameInType
verification_id*pathstring

Request Body (application/json) *

FieldType
email*string(email)
▶ Example Request
{
  "email": "editor@newspaper.com"
}

✓ Response 200 — User invited

FieldType
email*string
user_exists*boolean
▶ Example Response
{
  "email": "string",
  "user_exists": true
}
▶ Error Responses (4)
400Not shared
403Sharing not available
404Not found
422Validation Error
{
  "detail": [
    {
      "loc": [
        "..."
      ],
      "msg": "string",
      "type": "string"
    }
  ]
}
DELETE/v1/verifications/{verification_id}/share/invites
Auth

Remove Verification Invite

Remove a user's access to a shared verification.

View Details

Parameters

NameInType
verification_id*pathstring

Request Body (application/json) *

FieldType
email*string(email)
▶ Example Request
{
  "email": "editor@newspaper.com"
}

✓ Response 200 — User access revoked

FieldType
detail*string
▶ Example Response
{
  "detail": "string"
}
▶ Error Responses (3)
403Sharing not available
404Not found
422Validation Error
{
  "detail": [
    {
      "loc": [
        "..."
      ],
      "msg": "string",
      "type": "string"
    }
  ]
}
GET/v1/verifications/{verification_id}/analytics/views
Auth

Get Verification View Analytics

Get view analytics for a shared verification.

View Details

Parameters

NameInType
verification_id*pathstring
start_datequerystring
end_datequerystring

✓ Response 200 — View analytics returned

FieldType
total_views*integer
daily_views*object[]
▶ Example Response
{
  "total_views": 0,
  "daily_views": [
    {
      "date": "string",
      "count": 0
    }
  ]
}
▶ Error Responses (3)
400Invalid date format
404Not found
422Validation Error
{
  "detail": [
    {
      "loc": [
        "..."
      ],
      "msg": "string",
      "type": "string"
    }
  ]
}
GET/v1/verifications/{verification_id}/renditions/thumbnail
Auth

Get Verification Thumbnail

Get the thumbnail image for a verification.

View Details

Parameters

NameInType
verification_id*pathstring
▶ Example Response
null

302: Redirect to CDN thumbnail URL

▶ Error Responses (2)
404Not found
422Validation Error
{
  "detail": [
    {
      "loc": [
        "..."
      ],
      "msg": "string",
      "type": "string"
    }
  ]
}
GET/v1/verifications/{verification_id}/renditions/signed/original
Auth

Get Verification Watermarked Image

Download the original JPEG with Lumethic verification watermark.

View Details

Parameters

NameInType
verification_id*pathstring

302: Redirect to pre-signed S3 URL for the watermarked image

307: Redirect to watermarked image URL with verification strip.

▶ Error Responses (2)
404Not found
422Validation Error
{
  "detail": [
    {
      "loc": [
        "..."
      ],
      "msg": "string",
      "type": "string"
    }
  ]
}
GET/v1/verifications/{verification_id}/image
Auth

Get Verification Image

Download the original JPEG image file for a verification.

View Details

Parameters

NameInType
verification_id*pathstring

302: Redirect to pre-signed S3 URL for direct download

307: Redirects to a temporary direct download URL for the JPEG image.

▶ Error Responses (2)
404Not found
422Validation Error
{
  "detail": [
    {
      "loc": [
        "..."
      ],
      "msg": "string",
      "type": "string"
    }
  ]
}

Public Access

Public endpoints without authentication. Perfect for anonymous verifications and accessing shared results.

1 endpoint
GET/v1/public/health
Public

Health Check

Check API health status for monitoring and integration verification.

View Details
▶ Example Response
{}
▶ Error Responses (1)
404Not found

API Keys

Programmatically manage API keys for your account.

3 endpoints
GET/v1/apikeys/
Auth

List Api Keys

List all API keys for your current account.

View Details
▶ Example Response
[
  {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "prefix": "string",
    "account_id": "550e8400-e29b-41d4-a716-446655440000",
    "user_id": "550e8400-e29b-41d4-a716-446655440000",
    "description": null,
    "expires_at": "2024-01-15T10:30:00Z",
    "is_active": true,
    "last_used_at": null,
    "created_at": "2024-01-15T10:30:00Z",
    "updated_at": "2024-01-15T10:30:00Z"
  }
]
▶ Error Responses (1)
422Validation Error
{
  "detail": [
    {
      "loc": [
        "..."
      ],
      "msg": "string",
      "type": "string"
    }
  ]
}
POST/v1/apikeys/
Auth

Create Api Key

Create a new API key for programmatic access to the Lumethic API.

View Details

Request Body (application/json) *

FieldType
descriptionstring
account_id*string(uuid)
expires_in_daysinteger
▶ Example Request
{
  "account_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
  "description": "CI/CD pipeline key",
  "expires_in_days": 90
}

✓ Response 201 — API key created successfully

FieldType
id*string(uuid)
prefix*string
account_id*string(uuid)
user_id*string(uuid)
description*string
expires_at*string(date-time)
created_at*string(date-time)
raw_key*string
▶ Example Response
{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "prefix": "string",
  "account_id": "550e8400-e29b-41d4-a716-446655440000",
  "user_id": "550e8400-e29b-41d4-a716-446655440000",
  "description": null,
  "expires_at": "2024-01-15T10:30:00Z",
  "created_at": "2024-01-15T10:30:00Z",
  "raw_key": "string"
}
▶ Error Responses (2)
403Access denied
422Validation Error
{
  "detail": [
    {
      "loc": [
        "..."
      ],
      "msg": "string",
      "type": "string"
    }
  ]
}
DELETE/v1/apikeys/{key_id}
Auth

Revoke Api Key

Revoke an API key, permanently disabling it.

View Details

Parameters

NameInType
key_id*pathstring(uuid)

204: Key revoked successfully

▶ Error Responses (2)
404API key not found
422Validation Error
{
  "detail": [
    {
      "loc": [
        "..."
      ],
      "msg": "string",
      "type": "string"
    }
  ]
}

Marketplace

Buy and sell verified authentic photos with built-in licensing.

11 endpoints
GET/v1/marketplace/listings
Auth

Get Seller Listings

List all marketplace listings owned by your account.

View Details

Parameters

NameInType
limitqueryinteger
offsetqueryinteger
▶ Example Response
[
  {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "verification_id": "550e8400-e29b-41d4-a716-446655440000",
    "title": "string",
    "description": null,
    "is_active": true,
    "currency": "string",
    "price_personal_cents": null,
    "price_commercial_cents": null,
    "price_editorial_cents": null,
    "price_extended_cents": null,
    "license_terms_personal": null,
    "license_terms_commercial": null,
    "license_terms_editorial": null,
    "license_terms_extended": null,
    "total_sales": 0,
    "total_revenue_cents": 0,
    "created_at": "string",
    "updated_at": "string"
  }
]
▶ Error Responses (2)
404Not found
422Validation Error
{
  "detail": [
    {
      "loc": [
        "..."
      ],
      "msg": "string",
      "type": "string"
    }
  ]
}
POST/v1/marketplace/listings
Auth

Create Listing

Create a marketplace listing for a verified photo.

View Details

Parameters

NameInType
verification_id*querystring(uuid)

Request Body (application/json) *

FieldType
title*string
descriptionstring
currency"usd" | "cad" | "mxn" | "eur" | "gbp" | "chf" | "sek" | "nok" | "dkk" | "pln" | "czk" | "huf" | "ron" | "bgn" | "aud" | "nzd" | "jpy" | "sgd" | "hkd" | "krw" | "cny" | "inr" | "thb" | "myr" | "brl" | "aed" | "zar" | "ils"
price_personal_centsinteger
price_commercial_centsinteger
price_editorial_centsinteger
price_extended_centsinteger
license_terms_personalstring
license_terms_commercialstring
license_terms_editorialstring
license_terms_extendedstring
▶ Example Request
{
  "currency": "usd",
  "description": "Authenticated landscape photo taken with Nikon Z9",
  "license_terms_commercial": "Commercial use in marketing materials",
  "license_terms_editorial": "Editorial use in news and publications",
  "license_terms_extended": "Unlimited commercial use including merchandise",
  "license_terms_personal": "Personal use only, no redistribution",
  "price_commercial_cents": 5000,
  "price_editorial_cents": 2000,
  "price_extended_cents": 10000,
  "price_personal_cents": 1000,
  "title": "Sunset over Lake Zurich"
}

✓ Response 201 — Listing created successfully

FieldType
id*string(uuid)
verification_id*string(uuid)
title*string
description*string
is_active*boolean
currency*string
price_personal_cents*integer
price_commercial_cents*integer
price_editorial_cents*integer
price_extended_cents*integer
license_terms_personal*string
license_terms_commercial*string
license_terms_editorial*string
license_terms_extended*string
total_sales*integer
total_revenue_cents*integer
created_at*string
updated_at*string
▶ Example Response
{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "verification_id": "550e8400-e29b-41d4-a716-446655440000",
  "title": "string",
  "description": null,
  "is_active": true,
  "currency": "string",
  "price_personal_cents": null,
  "price_commercial_cents": null,
  "price_editorial_cents": null,
  "price_extended_cents": null,
  "license_terms_personal": null,
  "license_terms_commercial": null,
  "license_terms_editorial": null,
  "license_terms_extended": null,
  "total_sales": 0,
  "total_revenue_cents": 0,
  "created_at": "string",
  "updated_at": "string"
}
▶ Error Responses (4)
402Plan upgrade required
403Anonymous verification
404Not found
422Validation Error
{
  "detail": [
    {
      "loc": [
        "..."
      ],
      "msg": "string",
      "type": "string"
    }
  ]
}
GET/v1/marketplace/listings/{listing_id}
Public

Get Listing

Get a marketplace listing by ID.

View Details

Parameters

NameInType
listing_id*pathstring(uuid)

✓ Response 200 — Listing returned

FieldType
id*string(uuid)
verification_id*string(uuid)
title*string
description*string
is_active*boolean
currency*string
price_personal_cents*integer
price_commercial_cents*integer
price_editorial_cents*integer
price_extended_cents*integer
license_terms_personal*string
license_terms_commercial*string
license_terms_editorial*string
license_terms_extended*string
total_sales*integer
total_revenue_cents*integer
created_at*string
updated_at*string
▶ Example Response
{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "verification_id": "550e8400-e29b-41d4-a716-446655440000",
  "title": "string",
  "description": null,
  "is_active": true,
  "currency": "string",
  "price_personal_cents": null,
  "price_commercial_cents": null,
  "price_editorial_cents": null,
  "price_extended_cents": null,
  "license_terms_personal": null,
  "license_terms_commercial": null,
  "license_terms_editorial": null,
  "license_terms_extended": null,
  "total_sales": 0,
  "total_revenue_cents": 0,
  "created_at": "string",
  "updated_at": "string"
}
▶ Error Responses (2)
404Not found
422Validation Error
{
  "detail": [
    {
      "loc": [
        "..."
      ],
      "msg": "string",
      "type": "string"
    }
  ]
}
PUT/v1/marketplace/listings/{listing_id}
Auth

Update Listing

Update an existing marketplace listing.

View Details

Parameters

NameInType
listing_id*pathstring(uuid)

Request Body (application/json) *

FieldType
title*string
descriptionstring
currency"usd" | "cad" | "mxn" | "eur" | "gbp" | "chf" | "sek" | "nok" | "dkk" | "pln" | "czk" | "huf" | "ron" | "bgn" | "aud" | "nzd" | "jpy" | "sgd" | "hkd" | "krw" | "cny" | "inr" | "thb" | "myr" | "brl" | "aed" | "zar" | "ils"
price_personal_centsinteger
price_commercial_centsinteger
price_editorial_centsinteger
price_extended_centsinteger
license_terms_personalstring
license_terms_commercialstring
license_terms_editorialstring
license_terms_extendedstring
▶ Example Request
{
  "currency": "usd",
  "description": "Authenticated landscape photo taken with Nikon Z9",
  "license_terms_commercial": "Commercial use in marketing materials",
  "license_terms_editorial": "Editorial use in news and publications",
  "license_terms_extended": "Unlimited commercial use including merchandise",
  "license_terms_personal": "Personal use only, no redistribution",
  "price_commercial_cents": 5000,
  "price_editorial_cents": 2000,
  "price_extended_cents": 10000,
  "price_personal_cents": 1000,
  "title": "Sunset over Lake Zurich"
}

✓ Response 200 — Listing updated successfully

FieldType
id*string(uuid)
verification_id*string(uuid)
title*string
description*string
is_active*boolean
currency*string
price_personal_cents*integer
price_commercial_cents*integer
price_editorial_cents*integer
price_extended_cents*integer
license_terms_personal*string
license_terms_commercial*string
license_terms_editorial*string
license_terms_extended*string
total_sales*integer
total_revenue_cents*integer
created_at*string
updated_at*string
▶ Example Response
{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "verification_id": "550e8400-e29b-41d4-a716-446655440000",
  "title": "string",
  "description": null,
  "is_active": true,
  "currency": "string",
  "price_personal_cents": null,
  "price_commercial_cents": null,
  "price_editorial_cents": null,
  "price_extended_cents": null,
  "license_terms_personal": null,
  "license_terms_commercial": null,
  "license_terms_editorial": null,
  "license_terms_extended": null,
  "total_sales": 0,
  "total_revenue_cents": 0,
  "created_at": "string",
  "updated_at": "string"
}
▶ Error Responses (3)
403Access denied
404Not found
422Validation Error
{
  "detail": [
    {
      "loc": [
        "..."
      ],
      "msg": "string",
      "type": "string"
    }
  ]
}
DELETE/v1/marketplace/listings/{listing_id}
Auth

Deactivate Listing

Deactivate a marketplace listing, removing it from sale.

View Details

Parameters

NameInType
listing_id*pathstring(uuid)

204: Listing deactivated

▶ Error Responses (3)
403Access denied
404Not found
422Validation Error
{
  "detail": [
    {
      "loc": [
        "..."
      ],
      "msg": "string",
      "type": "string"
    }
  ]
}
GET/v1/marketplace/sales
Auth

Get Seller Sales

List all sales (purchases by others) for your marketplace listings.

View Details

Parameters

NameInType
limitqueryinteger
offsetqueryinteger
▶ Example Response
[
  {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "listing_id": "550e8400-e29b-41d4-a716-446655440000",
    "currency": "string",
    "price_cents": 0,
    "license_type": "string",
    "status": "string",
    "download_expires_at": null,
    "created_at": "string"
  }
]
▶ Error Responses (2)
404Not found
422Validation Error
{
  "detail": [
    {
      "loc": [
        "..."
      ],
      "msg": "string",
      "type": "string"
    }
  ]
}
GET/v1/marketplace/listings/{listing_id}/analytics/sales
Auth

Get Listing Sales Analytics

Get sales analytics for a marketplace listing.

View Details

Parameters

NameInType
listing_id*pathstring(uuid)
start_datequerystring
end_datequerystring

✓ Response 200 — Sales analytics returned

FieldType
total_sales*integer
total_revenue_cents*integer
daily_sales*object[]
▶ Example Response
{
  "total_sales": 0,
  "total_revenue_cents": 0,
  "daily_sales": [
    {
      "date": "string",
      "count": 0,
      "revenue_cents": 0
    }
  ]
}
▶ Error Responses (3)
400Invalid date format
404Not found
422Validation Error
{
  "detail": [
    {
      "loc": [
        "..."
      ],
      "msg": "string",
      "type": "string"
    }
  ]
}
POST/v1/marketplace/listings/{listing_id}/purchase
Auth

Initiate Purchase

Start a purchase for a photo listing via Stripe checkout.

View Details

Parameters

NameInType
listing_id*pathstring(uuid)
success_urlquerystring
cancel_urlquerystring

Request Body (application/json) *

FieldType
license_type*"personal" | "commercial" | "editorial" | "extended"
▶ Example Request
{
  "license_type": "commercial"
}

✓ Response 200 — Checkout session created

FieldType
purchase_id*string
checkout_urlstring
▶ Example Response
{
  "purchase_id": "string",
  "checkout_url": null
}
▶ Error Responses (3)
400Invalid price
404Not found
422Validation Error
{
  "detail": [
    {
      "loc": [
        "..."
      ],
      "msg": "string",
      "type": "string"
    }
  ]
}
GET/v1/marketplace/purchases
Auth

Get Buyer Purchases

List all photo licenses you have purchased.

View Details

Parameters

NameInType
limitqueryinteger
offsetqueryinteger
▶ Example Response
[
  {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "listing_id": "550e8400-e29b-41d4-a716-446655440000",
    "currency": "string",
    "price_cents": 0,
    "license_type": "string",
    "status": "string",
    "download_expires_at": null,
    "created_at": "string"
  }
]
▶ Error Responses (2)
404Not found
422Validation Error
{
  "detail": [
    {
      "loc": [
        "..."
      ],
      "msg": "string",
      "type": "string"
    }
  ]
}
GET/v1/marketplace/purchases/{purchase_id}/download
Auth

Download Purchased Image

Download the original high-resolution image for a completed purchase.

View Details

Parameters

NameInType
purchase_id*pathstring(uuid)
▶ Example Response
null
▶ Error Responses (5)
402Payment pending
403Access denied
404Not found
410Download expired
422Validation Error
{
  "detail": [
    {
      "loc": [
        "..."
      ],
      "msg": "string",
      "type": "string"
    }
  ]
}
GET/v1/marketplace/listings/{listing_id}/download
Auth

Download Listing Image

Download the original high-resolution image by listing ID.

View Details

Parameters

NameInType
listing_id*pathstring(uuid)
▶ Example Response
null
▶ Error Responses (4)
403Purchase required
404Not found
410Download expired
422Validation Error
{
  "detail": [
    {
      "loc": [
        "..."
      ],
      "msg": "string",
      "type": "string"
    }
  ]
}

Response Codes

200 Success · 201 Created · 204 Deleted

302/307 Redirect

400 Bad request · 401 Unauthorized · 402 Quota exceeded

403 Forbidden · 404 Not found · 422 Validation error

429 Rate limit exceeded

OpenAPI Specification

Download the complete spec for code generation and API clients.