---
title: "Get one tutorial by slug"
method: GET
path: "/api/v1/public/tutorials/{slug}"
tags: ["Tutorials"]
---

# Get one tutorial by slug

`GET /api/v1/public/tutorials/{slug}`

## Request

- Base URL: `https://firstsales.io`
- URL: `https://firstsales.io/api/v1/public/tutorials/{slug}`
- Auth: none required

Returns a single tutorial's full content (steps, pro tips, FAQs) by its slug. Call listTutorials first to discover valid slugs. Returns 404 (not this operation's 400/500 error shape but the same Error schema) if the slug is unknown. Served from the edge cache with a 1-hour revalidation window, so it carries no per-IP limiter and never answers 429.

## Path parameters

- `slug` string, required

## Query parameters

- `locale` string

## Response `200`

The tutorial.

- object
  - `tutorial` PublicTutorial, required
    - `slug` string, required
    - `title` string, required
    - `summary` string, required
    - `category` string, required
    - `industry` string
    - `difficulty` 'beginner' | 'intermediate' | 'advanced', required
    - `estMinutes` number, required
    - `steps` object[], required
    - `proTips` object[], required
    - `faqs` object[], required

## Other responses

- `400`: Invalid request — bad input, missing field, or malformed value.
- `404`: No tutorial exists for this slug.
- `500`: Unexpected server error.

---

[API](https://skmtc.dev/firstsales/apis/firstsales-public-api.md) · [All operations](https://skmtc.dev/firstsales/apis/firstsales-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/firstsales/apis/firstsales-public-api/revisions/3856191adf12?raw)
