Every endpoint of the Tutorializer REST API, generated from the API itself.
All endpoints are relative to https://api.tutorializer.com. Create an API key in your Tutorializer dashboard, then authenticate every request with it.
apiKey — HTTP Basic auth carrying only the API key secret: Authorization: Basic base64(<key secret>).
accessToken — Operator session token issued by the Tutorializer dashboard: Authorization: Token <access token>.
Download the OpenAPI specification for use with your own tooling.
List projects
Lists the projects of your organization. Requires the projects:read scope.
| Status | Meaning |
|---|---|
| 200 | Array of projects |
| 401 | Missing or invalid credentials |
| 403 | API key is missing the projects:read scope |
| 429 | API key rate limit exceeded |
Create a project
Requires the projects:write scope.
| Status | Meaning |
|---|---|
| 200 | The created project |
Get a project
Returns a single project by id. Projects belonging to another organization respond 404. Requires the projects:read scope.
| Name | In | Type | Description |
|---|---|---|---|
| projectIdrequired | path | string |
| Status | Meaning |
|---|---|
| 200 | The project |
| 404 | Not found (or owned by another organization) |
Update a project
Requires the projects:write scope.
| Name | In | Type | Description |
|---|---|---|---|
| projectIdrequired | path | string |
| Status | Meaning |
|---|---|
| 200 | The updated project |
Delete a project
Requires the projects:write scope.
| Name | In | Type | Description |
|---|---|---|---|
| projectIdrequired | path | string |
| Status | Meaning |
|---|---|
| 200 | The deleted project |
List speeches
Lists the synthesized speech clips of a project. Requires the speeches:read scope. Anonymous callers must scope the request to a single projectId.
| Name | In | Type | Description |
|---|---|---|---|
| projectId | query | string | |
| language | query | string |
| Status | Meaning |
|---|---|
| 200 | Array of speeches |
| 401 | Missing or invalid credentials |
| 403 | API key is missing the speeches:read scope |
| 429 | API key rate limit exceeded |
Create a speech
Synthesizes a speech clip (translating and calling ElevenLabs when no url is supplied). Requires the speeches:write scope.
| Status | Meaning |
|---|---|
| 200 | The created speech |
Get a speech
Returns a single speech by id. Speeches belonging to another organization respond 404. Requires the speeches:read scope.
| Name | In | Type | Description |
|---|---|---|---|
| speechIdrequired | path | string |
| Status | Meaning |
|---|---|
| 200 | The speech |
| 404 | Not found (or owned by another organization) |
Update a speech
Requires the speeches:write scope.
| Name | In | Type | Description |
|---|---|---|---|
| speechIdrequired | path | string |
| Status | Meaning |
|---|---|
| 200 | The updated speech |
Delete a speech
Requires the speeches:write scope.
| Name | In | Type | Description |
|---|---|---|---|
| speechIdrequired | path | string |
| Status | Meaning |
|---|---|
| 200 | The deleted speech |
List tutorials
Lists the tutorials of a project. Requires the tutorials:read scope. Anonymous callers must scope the request to a single projectId.
| Name | In | Type | Description |
|---|---|---|---|
| projectId | query | string | |
| fields | query | string | Comma-separated projection of fields to return |
| Status | Meaning |
|---|---|
| 200 | Array of tutorials |
| 401 | Missing or invalid credentials |
| 403 | API key is missing the tutorials:read scope |
| 429 | API key rate limit exceeded |
Create a tutorial
Requires the tutorials:write scope.
| Status | Meaning |
|---|---|
| 200 | The created tutorial |
Get a tutorial
Returns a single tutorial by id. Tutorials belonging to another organization respond 404. Requires the tutorials:read scope.
| Name | In | Type | Description |
|---|---|---|---|
| tutorialIdrequired | path | string |
| Status | Meaning |
|---|---|
| 200 | The tutorial |
| 404 | Not found (or owned by another organization) |
Update a tutorial
Requires the tutorials:write scope.
| Name | In | Type | Description |
|---|---|---|---|
| tutorialIdrequired | path | string |
| Status | Meaning |
|---|---|
| 200 | The updated tutorial |
Delete a tutorial
Requires the tutorials:write scope.
| Name | In | Type | Description |
|---|---|---|---|
| tutorialIdrequired | path | string |
| Status | Meaning |
|---|---|
| 200 | The deleted tutorial |
List videos
Lists the rendered tutorial videos of a project. Requires the videos:read scope. Anonymous callers must scope the request to a single projectId.
| Name | In | Type | Description |
|---|---|---|---|
| projectId | query | string | |
| tutorialId | query | string |
| Status | Meaning |
|---|---|
| 200 | Array of videos |
| 401 | Missing or invalid credentials |
| 403 | API key is missing the videos:read scope |
| 429 | API key rate limit exceeded |
Create a video
Requires the videos:write scope.
| Status | Meaning |
|---|---|
| 200 | The created video |
Get a video
Returns a single video by id. Videos belonging to another organization respond 404. Requires the videos:read scope.
| Name | In | Type | Description |
|---|---|---|---|
| videoIdrequired | path | string |
| Status | Meaning |
|---|---|
| 200 | The video |
| 404 | Not found (or owned by another organization) |
Update a video
Requires the videos:write scope.
| Name | In | Type | Description |
|---|---|---|---|
| videoIdrequired | path | string |
| Status | Meaning |
|---|---|
| 200 | The updated video |
Delete a video
Requires the videos:write scope.
| Name | In | Type | Description |
|---|---|---|---|
| videoIdrequired | path | string |
| Status | Meaning |
|---|---|
| 200 | The deleted video |
List webhook subscriptions
Webhook subscriptions deliver events such as video.created, tutorial.created and project.updated to your server as signed POST requests (X-Tutorializer-Signature: t=<timestamp>,v1=<hex HMAC-SHA256 of "timestamp.body">). An endpoint failing 20 times in a row is disabled automatically. Subscriptions are managed with an operator access token; the secret is only returned once, on create.
| Status | Meaning |
|---|---|
| 200 | Array of webhook subscriptions (without secrets) |
Create a webhook subscription
The response includes the signing secret exactly once — store it; it cannot be retrieved again.
| Field | Type | Description |
|---|---|---|
| projectIdrequired | string | |
| urlrequired | string | |
| events | array (project.created | project.updated | project.deleted | tutorial.created | tutorial.updated | tutorial.deleted | video.created | video.updated | video.deleted | speech.created | speech.updated | speech.deleted) | Empty array subscribes to all events |
| Status | Meaning |
|---|---|
| 200 | The created subscription, including its secret |
Update a webhook subscription
url, events and active are editable; the secret and project are immutable. Re-enabling an auto-disabled endpoint is done by setting active back to true.
| Name | In | Type | Description |
|---|---|---|---|
| webhookSubscriptionIdrequired | path | string |
| Status | Meaning |
|---|---|
| 200 | The updated subscription (without secret) |
Delete a webhook subscription
| Name | In | Type | Description |
|---|---|---|---|
| webhookSubscriptionIdrequired | path | string |
| Status | Meaning |
|---|---|
| 200 | Deleted |