Developers

API Documentation

Integrate Studio into your applications with our REST API.

Base URL

https://api-studio.domainedunet.fr

Authentication

All authenticated endpoints require an API key sent via the X-Api-Key header. Each workspace has its own API key, available in your workspace settings.

curl https://api-studio.domainedunet.fr/publications \
  -H "X-Api-Key: sk_studio_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

Endpoints

POST/publications/upload-url

Get upload URL

Returns a signed URL for uploading a PDF file to storage.

Request

{
  "type": "pdf"
}

Response

{
  "uploadUrl": "https://...signed-url...",
  "token": "upload-token",
  "storageKey": "aBcD1234",
  "pdfPath": "{workspaceId}/aBcD1234.pdf",
  "workspaceId": "uuid"
}
POST/publications

Create publication

Creates a publication from an uploaded file.

Request

{
  "title": "My document",
  "storageKey": "aBcD1234",
  "pdfPath": "{workspaceId}/aBcD1234.pdf",
  "sourceType": "pdf"
}

Response

{
  "id": "uuid",
  "slug": "my-document",
  "status": "processing",
  "title": "My document",
  ...
}
GET/publications

List publications

Returns all publications in the workspace.

Response

[
  {
    "id": "uuid",
    "slug": "my-document",
    "title": "My document",
    "status": "ready",
    "page_count": 12,
    ...
  }
]

Structured path (optional)

You can organize files in storage by passing a custom path parameter. Useful for structured content like election documents.

POST /publications/upload-url
{
  "type": "pdf",
  "path": "bretagne/35/melesse-35/municipales-2026/profession-de-foi.pdf"
}

// Response:
{
  "pdfPath": "{workspaceId}/bretagne/35/melesse-35/municipales-2026/profession-de-foi.pdf",
  "storageKey": "aBcD1234",
  ...
}

Public endpoints

These endpoints do not require authentication.

GET/publications/:slug/pdf

Get PDF URL

Returns a signed URL to access the PDF file (valid 1 hour).

Response

{
  "url": "https://...signed-url...(1h)..."
}
GET/publications/:slug/images

Get images

Returns CDN URLs for image-based publications.

Response

{
  "images": ["https://ik.imagekit.io/.../0.img", ...]
}
GET/publications/:slug/download

Download PDF

Redirects to the PDF file for download.

Integration flow

  1. 1Get a signed upload URL
  2. 2Upload your PDF to the signed URL (PUT request)
  3. 3Create the publication with the returned storageKey and pdfPath
  4. 4Use the returned slug to build the public URL
# 1. Get upload URL
curl -X POST https://api-studio.domainedunet.fr/publications/upload-url \
  -H "X-Api-Key: sk_studio_xxx" \
  -H "Content-Type: application/json" \
  -d '{"type": "pdf"}'

# 2. Upload PDF
curl -X PUT "{uploadUrl}" \
  -H "Content-Type: application/pdf" \
  --data-binary @document.pdf

# 3. Create publication
curl -X POST https://api-studio.domainedunet.fr/publications \
  -H "X-Api-Key: sk_studio_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "My document",
    "storageKey": "{storageKey}",
    "pdfPath": "{pdfPath}",
    "sourceType": "pdf"
  }'

# 4. Public URL
# https://studio.domainedunet.fr/p/{slug}

Rate limiting

The API is limited to 100 requests per second per IP address.