Thrive Global content API
Microsteps, challenges, courses, podcasts, and journey videos
Microsteps, challenges, courses, podcasts, and journey videos
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/thrive-global-content-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Thrive Global Partner audio experiences Content API
description: 'API for accessing Thrive Global content and features. All content endpoints require a Bearer token obtained via the authentication endpoint.
Response envelopes follow the pattern `{ message, valid, data }` where `data` contains the response payload. Collection endpoints nest items at a resource-specific path (e.g. `data.data.reset.thrive.get.items`).'
version: 1.7.0
contact:
name: Thrive Global
url: https://thriveglobal.com/contact/sales
servers:
- url: https://partners-api.thriveglobal.com
description: Production server
- url: https://partners-api-stag.thriveglobal.com
description: Staging server
tags:
- name: content
description: Microsteps, challenges, courses, podcasts, and journey videos
paths:
/v1/microsteps:
get:
operationId: getDailyMicrosteps
tags:
- content
summary: Get all microsteps with optional client-side filtering
description: Items at `data.data.today.allMicrosteps`. Pagination and filtering are applied client-side by the API.
security:
- BearerAuth: []
parameters:
- name: page
in: query
schema:
type: integer
description: Page number (client-side pagination)
- name: limit
in: query
schema:
type: integer
description: Items per page (client-side pagination)
- name: search
in: query
schema:
type: string
description: Search by title, body, or action text
- name: filter
in: query
schema:
type: string
description: 'JSON filter: {"categories":["Sleep","Food"],"pillars":["mindful eating"]}'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
message:
type: string
valid:
type: boolean
data:
type: object
properties:
data:
type: object
properties:
today:
type: object
properties:
allMicrosteps:
type: array
items:
$ref: '#/components/schemas/MicrostepItem'
pageInfo:
type: object
description: Client-side pagination metadata
properties:
totalCount:
type: integer
currentPage:
type: integer
totalPages:
type: integer
hasNextPage:
type: boolean
hasPreviousPage:
type: boolean
'401':
description: Unauthorized — missing or invalid token
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/v1/microsteps/{id}:
get:
operationId: getMicrostepById
tags:
- content
summary: Get a single microstep by ID
security:
- BearerAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
description: Unique identifier of the microstep (UUID)
example: 550e8400-e29b-41d4-a716-446655440000
responses:
'200':
description: Item retrieved successfully
content:
application/json:
schema:
type: object
properties:
message:
type: string
valid:
type: boolean
example: true
data:
type: object
properties:
data:
type: object
properties:
today:
type: object
properties:
item:
$ref: '#/components/schemas/MicrostepItem'
'401':
description: Unauthorized — missing or invalid token
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Item not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/v1/challenges:
get:
operationId: getAllChallenges
tags:
- content
summary: Get all challenges with daily goals
description: Each challenge includes its full set of daily goals. Located at `data.challenges`.
security:
- BearerAuth: []
responses:
'200':
description: Successfully retrieved challenges
content:
application/json:
schema:
type: object
properties:
valid:
type: boolean
example: true
message:
type: string
example: ''
data:
type: object
properties:
challenges:
type: array
items:
$ref: '#/components/schemas/ChallengeItem'
'401':
description: Unauthorized — missing or invalid token
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/v2/learn:
get:
operationId: getLearningCourses
tags:
- content
summary: Get learning courses with pagination
description: 'Note: uses `pageSize` parameter instead of `limit`.'
security:
- BearerAuth: []
parameters:
- name: page
in: query
schema:
type: integer
default: 1
description: Page number
- name: pageSize
in: query
schema:
type: integer
default: 100
description: 'Items per page (note: uses pageSize, not limit)'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
message:
type: string
valid:
type: boolean
data:
type: object
properties:
data:
type: object
properties:
learnV2:
type: object
properties:
getCourses:
$ref: '#/components/schemas/CourseCollection'
'401':
description: Unauthorized — missing or invalid token
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/v2/learn/{id}:
get:
operationId: getLearningCourseById
tags:
- content
summary: Get a single learning course by ID
security:
- BearerAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: string
description: Course ID (numeric string)
example: '42'
responses:
'200':
description: Item retrieved successfully
content:
application/json:
schema:
type: object
properties:
message:
type: string
valid:
type: boolean
example: true
data:
type: object
properties:
data:
type: object
properties:
learnV2:
type: object
properties:
item:
$ref: '#/components/schemas/CourseItem'
'401':
description: Unauthorized — missing or invalid token
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Item not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/v1/learn:
get:
operationId: getLearningCoursesV1
tags:
- content
summary: Get learning courses (v1, legacy format)
description: Legacy endpoint that returns a different response structure than v2.
security:
- BearerAuth: []
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
message:
type: string
valid:
type: boolean
data:
type: object
properties:
data:
type: object
properties:
learn:
type: object
properties:
thrive:
type: object
properties:
getContent:
type: object
properties:
items:
type: array
items:
type: object
description: V1 learn content items (legacy format)
total:
type: integer
itemsPerPage:
type: integer
page:
type: integer
'401':
description: Unauthorized — missing or invalid token
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/v2/podcasts:
get:
operationId: getThrivePodcasts
tags:
- content
summary: Get all Thrive podcasts with seasons and episodes
security:
- BearerAuth: []
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
message:
type: string
valid:
type: boolean
data:
type: object
properties:
data:
type: object
properties:
learnV2:
type: object
properties:
getPodcasts:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/PodcastItem'
page:
type: integer
pageSize:
type: integer
hasMore:
type: boolean
'401':
description: Unauthorized — missing or invalid token
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/v1/journey/daily-step-videos:
get:
operationId: getDailyStepVideos
tags:
- content
summary: Get daily step videos for Thrive journeys
security:
- BearerAuth: []
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
message:
type: string
valid:
type: boolean
data:
type: object
properties:
data:
type: object
properties:
journeys:
type: object
properties:
getJourneyDailyStepVideos:
type: array
items:
$ref: '#/components/schemas/JourneyDailyStepVideo'
'401':
description: Unauthorized — missing or invalid token
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
components:
schemas:
PodcastEpisode:
type: object
properties:
id:
type: string
title:
type: string
summary:
type:
- string
- 'null'
number:
type: integer
audioUrl:
type:
- string
- 'null'
format: uri
imageUrl:
type:
- string
- 'null'
format: uri
CourseResource:
type: object
properties:
id:
type: string
title:
type: string
summary:
type:
- string
- 'null'
resourceType:
type:
- string
- 'null'
source:
type:
- string
- 'null'
createdAt:
type: string
format: date-time
updatedAt:
type: string
format: date-time
CourseModule:
type: object
properties:
id:
type: string
bookmarked:
type: boolean
byline:
type:
- string
- 'null'
courseID:
type: string
displayName:
type:
- string
- 'null'
hlsVideoLink:
type:
- string
- 'null'
label:
type:
- string
- 'null'
lessonID:
type: string
order:
type: integer
thumbnail:
type:
- string
- 'null'
title:
type: string
type:
type: string
videoLink:
type:
- string
- 'null'
videoURL:
type:
- string
- 'null'
format: uri
description: Absolute video URL
manifestUrl:
type:
- string
- 'null'
format: uri
description: HLS manifest URL (.m3u8)
CourseExpert:
type: object
properties:
id:
type: string
name:
type: string
title:
type:
- string
- 'null'
photoUrl:
type:
- string
- 'null'
bio:
type:
- string
- 'null'
ChallengeGoal:
type: object
properties:
id:
type: string
challengeId:
type: string
day:
type: integer
position:
type: integer
goalType:
type: string
goalSteps:
type:
- integer
- 'null'
goalWater:
type:
- integer
- 'null'
goalActivityMinutes:
type:
- integer
- 'null'
url:
type:
- string
- 'null'
ErrorResponse:
type: object
required:
- message
- valid
properties:
message:
type: string
valid:
type: boolean
example: false
ChallengeItem:
type: object
description: A challenge with its daily goals.
properties:
id:
type: string
name:
type: string
description:
type: string
enabled:
type: boolean
duration:
type: integer
goal:
type: string
theme:
type: string
challenge_type:
type: string
position:
type: integer
goals:
type: array
items:
$ref: '#/components/schemas/ChallengeGoal'
tags:
type: array
items:
$ref: '#/components/schemas/TaxonomyTerm'
description: Tags associated with this challenge. Currently always empty.
conditions:
type: array
items:
$ref: '#/components/schemas/TaxonomyTerm'
description: Health conditions associated with this challenge. Currently always empty.
coreHealthBehaviors:
type: array
items:
type: object
properties:
id:
type: string
name:
type: string
shortName:
type:
- string
- 'null'
description: Core health behaviors associated with this challenge.
MicrostepJourney:
type: object
properties:
name:
type: string
shortName:
type:
- string
- 'null'
description:
type:
- string
- 'null'
image:
type:
- string
- 'null'
imageUrl:
type:
- string
- 'null'
CourseItem:
type: object
description: A learning course with lessons and modules.
required:
- id
- title
properties:
id:
type: string
title:
type: string
uuid:
type: string
format: uuid
subTitle:
type:
- string
- 'null'
about:
type:
- string
- 'null'
thumbnail:
type:
- string
- 'null'
collection:
type:
- string
- 'null'
conditions:
type: array
items:
$ref: '#/components/schemas/TaxonomyTerm'
description: Health conditions associated with this course, as term objects.
featuredSubscriptionIds:
type: array
items:
type: string
seoDescription:
type:
- string
- 'null'
seoTitle:
type:
- string
- 'null'
experts:
type: array
items:
$ref: '#/components/schemas/CourseExpert'
lessons:
type: array
items:
$ref: '#/components/schemas/CourseLesson'
tags:
type: array
items:
$ref: '#/components/schemas/TaxonomyTerm'
description: Tags associated with this course, as term objects.
coreHealthBehaviors:
type: array
items:
$ref: '#/components/schemas/TaxonomyTerm'
description: Core health behaviors associated with this course. Currently always empty.
createdAt:
type: string
format: date-time
updatedAt:
type: string
format: date-time
isFeatured:
type: boolean
description: True when `featuredSubscriptionIds` is non-empty
JourneyDailyStepVideo:
type: object
properties:
id:
type: string
title:
type: string
description:
type:
- string
- 'null'
url:
type: string
format: uri
thumbnailUrl:
type:
- string
- 'null'
format: uri
manifestUrl:
type:
- string
- 'null'
format: uri
description: HLS manifest URL (.m3u8)
tags:
type: array
items:
$ref: '#/components/schemas/TaxonomyTerm'
description: Currently always empty.
conditions:
type: array
items:
$ref: '#/components/schemas/TaxonomyTerm'
description: Currently always empty.
coreHealthBehaviors:
type: array
items:
$ref: '#/components/schemas/TaxonomyTerm'
description: Currently always empty.
PodcastItem:
type: object
description: A podcast with seasons and episodes.
required:
- id
- title
properties:
id:
type: string
title:
type: string
summary:
type:
- string
- 'null'
imageUrl:
type:
- string
- 'null'
format: uri
numberOfSeasons:
type: integer
numberOfEpisodes:
type: integer
seasons:
type: array
items:
$ref: '#/components/schemas/PodcastSeason'
tags:
type: array
items:
$ref: '#/components/schemas/TaxonomyTerm'
description: Tags associated with this podcast, as term objects.
conditions:
type: array
items:
$ref: '#/components/schemas/TaxonomyTerm'
description: Health conditions associated with this podcast. Currently always empty.
coreHealthBehaviors:
type: array
items:
$ref: '#/components/schemas/TaxonomyTerm'
description: Core health behaviors associated with this podcast. Currently always empty.
MicrostepItem:
type: object
description: A small, science-backed daily action.
required:
- id
- title
properties:
id:
type: string
format: uuid
title:
type: string
body:
type:
- string
- 'null'
action:
type:
- string
- 'null'
journeys:
type: array
items:
$ref: '#/components/schemas/MicrostepJourney'
coreHealthBehaviors:
type: array
items:
$ref: '#/components/schemas/MicrostepJourney'
description: Core health behaviors associated with this microstep; contains the same values as `journeys`.
tags:
type: array
items:
$ref: '#/components/schemas/TaxonomyTerm'
description: Tags associated with this microstep, as term objects.
conditions:
type: array
items:
$ref: '#/components/schemas/TaxonomyTerm'
description: Health conditions associated with this microstep. Currently always empty.
createdAt:
type: string
format: date-time
description: Omitted when not available
updatedAt:
type: string
format: date-time
description: Omitted when not available
CourseCollection:
type: object
description: Paginated courses. Located at `data.data.learnV2.getCourses` in the response.
properties:
items:
type: array
items:
$ref: '#/components/schemas/CourseItem'
page:
type: integer
pageSize:
type: integer
hasMore:
type: boolean
PodcastSeason:
type: object
properties:
id:
type: string
title:
type: string
number:
type: integer
summary:
type: string
episodes:
type: array
items:
$ref: '#/components/schemas/PodcastEpisode'
CourseLesson:
type: object
properties:
id:
type: string
title:
type:
- string
- 'null'
moduleIds:
type: array
items:
type: string
modules:
type: array
items:
$ref: '#/components/schemas/CourseModule'
order:
type: integer
resources:
type: array
items:
$ref: '#/components/schemas/CourseResource'
TaxonomyTerm:
type: object
description: One shape for all taxonomy layers (`tags`, `conditions`, `coreHealthBehaviors`). `id` is the durable key — persist this, not `slug`. `slug` is the kebab-case machine key used in query-parameter filters and may change if the term is renamed. `name` is the display string.
required:
- id
- slug
- name
properties:
id:
type:
- string
- 'null'
description: Stable identifier for the term; null where none exists
slug:
type: string
example: sleep
name:
type:
- string
- 'null'
example: Sleep
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: x-api-key
BearerAuth:
type: http
scheme: bearer
bearerFormat: JWT