openapi: 3.2.0
info:
title: Beehiiv Webhooks API
version: 1.0.0
description: 'Operations tagged Webhooks across 3 of this provider''s published API definitions: beehiiv-openapi.yml, beehiiv-webhook-events-openapi.yml, beehiiv-webhooks-openapi.json. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.beehiiv.com/v2
description: Default
tags:
- name: Webhooks
paths:
/publications/{publicationId}/webhooks:
post:
operationId: create
summary: 'Create a webhook OAuth Scope: webhooks:write'
description: Create a new webhook for a given publication.
tags:
- Webhooks
parameters:
- name: publicationId
in: path
description: The prefixed ID of the publication object
required: true
schema:
$ref: '#/components/schemas/type_ids_PublicationId'
- name: Authorization
in: header
description: Bearer authentication
required: true
schema:
type: string
responses:
'200':
description: Webhook created
content:
application/json:
schema:
$ref: '#/components/schemas/type_webhooks_WebhookResponse'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/type__Error'
'401':
description: Unauthorized. The API key or OAuth access token is missing, invalid, or expired.
content:
application/json:
schema:
$ref: '#/components/schemas/type__Error'
'404':
description: Resource Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/type__Error'
'429':
description: Rate Limit Exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/type__Error'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/type__Error'
requestBody:
content:
application/json:
schema:
type: object
properties:
url:
type: string
format: uri
description: The webhook URL to send events to.
event_types:
type: array
items:
$ref: '#/components/schemas/type_webhooks_WebhookEventType'
description: The types of events the webhook will receive.
description:
type: string
description: A description of the webhook.
required:
- url
- event_types
get:
operationId: index
summary: 'List webhooks OAuth Scope: webhooks:read'
description: Retrieve all webhooks belonging to a specific publication.
tags:
- Webhooks
parameters:
- name: publicationId
in: path
description: The prefixed ID of the publication object
required: true
schema:
$ref: '#/components/schemas/type_ids_PublicationId'
- name: limit
in: query
description: A limit on the number of objects to be returned. The limit can range between 1 and 100, and the default is 10.
required: false
schema:
type: integer
- name: Authorization
in: header
description: Bearer authentication
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/type_webhooks_IndexWebhooksResponse'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/type__Error'
'401':
description: Unauthorized. The API key or OAuth access token is missing, invalid, or expired.
content:
application/json:
schema:
$ref: '#/components/schemas/type__Error'
'404':
description: Resource Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/type__Error'
'429':
description: Rate Limit Exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/type__Error'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/type__Error'
servers:
- url: https://api.beehiiv.com/v2
description: Default
/publications/{publicationId}/webhooks/{endpointId}:
get:
operationId: show
summary: 'Get webhook OAuth Scope: webhooks:read'
description: Retrieve a specific webhook belonging to a publication.
tags:
- Webhooks
parameters:
- name: publicationId
in: path
description: The prefixed ID of the publication object
required: true
schema:
$ref: '#/components/schemas/type_ids_PublicationId'
- name: endpointId
in: path
description: The prefixed ID of the webhook object
required: true
schema:
$ref: '#/components/schemas/type_ids_EndpointId'
- name: Authorization
in: header
description: Bearer authentication
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/type_webhooks_WebhookResponse'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/type__Error'
'401':
description: Unauthorized. The API key or OAuth access token is missing, invalid, or expired.
content:
application/json:
schema:
$ref: '#/components/schemas/type__Error'
'404':
description: Resource Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/type__Error'
'422':
description: Unprocessable Entity
content:
application/json:
schema:
$ref: '#/components/schemas/type__Error'
'429':
description: Rate Limit Exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/type__Error'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/type__Error'
patch:
operationId: update
summary: 'Update webhook OAuth Scope: webhooks:write'
description: Update a webhook subscription for a publication.
tags:
- Webhooks
parameters:
- name: publicationId
in: path
description: The prefixed ID of the publication object
required: true
schema:
$ref: '#/components/schemas/type_ids_PublicationId'
- name: endpointId
in: path
description: The prefixed ID of the webhook object
required: true
schema:
$ref: '#/components/schemas/type_ids_EndpointId'
- name: Authorization
in: header
description: Bearer authentication
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/type_webhooks_WebhookResponse'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/type__Error'
'401':
description: Unauthorized. The API key or OAuth access token is missing, invalid, or expired.
content:
application/json:
schema:
$ref: '#/components/schemas/type__Error'
'404':
description: Resource Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/type__Error'
'429':
description: Rate Limit Exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/type__Error'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/type__Error'
requestBody:
content:
application/json:
schema:
type: object
properties:
event_types:
type: array
items:
$ref: '#/components/schemas/type_webhooks_WebhookEventType'
description: The types of events the webhook will receive.
description:
type: string
description: A description of the webhook.
delete:
operationId: delete
summary: 'Delete a webhook OAuth Scope: webhooks:write'
description: Delete a webhook subscription from a publication.
tags:
- Webhooks
parameters:
- name: publicationId
in: path
description: The prefixed ID of the publication object
required: true
schema:
$ref: '#/components/schemas/type_ids_PublicationId'
- name: endpointId
in: path
description: The prefixed ID of the webhook object
required: true
schema:
$ref: '#/components/schemas/type_ids_EndpointId'
- name: Authorization
in: header
description: Bearer authentication
required: true
schema:
type: string
responses:
'204':
description: No Content
content:
application/json:
schema:
$ref: '#/components/schemas/type_webhooks_WebhooksDeleteResponse'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/type__Error'
'401':
description: Unauthorized. The API key or OAuth access token is missing, invalid, or expired.
content:
application/json:
schema:
$ref: '#/components/schemas/type__Error'
'404':
description: Resource Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/type__Error'
'429':
description: Rate Limit Exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/type__Error'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/type__Error'
servers:
- url: https://api.beehiiv.com/v2
description: Default
webhooks:
subscribed:
post:
operationId: subscribed
summary: Newsletter List Subscription Subscribed
responses:
'200':
description: Webhook received successfully
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/type_newsletter_list_subscription_NewsletterListSubscription'
tags:
- Webhooks
unsubscribed:
post:
operationId: unsubscribed
summary: Newsletter List Subscription Unsubscribed
responses:
'200':
description: Webhook received successfully
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/type_newsletter_list_subscription_NewsletterListSubscription'
tags:
- Webhooks
paused:
post:
operationId: paused
summary: Subscription Paused
responses:
'200':
description: Webhook received successfully
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/type_subscription_Subscription'
tags:
- Webhooks
resumed:
post:
operationId: resumed
summary: Subscription Resumed
responses:
'200':
description: Webhook received successfully
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/type_subscription_Subscription'
tags:
- Webhooks
episode-published:
post:
operationId: episode-published
summary: Podcast Episode Published
responses:
'200':
description: Webhook received successfully
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/type_podcasts_PodcastEpisode'
tags:
- Webhooks
episode-updated:
post:
operationId: episode-updated
summary: Podcast Episode Updated
responses:
'200':
description: Webhook received successfully
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/type_podcasts_PodcastEpisode'
tags:
- Webhooks
episode-archived:
post:
operationId: episode-archived
summary: Podcast Episode Archived
responses:
'200':
description: Webhook received successfully
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/type_podcasts_PodcastEpisode'
tags:
- Webhooks
episode-deleted:
post:
operationId: episode-deleted
summary: Podcast Episode Deleted
responses:
'200':
description: Webhook received successfully
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/type_podcasts_PodcastEpisode'
tags:
- Webhooks
private-feed-activated:
post:
operationId: private-feed-activated
summary: Podcast Private Feed Activated
responses:
'200':
description: Webhook received successfully
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/type_podcasts_PodcastPrivateFeed'
tags:
- Webhooks
sent:
post:
operationId: sent
summary: Post Sent
responses:
'200':
description: Webhook received successfully
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/type_post_Post'
tags:
- Webhooks
updated:
post:
operationId: updated
summary: Post Updated
responses:
'200':
description: Webhook received successfully
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/type_post_Post'
tags:
- Webhooks
scheduled:
post:
operationId: scheduled
summary: Post Scheduled
responses:
'200':
description: Webhook received successfully
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/type_post_Post'
tags:
- Webhooks
created:
post:
operationId: created
summary: Subscription Created
responses:
'200':
description: Webhook received successfully
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/type_subscription_Subscription'
tags:
- Webhooks
confirmed:
post:
operationId: confirmed
summary: Subscription Confirmed
responses:
'200':
description: Webhook received successfully
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/type_subscription_Subscription'
tags:
- Webhooks
deleted:
post:
operationId: deleted
summary: Subscription Deleted
responses:
'200':
description: Webhook received successfully
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/type_subscription_Subscription'
tags:
- Webhooks
upgraded:
post:
operationId: upgraded
summary: Subscription Upgraded
responses:
'200':
description: Webhook received successfully
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/type_subscription_Subscription'
tags:
- Webhooks
downgraded:
post:
operationId: downgraded
summary: Subscription Downgraded
responses:
'200':
description: Webhook received successfully
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/type_subscription_Subscription'
tags:
- Webhooks
tier-paused:
post:
operationId: tier-paused
summary: Subscription Tier Paused
responses:
'200':
description: Webhook received successfully
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/type_subscription_Subscription'
tags:
- Webhooks
tier-resumed:
post:
operationId: tier-resumed
summary: Subscription Tier Resumed
responses:
'200':
description: Webhook received successfully
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/type_subscription_Subscription'
tags:
- Webhooks
tier-added:
post:
operationId: tier-added
summary: Subscription Tier Created
responses:
'200':
description: Webhook received successfully
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/type_subscription_Subscription'
tags:
- Webhooks
tier-deleted:
post:
operationId: tier-deleted
summary: Subscription Tier Deleted
responses:
'200':
description: Webhook received successfully
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/type_subscription_Subscription'
tags:
- Webhooks
submitted:
post:
operationId: submitted
summary: Survey Response Submitted
responses:
'200':
description: Webhook received successfully
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/type_survey_SurveyResponse'
tags:
- Webhooks
components:
schemas:
type_webhooks_WebhooksDeleteResponse:
type: object
properties:
message:
type: string
title: WebhooksDeleteResponse
type_ids_EndpointId:
type: string
description: The prefixed ID of the endpoint.
title: EndpointId
type_webhooks_WebhookEventType:
type: string
enum:
- post.sent
- post.updated
- subscription.confirmed
- subscription.created
- subscription.downgraded
- subscription.paused
- subscription.resumed
- subscription.tier.paused
- subscription.tier.resumed
- subscription.upgraded
- subscription.tier.created
- subscription.tier.deleted
- subscription.deleted
- newsletter_list_subscription.subscribed
- newsletter_list_subscription.unsubscribed
- newsletter_list_subscription.paused
- newsletter_list_subscription.resumed
- post.scheduled
- survey.response_submitted
- podcasts.episode.published
- podcasts.episode.updated
- podcasts.episode.archived
- podcasts.episode.deleted
- podcasts.private_feed.activated
title: WebhookEventType
type_webhooks_WebhookResponse:
type: object
properties:
data:
$ref: '#/components/schemas/type_webhooks_Webhook'
required:
- data
title: WebhookResponse
type_ids_PublicationId:
type: string
description: The prefixed ID of the publication.
title: PublicationId
type__Error:
type: object
properties:
status:
type: integer
statusText:
type: string
errors:
type: array
items:
$ref: '#/components/schemas/type__ErrorDetail'
required:
- status
- statusText
- errors
description: The top level error response.
title: Error
type_webhooks_Webhook:
type: object
properties:
id:
$ref: '#/components/schemas/type_ids_EndpointId'
description: The prefixed ID for the webhook.
url:
type: string
format: uri
description: The webhook URL to send events to.
created:
type: integer
description: The date the webhook was created. Measured in seconds since the Unix epoch.
updated:
type: integer
description: The date the webhook was last updated. Measured in seconds since the Unix epoch.
event_types:
type: array
items:
$ref: '#/components/schemas/type_webhooks_WebhookEventType'
description: The types of events the webhook will receive.
description:
type: string
description: The user-defined description for the webhook.
required:
- id
- url
- created
- updated
- event_types
- description
title: Webhook
type__ErrorDetail:
type: object
properties:
message:
type: string
code:
type: string
required:
- message
- code
title: ErrorDetail
type_webhooks_IndexWebhooksResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/type_webhooks_Webhook'
required:
- data
title: IndexWebhooksResponse
type_subscription_SubscriptionData:
type: object
properties:
created:
type: integer
description: The time the subscription was created. Measured in seconds since the Unix epoch.
email:
type: string
description: The email address of the subscription.
id:
type: string
description: The prefixed ID of the subscription.
referral_code:
type: string
description: The code associated to this subscriber to refer others. When a new subscription is created with this referral code, credit for the referral goes to this subscription.
referring_site:
type: string
description: The website that the subscriber was referred from.
status:
$ref: '#/components/schemas/type_subscription_SubscriptionDataStatus'
description: The status of the subscription.
subscription_tier:
type: string
description: The tier of the subscription.
subscription_premium_tier_names:
type: array
items:
type: string
description: The names of the premium tiers associated with the subscription.
stripe_customer_id:
type: string
description: The Stripe customer ID associated with the subscription.
utm_campaign:
type: string
description: The acquisition campaign that the subscriber was acquired from.
utm_channel:
type: string
description: The channel that the subscriber was acquired from.
utm_medium:
type: string
description: The medium that the subscriber was acquired from.
utm_source:
type: string
description: The source that the subscriber was acquired from.
custom_fields:
type: array
items:
$ref: '#/components/schemas/type_subscription_CustomFieldValue'
description: An array of custom field values that have been set on the subscription. Each custom field value includes the field name, kind (type), and formatted value.
tags:
type: array
items:
type: string
description: An array of tag names that have been applied to the subscription.
title: SubscriptionData
type_newsletter_list_subscription_NewsletterListSubscriptionStatus:
type: string
enum:
- pending
- active
- inactive
- paused
description: The status of the newsletter list subscription.
title: NewsletterListSubscriptionStatus
type_subscription_Subscription:
type: object
properties:
uid:
type: string
description: The prefixed event ID, unique to each webhook event.
event_timestamp:
type: integer
description: The date the event was created. Measured in seconds since the Unix epoch.
event_type:
type: string
description: The event type.
data:
$ref: '#/components/schemas/type_subscription_SubscriptionData'
title: Subscription
type_subscription_SubscriptionDataStatus:
type: string
enum:
- validating
- invalid
- pending
- active
- inactive
- needs_attention
description: The status of the subscription.
title: SubscriptionDataStatus
type_podcasts_PodcastShowType:
type: string
enum:
- episodic
- serial
description: The type of the podcast.
`episodic` - Episodes can be consumed in any order.
`serial` - Episodes are intended to be consumed in order.
title: PodcastShowType
type_survey_SurveyResponse:
type: object
properties:
uid:
type: string
description: The prefixed event ID, unique to each webhook event.
event_timestamp:
type: integer
description: The date the event was created. Measured in seconds since the Unix epoch.
event_type:
type: string
description: The event type.
data:
$ref: '#/components/schemas/type_survey_SurveyResponseData'
title: SurveyResponse
type_newsletter_list_subscription_NewsletterListSubscriptionData:
type: object
properties:
id:
type: string
description: The prefixed ID of the newsletter list subscription.
list_name:
type: string
description: The name of the newsletter list.
subscription_id:
type: string
description: The prefixed ID of the subscription.
email:
type: string
description: The email address of the subscriber.
status:
$ref: '#/components/schemas/type_newsletter_list_subscription_NewsletterListSubscriptionStatus'
description: The status of the newsletter list subscription.
subscribed_at:
type: integer
description: The time the subscriber was added to the list. Measured in seconds since the Unix epoch.
unsubscribed_at:
type: integer
description: The time the subscriber was removed from the list. Measured in seconds since the Unix epoch.
created:
type: integer
description: The time the newsletter list subscription was created. Measured in seconds since the Unix epoch.
updated:
type: integer
description: The time the newsletter list subscription was last updated. Measured in seconds since the Unix epoch.
required:
- id
- list_name
- subscription_id
- email
- status
- created
- updated
title: NewsletterListSubscriptionData
type_post_PostData:
type: object
properties:
audience:
type: string
description: The audience that the post is available to on the web. Only applicable if the platform is `web` or `both`.
authors:
type: array
items:
type: string
description: An array of author names
content_tags:
type: array
items:
type: string
description: All content tags that were associated with the post.
created:
type: integer
description: The time the post was created. Measured in seconds since the Unix epoch
displayed_date:
type: integer
description: The time displayed in place of the `publish_date`. Measured in seconds since the Unix epoch
id:
type: string
description: The prefixed post id
preview_text:
type: string
description: The email preview text
publish_date:
type: integer
description: The time the post was set to be published. Measured in seconds since the Unix epoch
slug:
type: string
description: The web slug where this post can be accessed.
split_tested:
type: boolean
description: A flag to indicate if a split test was done. Only applicable to email posts.
status:
$ref: '#/components/schemas/type_post_PostStatus'
description: The status of the post.
`draft` - not been scheduled.
`confirmed` - The post will be active after the `scheduled_at`.
`archived` - The post is no longer active.
subject_line:
type: string
description: The email subject line. In cases of A/B Testing, this will be adjusted to the winning subject line.
subtitle:
type: string
description: The subtitle displayed in web views
thumbnail_url:
type: string
description: The URL of the thumbnail. Defaults to the Publication logo if not set.
title:
type: string
description: The title displayed in web views
web_url:
type: string
description: The full URL where this post can be accessed on the web. Only applicable if the platform is `web` or `both`.
platform:
type: string
description: The platform that the post is or will be published to.
meta_default_description:
type: string
description: Meta tag description for the post, called SEO Description in the admin UI
meta_default_title:
type: string
description: Meta tag title for the post, called SEO Title in the admin UI
hidden_from_feed:
type: boolean
description: A flag to indicate if the post is hidden from the website feed.
enforce_gated_content:
type: boolean
description: A flag to indicate if the post enforces gated content for non-subscribers.
email_capture_popup:
type: boolean
description: A flag to indicate if popup email capture is enabled for this post.
required:
- audience
- authors
- content_tags
- created
- id
- preview_text
- slug
- split_tested
- status
- subject_line
- subtitle
- thumbnail_url
- title
- platform
- hidden_from_feed
- enforce_gated_content
- email_capture_popup
title: PostData
type_survey_SurveyResponseQuestion:
type: object
properties:
answer:
type: string
description: The answer provided to the question.
prompt:
type: string
description: The question that was asked.
type:
type: string
description: The type of question asked (e.g. multiple choice).
title: SurveyResponseQuestion
type_podcasts_PodcastShowStatus:
type: string
enum:
- draft
- live
- archived
description: The status of the podcast.
`draft` - No episodes have been published.
`live` - Published and active.
`archived` - The podcast is no longer active.
title: PodcastShowStatus
type_podcasts_PodcastPrivateFeed:
type: object
properties:
uid:
type: string
description: The prefixed event ID, unique to each webhook event.
event_timestamp:
type: integer
description: The date the event was created. Measured in seconds since the Unix epoch.
event_type:
type: string
description: The event type.
data:
$ref: '#/components/schemas/type_podcasts_PodcastPrivateFeedData'
title: PodcastPrivateFeed
type_subscription_CustomFieldKind:
type: string
enum:
- string
- integer
- number
- boolean
- date
- datetime
- list
description: The type of the custom field.
title: CustomFieldKind
type_podcasts_PodcastEpisodeStatus:
type: string
enum:
- draft
- scheduled
- published
- archived
description: The status of the episode.
`draft` - Not yet published.
`scheduled` - Scheduled for future publication.
`published` - Available via web and RSS.
`archived` - No longer available via web or RSS.
title: PodcastEpisodeStatus
type_podcasts_PodcastPrivateFeedData:
type: object
properties:
id:
type: string
description: The prefixed ID of the private feed token.
url:
type: string
description: The personalized private RSS feed URL.
created:
type: integer
description: The time the private feed token was created. Measured in seconds since the Unix epoch.
activated:
type: integer
description: The time the private feed was first fetched by a recognized podcast app. Measured in seconds since the Unix epoch. Null when the feed has not been activated.
revoked:
type: integer
description: The time the private feed token was revoked. Measured in seconds since the Unix epoch. Null when the token has not been revoked.
expires:
type: integer
description: The time the private feed token expires. Measured in seconds since the Unix epoch. Null when the token does not expire.
subscription:
$ref: '#/components/schemas/type_subscription_SubscriptionData'
description: The subscription associated with the private feed token.
show:
$ref: '#/components/schemas/type_podcasts_PodcastShowData'
description: The podcast associated with the private feed token.
required:
- id
- url
- created
- subscription
- show
title: PodcastPrivateFeedData
type_newsletter_list_subscription_NewsletterListSubscription:
type: object
properties:
uid:
type: string
description: The prefixed event ID, unique to each webhook event.
event_timestamp:
type: integer
description: The date the event was created. Measured in seconds since the Unix epoch.
event_type:
type: string
description: The event type.
data:
$ref: '#/components/schemas/type_newsletter_list_subscription_NewsletterListSubscriptionData'
title: NewsletterListSubscription
type_podcasts_PodcastEpisode:
type: object
properties:
uid:
type: string
description: The prefixed event ID, unique to each webhook event.
event_timestamp:
type: integer
description: The date the event was created. Measured in seconds since the Unix epoch.
event_type:
type: string
description: The event type.
data:
$ref: '#/components/schemas/type_podcasts_PodcastEpisodeData'
title: PodcastEpisode
type_survey_SurveyResponseAnswer:
type: object
properties:
answer:
type: string
description: The answer provided to the question.
created:
type: integer
description: The time the answer was created. Measured in seconds since the Unix epoch.
id:
type: integer
description: The ID of the answer.
question_data:
$ref: '#/components/schemas/type_survey_SurveyResponseQuestion'
updated:
type: integer
description: The date the answer was updated. Measured in seconds since the Unix epoch.
title: SurveyResponseAnswer
type_post_PostStatus:
type: string
enum:
- draft
- confirmed
- archived
description: The status of the post.
`draft` - not been scheduled.
`confirmed` - The post will be active after the `scheduled_at`.
`archived` - The post is no longer active.
title: PostStatus
type_podcasts_PodcastEpisodeData:
type: object
properties:
id:
type: string
description: The prefixed ID of the episode.
created:
type: integer
description: The time the episode was created. Measured in seconds since the Unix epoch.
updated:
type: integer
description: The time the episode was last updated. Measured in seconds since the Unix epoch.
title:
type: string
description: The title of the episode.
slug:
type: string
description: The web slug where this episode can be accessed.
publish_date:
type: integer
description: The exact time the system published the episode (when it went live), not the scheduled time the user set for publication. Measured in seconds since the Unix epoch. Null when the episode has not been published.
displayed_date:
type: integer
description: The time displayed in place of the `publish_date`. Measured in seconds since the Unix epoch.
duration:
type: integer
description: The duration of the episode audio in seconds. Null when no completed audio file is available.
description:
type: string
description: A plain-text, truncated version of the episode show notes (max 255 characters).
show_notes:
type: string
description: The full HTML show notes for the episode.
artwork_url:
type: string
description: The URL of the episode artwork. Falls back to the podcast artwork when the episode has none. Empty string when no artwork is set.
status:
$ref: '#/components/schemas/type_podcasts_PodcastEpisodeStatus'
description: The status of the episode.
season_number:
type: integer
description: The season number for the episode, if set.
episode_number:
type: integer
description: The episode number within the season, if set.
audio_url:
type: string
description: The public streaming URL for the episode audio. Null when no completed audio file is available.
transcript_url:
type: string
description: The WebVTT transcript URL for the episode. Null when transcripts are disabled or no completed transcript is available.
show:
$ref: '#/components/schemas/type_podcasts_PodcastShowData'
description: The podcast this episode belongs to.
required:
- id
- created
- updated
- title
- slug
- displayed_date
- description
- show_notes
- artwork_url
- status
- show
title: PodcastEpisodeData
type_post_Post:
type: object
properties:
uid:
type: string
description: The prefixed event ID, unique to each webhook event.
event_timestamp:
type: integer
description: The date the event was created. Measured in seconds since the Unix epoch.
event_type:
type: string
description: The event type.
data:
$ref: '#/components/schemas/type_post_PostData'
title: Post
type_survey_SurveyResponseData:
type: object
properties:
answers:
type: array
items:
$ref: '#/components/schemas/type_survey_SurveyResponseAnswer'
description: An array of answers from the survey response.
created:
type: integer
description: The time the survey response was created. Measured in seconds since the Unix epoch.
id:
type: string
description: The response ID. This is unique to the individual submission.
survey_id:
type: string
description: The ID of the survey that the response was submitted to.
subscription:
$ref: '#/components/schemas/type_subscription_SubscriptionData'
updated:
type: integer
description: The date the survey response was updated. Measured in seconds since the Unix epoch.
title: SurveyResponseData
type_podcasts_PodcastShowData:
type: object
properties:
id:
type: string
description: The prefixed ID of the podcast.
created:
type: integer
description: The time the podcast was created. Measured in seconds since the Unix epoch.
slug:
type: string
description: The URL slug of the podcast.
description:
type: string
description: The description of the podcast.
categories:
type: array
items:
type: string
description: Selected categories for the podcast, ordered by display position.
artwork_url:
type: string
description: The URL of the podcast artwork. Empty string when no artwork is set.
status:
$ref: '#/components/schemas/type_podcasts_PodcastShowStatus'
description: The status of the podcast.
language:
type: string
description: The ISO 639-1 two-letter language code for the podcast.
title:
type: string
description: The title of the podcast.
author:
type: string
description: The author of the podcast.
type:
$ref: '#/components/schemas/type_podcasts_PodcastShowType'
description: The type of the podcast.
imported:
type: boolean
description: Whether the podcast was created via an import.
copyright:
type: string
description: The copyright text for the podcast.
publishing_frequency:
type: integer
description: The most common interval, in whole days, between consecutive published episodes.
website_url:
type: string
description: The website URL associated with the podcast.
explicit:
type: boolean
description: Whether the podcast is marked as explicit.
platform_links:
type: object
additionalProperties:
type: string
description: Platform distribution URLs keyed by platform name. Present only for public podcasts.
required:
- id
- created
- slug
- description
- categories
- artwork_url
- status
- language
- title
- author
- type
- imported
- copyright
- explicit
title: PodcastShowData
type_subscription_CustomFieldValue:
type: object
properties:
name:
type: string
description: The display name of the custom field.
kind:
$ref: '#/components/schemas/type_subscription_CustomFieldKind'
description: The type of the custom field.
value:
type: string
description: 'The formatted value of the custom field. The actual JSON type depends on the kind: - string: the value as a string - integer, number: the value as a number (JSON number type) - boolean: true or false (JSON boolean type) - date: formatted date string (e.g., "Jan 15, 2024") - datetime: formatted date and time string (e.g., "Jan 15, 2024 3:45 PM") - list: comma-separated values as a string'
required:
- name
- kind
title: CustomFieldValue
securitySchemes:
BearerAuthScheme:
type: http
scheme: bearer
x-refined-from:
- beehiiv-openapi.yml
- beehiiv-webhook-events-openapi.yml
- beehiiv-webhooks-openapi.json