Slidz.io Public API v1.0
OpenAPI JSON App Console

Slidz.io Public Developer API

Automate your slide deck pipelines, run semantic visual and text search across your enterprise slide library, and seamlessly export custom presentations.

Atomic Deconstruction

Upload `.pptx` presentations to automatically extract, catalog, and index individual slides via background RabbitMQ workers.

🧠

Hybrid AI Search

Query slides with pgvector cosine distance embeddings combined with full-text fuzzy matching.

🔒

Multi-Tenant Isolation

Strict tenant boundaries guaranteed by cryptographic API keys and Spring Security filters.

Authentication

The Slidz.io Public API authenticates requests using API keys. Each API key is bound to your workspace tenant. Include your API key in the X-API-KEY HTTP header.

# Example Request Header
X-API-KEY: slidz_live_9f83a0e1c2b54d89a7f3e1d6c8b4a2f0
⚠️ Keep Your API Key Secret

Never share your API keys in publicly accessible repositories or client-side code. If a key is compromised, immediately revoke it in the Admin Console.

Subscription Tiers & Rate Limits

Public API access is available exclusively for ELITE and ENTERPRISE workspaces. Free and Pro tiers do not include programmatic API access.

Feature / Limit Free Pro Elite Tier Enterprise Tier
Public API Access ❌ Disabled ❌ Disabled ✅ Enabled ✅ Enabled
Rate Limit (Sliding Min) 0 req/min 0 req/min 300 req / min (burst: 50/s) 1,200+ req / min (Custom)
Monthly Call Quota 0 0 250,000 calls / month Unlimited
Max Upload File Size 25 MB (UI only) 50 MB (UI only) 250 MB 500 MB
AI Vector Search ✅ Included ✅ Included + Priority

Rate Limit Headers

Every API response includes standard RFC rate-limiting headers so you can inspect remaining quota in real time:

X-RateLimit-Limit

The maximum number of requests permitted in the current 1-minute window.

X-RateLimit-Remaining

The number of requests left in the active window.

X-RateLimit-Reset

Unix epoch timestamp (seconds) when the rate limit window resets.

Retry-After

Returned with HTTP 429 indicating seconds to wait before retrying.

Presentations API

GET /api/v1/public/presentations
Scope: Read

Search and list presentations in your tenant workspace with pagination and title filters.

Param Type Required Description
q string Optional Filter by presentation title keyword
page integer Optional (0) Zero-based page index
size integer Optional (20) Number of records (max 100)
cURL
curl -X GET "https://api.slidz.io/api/v1/public/presentations?q=Quarterly&size=10" \
  -H "X-API-KEY: slidz_live_your_key_here"
POST /api/v1/public/presentations/upload
Async Job (202 Accepted)

Uploads a PowerPoint (.pptx) file for asynchronous atomic slide deconstruction, thumbnail rendering, and vector indexing.

cURL Multipart Upload
curl -X POST "https://api.slidz.io/api/v1/public/presentations/upload" \
  -H "X-API-KEY: slidz_live_your_key_here" \
  -F "file=@/path/to/pitch-deck.pptx" \
  -F "title=Q3 Product Strategy"
// Response 202 Accepted
{
  "presentationId": "018e69d7-84a1-7c22-9854-3e98126b8e3a",
  "status": "queued",
  "message": "Presentation accepted for asynchronous atomic deconstruction",
  "statusUrl": "/api/v1/public/presentations/018e69d7-84a1-7c22-9854-3e98126b8e3a/status"
}
GET /api/v1/public/presentations/{id}/download
Binary Stream

Download the complete presentation file in .pptx or .pdf format.

cURL
curl -X GET "https://api.slidz.io/api/v1/public/presentations/018e69d7-84a1-7c22-9854-3e98126b8e3a/download?format=pptx" \
  -H "X-API-KEY: slidz_live_your_key_here" \
  --output presentation.pptx

Atomic Slides API

GET /api/v1/public/slides/search
AI pgvector + Fuzzy Search

Performs hybrid vector similarity and text fuzzy search across all approved atomic slides in your company workspace.

cURL
curl -X GET "https://api.slidz.io/api/v1/public/slides/search?q=SaaS%20Revenue%20Growth&limit=5" \
  -H "X-API-KEY: slidz_live_your_key_here"
// Response 200 OK
{
  "query": "SaaS Revenue Growth",
  "totalHits": 1,
  "hits": [
    {
      "slideId": "018e69da-912f-7f11-9a3b-2f588c91104e",
      "presentationId": "018e69d7-84a1-7c22-9854-3e98126b8e3a",
      "title": "Annual Recurring Revenue (ARR) Trajectory",
      "snippet": "ARR grew 140% YoY reaching $25M in ARR across enterprise clients...",
      "thumbnailUrl": "/api/v1/public/slides/018e69da-912f-7f11-9a3b-2f588c91104e/thumbnail",
      "aspectRatio": "16:9",
      "similarityScore": 0.942
    }
  ]
}
GET /api/v1/public/slides/{id}/download
Single Slide PPTX

Download an individual atomic slide as a standalone, fully editable single-slide PowerPoint presentation with its preserved master layout and fonts.

cURL
curl -X GET "https://api.slidz.io/api/v1/public/slides/018e69da-912f-7f11-9a3b-2f588c91104e/download" \
  -H "X-API-KEY: slidz_live_your_key_here" \
  --output single-slide.pptx

Account & Quota Usage

GET /api/v1/public/me

Retrieve your current subscription tier, sliding rate limit, monthly call consumption, and remaining monthly quota.

cURL
curl -X GET "https://api.slidz.io/api/v1/public/me" \
  -H "X-API-KEY: slidz_live_your_key_here"
// Response 200 OK
{
  "tenantId": "018e69d0-12ab-7890-bcde-112233445566",
  "companyName": "Acme Corp",
  "billingTier": "ELITE",
  "rateLimitPerMinute": 300,
  "monthlyQuota": 250000,
  "monthlyUsage": 1284,
  "remainingMonthlyQuota": 248716,
  "maxUploadSizeMb": 250
}

Error Handling

The API returns standard HTTP status codes. In the event of an error, the response body includes an error code and a human-readable message.

Status Meaning Description / Action
400 Bad Request Validation Error Missing required parameters or non-.pptx file payload.
401 Unauthorized Invalid Key Missing or expired API key. Check the X-API-KEY header.
403 Forbidden Plan Restricted Public API access is not enabled on Free or Pro plans. Upgrade to Elite/Enterprise.
404 Not Found Resource Missing The requested presentation or slide ID does not exist in your tenant workspace.
413 Payload Too Large Size Exceeded The uploaded file exceeds the tier limit (250 MB for Elite, 500 MB for Enterprise).
429 Too Many Requests Rate Limit Exceeded You have exceeded the rate limit or monthly call quota. Check Retry-After.