Building a guide¶
Guides are interactive, step-by-step instructional content. Like courses, they're packaged and uploaded as a ZIP.
Flow¶
- Create the guide content item.
- Request an upload URL.
- Upload the package.
- Wait for processing.
- Publish.
1. Create the guide¶
curl -X POST https://acme.plusplus.app/public_api/v2/guides \
-H "Authorization: Bearer pp_your_token_here" \
-H "Content-Type: application/json" \
-d '{
"name": "Setting up your dev environment",
"duration_minutes": 20,
"is_hidden": true
}'
{
"data": {
"public_id": "01HXYDBKW5V2H6F3M8R9N0Q2YP",
"name": "Setting up your dev environment",
"package": null,
"is_hidden": true
}
}
2. Request an upload URL¶
curl -X POST https://acme.plusplus.app/public_api/v2/guides/01HXYDBKW5V2H6F3M8R9N0Q2YP/uploads \
-H "Authorization: Bearer pp_your_token_here"
{
"data": {
"upload_id": "upl_guide_abc",
"upload_url": "https://uploads.plusplus.app/guides/...",
"expires_at": "2026-04-29T13:00:00Z"
}
}
3. Upload the package¶
4. Wait for processing¶
curl https://acme.plusplus.app/public_api/v2/guides/01HXYDBKW5V2H6F3M8R9N0Q2YP \
-H "Authorization: Bearer pp_your_token_here"
{
"data": {
"public_id": "01HXYDBKW5V2H6F3M8R9N0Q2YP",
"package": {
"status": "ready",
"section_count": 7
}
}
}
5. Publish¶
curl -X PATCH https://acme.plusplus.app/public_api/v2/guides/01HXYDBKW5V2H6F3M8R9N0Q2YP \
-H "Authorization: Bearer pp_your_token_here" \
-H "Content-Type: application/json" \
-d '{ "is_hidden": false }'
Re-uploading¶
To replace the contents of an existing guide, request a fresh upload URL with POST /guides/{public_id}/uploads and upload again. Existing learner progress against the guide is preserved unless the section structure changes drastically — see the API reference for the exact preservation rules.