Thinkific Product Publish Request API
Product Publish Request operations
Product Publish Request operations
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/thinkific-product-publish-request-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: Thinkific Admin Bundles Product Publish Request API
description: Thinkific's public API can be used to integrate your application with your Thinkific site.
termsOfService: https://www.thinkific.com/legal/
contact:
email: developers@thinkific.com
version: v1
servers:
- url: https://api.thinkific.com/api/public/v1
security:
- OAuthAccessToken: []
- ApiKey: []
ApiKeySubdomain: []
tags:
- name: Product Publish Request
description: Product Publish Request operations
paths:
/product_publish_requests:
get:
tags:
- Product Publish Request
summary: Get List of unhandled product publish requests
description: Returns a list of unhandled Product Publish Requests.
operationId: getProductPublishRequests
parameters:
- name: page
in: query
description: The page within the collection to fetch
schema:
type: number
default: 1.0
- name: limit
in: query
description: The number of items to be returned
schema:
type: number
default: 25.0
responses:
200:
description: Product Publish Requests response
content:
application/json:
schema:
$ref: '#/components/schemas/GetProductPublishResponse'
403:
$ref: '#/components/responses/ErrorForbiddenAppsNotAvailableResponse'
/product_publish_requests/{id}:
get:
tags:
- Product Publish Request
summary: Get product publish request by ID
description: Returns the Product Publish Request identified by the provided id.
operationId: getProductPublishRequestByID
parameters:
- name: id
in: path
description: ID of the Product Publish Request in the form of an integer.
required: true
schema:
type: number
responses:
200:
description: Product Publish Request success response
content:
application/json:
schema:
$ref: '#/components/schemas/ProductPublishRequest'
403:
$ref: '#/components/responses/ErrorForbiddenAppsNotAvailableResponse'
404:
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorNotFound'
/product_publish_requests/{id}/approve:
post:
tags:
- Product Publish Request
summary: Approves Product Publish Request
description: Approves the Product Publish Request identified by the provided id.
operationId: approvePublishRequest
requestBody:
description: Product Publish Request body
content:
application/json:
schema:
$ref: '#/components/schemas/ProductPublishRequestBody'
parameters:
- name: id
in: path
description: ID of the Product Publish Request in the form of an integer.
required: true
schema:
type: number
responses:
200:
description: Product Publish Request approved
403:
$ref: '#/components/responses/ErrorForbiddenAppsNotAvailableResponse'
404:
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorNotFound'
422:
description: Unprocessable Entity
content:
application/json:
schema:
$ref: '#/components/schemas/UnprocessableEntityError'
example:
- errors:
- user_id: not found
/product_publish_requests/{id}/deny:
post:
tags:
- Product Publish Request
summary: Denies Product Publish Request
description: Denies the Product Publish Request identified by the provided id.
operationId: denyPublicationRequest
requestBody:
description: Product Publish Request body
content:
application/json:
schema:
$ref: '#/components/schemas/ProductPublishRequestBody'
parameters:
- name: id
in: path
description: ID of the Product Publish Request in the form of an integer.
required: true
schema:
type: number
responses:
200:
description: Product Publish Request denied
403:
$ref: '#/components/responses/ErrorForbiddenAppsNotAvailableResponse'
404:
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorNotFound'
422:
description: Unprocessable Entity
content:
application/json:
schema:
$ref: '#/components/schemas/UnprocessableEntityError'
example:
- errors:
- user_id: not found
components:
schemas:
ProductPublishRequest:
required:
- product_id
- requesting_user_id
- status
type: object
properties:
product_id:
type: number
description: The ID pf the Product as an integer.
example: 1.0
status:
type: string
description: The approval status of the Product Publish Request. Can be either 'approved' or 'denied'.
example: approved
response_text:
type: string
description: The text of the response provided by the approver.
example: Wow! Great course!
requesting_user_id:
type: number
description: The ID of the requesting User as an integer.
example: 2.0
responding_user_id:
type: number
description: The ID of the responding User as an integer.
completed_at:
type: string
description: The date/time the Product Publish Request was completed.
created_at:
type: string
description: The date/time the Product Publish Request was created.
updated_at:
type: string
description: The date/time the Product Publish Request was last updated.
ValidationError:
type: object
properties:
field_name:
type: string
description: validation error
Meta:
type: object
properties:
pagination:
$ref: '#/components/schemas/Pagination'
ErrorForbiddenAppsNotAvailable:
type: object
properties:
error:
type: string
description: access forbidden
example:
error: Access to Apps is not available on your plan. Upgrade to gain access
UnprocessableEntityError:
type: object
properties:
errors:
type: array
items:
$ref: '#/components/schemas/ValidationError'
Pagination:
type: object
properties:
current_page:
type: number
description: Current page number
example: 1.0
next_page:
type: number
description: Next page number
example: 2.0
prev_page:
type: number
description: Previous page number
total_pages:
type: number
description: Number of total pages
example: 10.0
total_items:
type: number
description: Number of total items
example: 250.0
entries_info:
type: string
description: Entries info
example: 1-10 of 10
description: Pagination metadata
ProductPublishRequestBody:
required:
- user_id
type: object
properties:
user_id:
type: number
description: user responding for publish request
example: 100
response_text:
type: string
description: approval or declining message
example: Course approved
notify_requester:
type: boolean
description: whether it should notify the user who made the request
example: true
ErrorNotFound:
type: object
properties:
error:
type: string
description: item not found error
example:
error: Record not found.
GetProductPublishResponse:
required:
- items
- meta
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/PromotionResponse'
meta:
$ref: '#/components/schemas/Meta'
PromotionResponse:
type: object
properties:
id:
type: number
description: The ID of the Promotion as an integer.
example: 1.0
name:
type: string
description: The name of the Promotion.
example: A Promo
description:
type: string
description: A description for the Promotion.
example: The promo description
starts_at:
type: string
description: The date and time when the Promotion begins.
format: date-time
example: '2018-01-01T01:01:00Z'
expires_at:
type: string
description: The date and time when the Promotion ends.
format: date-time
example: '2018-01-31T01:01:00Z'
discount_type:
type: string
description: The type of discount. Must be either 'fixed' or 'percentage'.
enum:
- fixed
- percentage
example: fixed
amount:
type: number
description: The amount of the discount. If 'fixed', must be a dollar value. If 'percentage', must be a number greater than 0 and less than or equal to 100.
example: 10.0
coupon_ids:
type: array
description: The coupon ids related to the promotion.
example:
- 1
- 2
- 3
items:
type: number
duration:
type: number
description: The duration for which the Promotion is applied. ** This value only applies to Promotions set on Products that are set as subscriptions or Payment Plans. **
example: 3.0
responses:
ErrorForbiddenAppsNotAvailableResponse:
description: Access Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorForbiddenAppsNotAvailable'
securitySchemes:
OAuthAccessToken:
type: http
scheme: bearer
ApiKey:
type: apiKey
in: header
name: X-Auth-API-Key
description: Used together with ApiKeySubdomain
ApiKeySubdomain:
type: apiKey
in: header
name: X-Auth-Subdomain
description: Used together with ApiKey
externalDocs:
description: Find out more about Thinkifc's API
url: http://developers.thinkific.com/api/api-documentation/