Slides API

Beta

Use the Slides API to access your decks and account data from scripts, integrations or AI tools.

Create and manage API keys from your API key management page.

Authentication

Authorization: Bearer YOUR_API_KEY

REST Base URL

https://api.slides.com

MCP Server URL

https://mcp.slides.com/

Example Request

curl -sS \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.slides.com/v1/user'
GET

/v1/user

Returns the authenticated user profile together with a compact account summary and team details, if the user belongs to a team.

Parameters

No request parameters.

Example Response

{
  "data": {
    "id": 123,
    "username": "alice",
    "name": "Alice Example",
    "email": "[email protected]",
    "description": "...",
    "thumbnail_url": "https://...",
    "website_url": "https://...",
    "twitter_handle": "alice",
    "profile_url": "https://slides.com/alice",
    "account": {
      "type": "pro",
      "billing_period": "monthly"
    },
    "team": null,
    "created_at": "2026-03-01T12:00:00Z",
    "updated_at": "2026-03-05T09:00:00Z"
  }
}
GET

/v1/decks

Returns owned deck summaries ordered by newest first, together with pagination metadata.

Parameters

page
Default 1 Optional

Page number to return.

per_page
Default 20 Optional

Number of decks to return per page, up to a maximum of 100.

Example Response

{
  "data": [
    {
      "id": 456,
      "title": "Quarterly Review",
      "description": "...",
      "url": "https://slides.com/alice/quarterly-review"
    }
  ],
  "meta": {
    "page": 1,
    "per_page": 20,
    "total": 1
  }
}
GET

/v1/decks/:id

Returns the full stored deck payload for one owned deck.

Parameters

id
Required Path parameter

Deck ID to fetch from the request path.

Example Response

{
  "data": {
    "id": 456,
    "title": "Quarterly Review",
    "description": "...",
    "url": "https://slides.com/alice/quarterly-review",
    "urls": {
      "default": "https://slides.com/alice/quarterly-review",
      "fullscreen": "https://slides.com/alice/quarterly-review/fullscreen",
      "edit": "https://slides.com/alice/quarterly-review/edit",
      "present": "https://slides.com/alice/quarterly-review/live"
    },
    "slug": "quarterly-review",
    "visibility": "self",
    "slide_count": 12,
    "notes": "",
    "css_input": "",
    "css_output": "",
    "width": 1280,
    "height": 720,
    "margin": 0.05,
    "transition": "slide",
    "background_transition": "slide",
    "theme_font": "montserrat",
    "theme_color": "white-blue",
    "language": "en",
    "data": "<section>...</section>",
    "created_at": "2026-03-01T12:00:00Z",
    "updated_at": "2026-03-05T09:00:00Z"
  }
}
POST

/v1/decks

read_write API key required

Creates a new deck.

Parameters

title
Default "deck" Optional

JSON body field for the new deck title.

description
Optional

Initial deck description.

width
Optional

Initial deck width in pixels.

height
Optional

Initial deck height in pixels.

data
Optional

Initial reveal.js HTML payload for the deck. Top-level nodes must be <section> elements only.

visibility
Optional

Initial deck visibility. Use all or self, and team only for Team users.

Example Request Body

{
  "title": "Q2 Board Review",
  "description": "Created via API",
  "width": 1440,
  "height": 810,
  "data": "<section>Intro</section>",
  "visibility": "self"
}

Response

Returns the same detailed payload shape as GET /v1/decks/:id. Validation failures return 422.

PATCH

/v1/decks/:id

read_write API key required

Updates one owned deck.

Parameters

id
Required Path parameter

Deck ID to update.

title
Optional

Updated deck title.

description
Optional

Updated deck description.

width
Optional

Updated deck width in pixels.

height
Optional

Updated deck height in pixels.

data
Optional

Updated reveal.js HTML payload for the deck. Top-level nodes must be <section> elements only.

visibility
Optional

Updated deck visibility. Use all or self, and team only for Team users.

Example Request Body

{
  "title": "Q2 Board Review",
  "description": "Updated via API",
  "visibility": "self"
}

Response

Returns the same detailed payload shape as GET /v1/decks/:id. Validation failures return 422.

POST

/v1/decks/:id/trash

read_write API key required

Moves one owned deck to trash without permanently deleting it.

Parameters

id
Required Path parameter

Deck ID to move to trash.

Response

Returns 204 No Content on success.

MCP API

MCP is available at mcp.slides.com with Bearer authentication. The server exposes the same deck operations as the REST API as named tools.

Server URL

https://mcp.slides.com/

Transport

Streamable HTTP MCP

If your MCP client supports remote HTTP servers directly, point it at the full server URL above and send the Bearer header with each request. If your client only supports launching a local MCP process, use a bridge such as mcp-remote.

Claude Desktop Example

{
  "mcpServers": {
    "slides": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote@latest",
        "https://mcp.slides.com/",
        "--header",
        "Authorization: Bearer YOUR_API_KEY"
      ]
    }
  }
}
Tool

list_decks

Returns owned deck summaries together with pagination metadata.

Inputs

page
Default 1 Optional

Page number to return.

per_page
Default 20 Optional

Number of decks to return per page, up to a maximum of 100.

Returns

Structured content with a data array of deck summaries and a meta object containing page, per_page, and total.

Tool

get_deck

Returns the full stored payload for one owned deck.

Inputs

id
Required

Deck ID to fetch.

Returns

Structured content containing the same detailed fields as the REST GET /v1/decks/:id response.

Tool

create_deck

read_write API key required

Creates a new deck.

Inputs

title
Default "deck" Optional

Title for the new deck.

description
Optional

Initial deck description.

width
Optional

Initial deck width in pixels.

height
Optional

Initial deck height in pixels.

data
Optional

Initial reveal.js HTML payload for the deck. Top-level nodes must be <section> elements only.

visibility
Optional

Initial deck visibility. Use all or self, and team only for Team users.

Returns

Structured content containing the same detailed fields as the REST GET /v1/decks/:id response.

Tool

update_deck

read_write API key required

Updates one owned deck.

Inputs

id
Required

Deck ID to update.

title
Optional

Updated deck title.

description
Optional

Updated deck description.

width
Optional

Updated deck width in pixels.

height
Optional

Updated deck height in pixels.

data
Optional

Updated reveal.js HTML payload for the deck. Top-level nodes must be <section> elements only.

visibility
Optional

Updated deck visibility. Use all or self, and team only for Team users.

Returns

Structured content containing the same detailed fields as the REST GET /v1/decks/:id response. Read-only keys and validation failures return MCP tool errors.

Tool

trash_deck

read_write API key required

Moves one owned deck to trash without permanently deleting it.

Inputs

id
Required

Deck ID to move to trash.

Example Structured Content

{
  "id": 456,
  "trashed": true
}