Start Presentation

Create a deck in a space and have the Slides AI write it from content and the text of any fileIds. With export, the finished deck is also saved to the workspace Files. Writing takes up to a few minutes. The work runs asynchronously: poll Get Slides Job until its status is succeeded or failed. Requires permission to add docs to the space. Workspace API keys return 403; use a personal API key or scoped OAuth token.

OAuth scope: api:write.

POST/api/v2/slides/presentations
X-API-Key<token>

Your Agent Serve API key, personal or workspace-scoped. Generate one under Settings, then API Keys. Operations that reject workspace keys say so in their own description.

In: header

Request Body

application/json

Where to create the deck and what it should say.

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://agentserve.valnoraelric.com/api/v2/slides/presentations" \  -H "X-API-Key: YOUR_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "workspaceId": "workspace-123",    "spaceId": "space-123",    "title": "Q3 sales review",    "content": "A review of Q3 sales for the leadership team: wins, misses and next steps.",    "nSlides": 8,    "fileIds": [      "file-456"    ],    "export": "pptx"  }'
{
  "data": {
    "id": "job-123",
    "kind": "generate",
    "status": "queued",
    "progress": {
      "stage": "queued",
      "message": "Waiting to start"
    },
    "workspaceId": "workspace-123",
    "spaceId": "space-123",
    "docId": null,
    "editUrl": null,
    "result": null,
    "error": null,
    "createdAt": "2026-11-02T09:00:00.000Z",
    "updatedAt": "2026-11-02T09:00:00.000Z",
    "completedAt": null
  }
}
{
  "error": {
    "code": "BAD_REQUEST",
    "message": "Invalid request"
  }
}
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Authentication required"
  }
}
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Insufficient workspace permissions",
    "details": {
      "code": "INSUFFICIENT_WORKSPACE_ROLE"
    }
  }
}
{
  "error": {
    "code": "NOT_FOUND",
    "message": "Not found"
  }
}
{
  "error": {
    "code": "PAYLOAD_TOO_LARGE",
    "message": "Request body is too large"
  }
}
{
  "error": {
    "code": "UNSUPPORTED_MEDIA_TYPE",
    "message": "Request body must be sent as application/json"
  }
}
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "API rate limit exceeded",
    "details": {
      "retryAfter": "2026-01-01T00:00:30.000Z"
    }
  }
}
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "Internal server error"
  }
}
{
  "error": {
    "code": "SERVICE_UNAVAILABLE",
    "message": "Service temporarily unavailable"
  }
}