# Tutorials

**URL:** https://heroiclabs.com/docs/hiro/python/tutorials/
**Summary:** Manage tutorials including retrieving, accepting, declining, abandoning, and updating progress.
**Keywords:** tutorials, hiro
**Categories:** hiro, python, tutorials

---



# Tutorials

*The Tutorials system guides players through structured onboarding and learning experiences.* Learn more in the [Tutorials concept guide](../../concepts/tutorials/_index.md).

## Overview

The Tutorials system enables your game to:

* Retrieve player tutorials and current progress.
* Manage tutorial lifecycle (accept, decline, abandon).
* Update progress within tutorials.

## Before You Start

Ensure you have:

* Python project configured with Hiro SDK.
* Nakama system integrated ([guide](../getting-started/_index.md)).

## Working with Tutorials

### Retrieving Tutorials

Get all tutorials along with the current progress step for the player:

```py
tutorial_list = await hiro_client.tutorial_get()
print(tutorial_list)
```

### Accepting a Tutorial

Accept and start a tutorial:

```py
request = TutorialAcceptRequest()
request.id = "tutorial_1"

tutorial = await hiro_client.tutorials_accept(request)
print(tutorial)
```

### Declining a Tutorial

Decline the offer to start a tutorial:

```py
request = TutorialDeclineRequest()
request.id = "tutorial_1"

tutorial = await hiro_client.tutorials_decline(request)
print(tutorial)
```

### Abandoning a Tutorial

Abandon progress on an ongoing tutorial:

```py
request = TutorialAbandonRequest()
request.id = "tutorial_1"

tutorial = await hiro_client.tutorials_abandon(request)
print(tutorial)
```

### Updating Tutorial Progress

Update the current progress step within a tutorial:

```py
request = TutorialUpdateRequest()
request.id = "tutorial_1"
request.step = 1

tutorial_list = await hiro_client.tutorials_update(request)
print(tutorial_list)
```