openapi: 3.1.0
info:
title: API Reference subpackage_advertisement_opportunities subpackage_workspaces API
version: 1.0.0
servers:
- url: https://api.beehiiv.com/v2
tags:
- name: subpackage_workspaces
paths:
/workspaces/identify:
get:
operationId: identify
summary: 'Identify workspace OAuth Scope: identify:read'
description: Retrieve information about the workspace the OAuth or API token is associated with.
tags:
- subpackage_workspaces
parameters:
- name: Authorization
in: header
description: Bearer authentication
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/type_workspaces:WorkspaceIdentifyResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/type_:Error'
'403':
description: Forbidden
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'
/workspaces/publications/by_subscription_email/{email}:
get:
operationId: publications-by-subscription-email
summary: 'Get publications by subscription email OAuth Scope: publications:read'
description: Retrieve all publications in the workspace that have a subscription for the specified email address. The workspace is determined by the provided API key.
tags:
- subpackage_workspaces
parameters:
- name: email
in: path
description: The email address to search for subscriptions
required: true
schema:
type: string
- name: expand
in: query
description: Optionally expand the results by adding additional information.
`subscription` - Returns the full Subscription object for the email address in each publication.
`publication` - Returns the full Publication object instead of just ID and name.
`subscription_custom_fields` - Returns custom field values nested within the subscription object. (Returns the subscription object regardless of whether `subscription` is requested.)
required: false
schema:
type: array
items:
$ref: '#/components/schemas/type_workspaces:PublicationsBySubscriptionEmailRequestExpandItem'
- name: Authorization
in: header
description: Bearer authentication
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/type_workspaces:PublicationsBySubscriptionEmailResponseItem'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/type_:Error'
'401':
description: Unauthorized
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'
components:
schemas:
type_:SubscriptionExpandedSubscriptionTier:
type: string
enum:
- free
- premium
description: The current tier of the subscription.
title: SubscriptionExpandedSubscriptionTier
type_:SubscriptionTags:
type: array
items:
type: string
description: 'Optional list of tags for a subscription. Retrievable by including `expand: [tags]` in the request body.
Max limit of 100 unique tags per publication.'
title: SubscriptionTags
type_:Publication:
type: object
properties:
id:
$ref: '#/components/schemas/type_ids:PublicationId'
description: A unique prefixed id of the publication
name:
type: string
description: The name of the publication
organization_name:
type: string
description: The name of the organization
referral_program_enabled:
type: boolean
description: A boolean field indicating whether the referral program is active for this publication.
created:
type: number
format: double
description: The time that the publication was created. Measured in seconds since the Unix epoch
stats:
$ref: '#/components/schemas/type_:PublicationStats'
required:
- id
- name
- organization_name
- referral_program_enabled
- created
title: Publication
type_:SubscriptionTierList:
type: array
items:
$ref: '#/components/schemas/type_:SubscriptionTierInfo'
description: 'Optional list of tiers for a subscription. Retrievable by including `expand: [subscription_premium_tiers]` in the request body.'
title: SubscriptionTierList
type_workspaces:WorkspaceIdentity:
type: object
properties:
id:
$ref: '#/components/schemas/type_ids:WorkspaceId'
description: The prefixed ID of the workspace.
name:
type: string
description: The name of the workspace.
owner_email:
type: string
description: The email of the owner of the workspace.
required:
- id
- name
- owner_email
title: WorkspaceIdentity
type_workspaces:WorkspaceIdentifyResponse:
type: object
properties:
data:
$ref: '#/components/schemas/type_workspaces:WorkspaceIdentity'
required:
- data
title: WorkspaceIdentifyResponse
type_:SubscriptionExpandedStatus:
type: string
enum:
- validating
- invalid
- pending
- active
- inactive
- needs_attention
- paused
description: The status of the subscription.
`validating` - The email address is being validated.
`invalid` - The email address is invalid.
`pending` - The email address is valid, but the subscription is pending double opt-in.
`active` - The email was valid and the subscription is active.
`inactive` - The subscription was made inactive, possibly due to an unsubscribe.
`needs_attention` - The subscription requires approval or denial.
`paused` - The subscriber has paused their subscription.
title: SubscriptionExpandedStatus
type_:SubscriptionExpandedUtmChannel:
type: string
enum:
- ''
- website
- import
- embed
- api
- referral
- recommendation
- magic_link
- boost
- boost_send
- boost_direct_link
- integration
- product
description: The acquisition channel
title: SubscriptionExpandedUtmChannel
type_:CustomField:
type: object
properties:
name:
type: string
description: The name of the existing custom field
kind:
$ref: '#/components/schemas/type_:CustomFieldType'
description: The type of value being stored in the custom field.
value:
$ref: '#/components/schemas/type_:CustomFieldDataType'
description: The value stored for the subscription
title: CustomField
type_:AverageOpenRate:
oneOf:
- type: number
format: double
- type: boolean
description: The publications historical average open rate
title: AverageOpenRate
type_:TotalUniqueOpens:
oneOf:
- type: integer
- type: boolean
description: Total number of uniquely opened emails. Only counts the first open for each subscriber.
title: TotalUniqueOpens
type_:SubscriptionStats:
type: object
properties:
emails_received:
type: integer
description: The total number of emails that have been sent to this subscriber
open_rate:
type: number
format: double
description: The percentage of emails that the subscriber has opened
click_through_rate:
type: number
format: double
description: The percentage of emails that the subscriber has clicked a link in
description: 'Optional list of stats for a subscription. Retrievable by including `expand: [stats]` in the request body.'
title: SubscriptionStats
type_:SubscriptionCustomFieldList:
type: array
items:
$ref: '#/components/schemas/type_:CustomField'
description: 'Optional list of custom fields for a subscription. Retrievable by including `expand: [custom_field]` in the request body.'
title: SubscriptionCustomFieldList
type_:AverageClickRate:
oneOf:
- type: number
format: double
- type: boolean
description: The publications historical average click through rate
title: AverageClickRate
type_:ErrorDetail:
type: object
properties:
message:
type: string
code:
type: string
required:
- message
- code
title: ErrorDetail
type_:TotalClicks:
oneOf:
- type: integer
- type: boolean
description: The total number of links clicked from emails.
title: TotalClicks
type_:CustomFieldDataType:
oneOf:
- type: string
- type: number
format: double
- type: boolean
- type: array
items:
type: string
title: CustomFieldDataType
type_:Subscription:
type: object
properties:
id:
$ref: '#/components/schemas/type_ids:SubscriptionId'
description: The prefixed subscription id
email:
type: string
format: email
status:
$ref: '#/components/schemas/type_:SubscriptionExpandedStatus'
description: The status of the subscription.
`validating` - The email address is being validated.
`invalid` - The email address is invalid.
`pending` - The email address is valid, but the subscription is pending double opt-in.
`active` - The email was valid and the subscription is active.
`inactive` - The subscription was made inactive, possibly due to an unsubscribe.
`needs_attention` - The subscription requires approval or denial.
created:
type: integer
description: The date the subscription was created. Measured in seconds since the Unix epoch
subscription_tier:
$ref: '#/components/schemas/type_:SubscriptionExpandedSubscriptionTier'
description: The current tier of the subscription.
subscription_premium_tier_names:
type: array
items:
type: string
description: The current premium tiers of the subscription. Empty if the subscriber is not associated with any premium tiers.
utm_source:
type: string
description: The acquisition source; where the subscriber came from
utm_medium:
type: string
description: The acquisition medium; how the subscriber got to your publication
utm_channel:
$ref: '#/components/schemas/type_:SubscriptionExpandedUtmChannel'
description: The acquisition channel
utm_campaign:
type: string
description: The acquisition campaign
utm_term:
type: string
description: The acquisition term; typically the keyword or search term
utm_content:
type: string
description: The acquisition content; typically used for A/B testing or ad variations
referring_site:
type: string
description: The website that the subscriber was referred from
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.
subscription_premium_tiers:
$ref: '#/components/schemas/type_:SubscriptionTierList'
custom_fields:
$ref: '#/components/schemas/type_:SubscriptionCustomFieldList'
tags:
$ref: '#/components/schemas/type_:SubscriptionTags'
stats:
$ref: '#/components/schemas/type_:SubscriptionStats'
newsletter_list_ids:
type: array
items:
type: string
description: The prefixed IDs of the newsletter lists this subscription is actively subscribed to. Requires `expand[]=newsletter_lists`. Beta
required:
- id
- email
- status
- created
- subscription_tier
- subscription_premium_tier_names
- utm_source
- utm_medium
- utm_channel
- utm_campaign
- utm_term
- utm_content
- referring_site
- referral_code
description: The subscription object
title: Subscription
type_:ActiveSubscriptionCount:
oneOf:
- type: integer
- type: boolean
description: Total number of active free and premium subscriptions
title: ActiveSubscriptionCount
type_ids:PublicationId:
type: string
description: The prefixed ID of the publication.
title: PublicationId
type_:CustomFieldType:
type: string
enum:
- string
- integer
- boolean
- date
- datetime
- list
- double
description: The type of value being stored in the custom field.
title: CustomFieldType
type_:SubscriptionTierInfoStatus:
type: string
enum:
- active
- archived
description: Returns whether or not the tier has any active prices.
title: SubscriptionTierInfoStatus
type_workspaces:PublicationsBySubscriptionEmailRequestExpandItem:
type: string
enum:
- subscription
- publication
- subscription_custom_fields
title: PublicationsBySubscriptionEmailRequestExpandItem
type_ids:WorkspaceId:
type: string
description: The prefixed ID of the workspace.
title: WorkspaceId
type_:PublicationStats:
type: object
properties:
active_subscriptions:
$ref: '#/components/schemas/type_:ActiveSubscriptionCount'
description: Total number of active free and premium subscriptions
active_premium_subscriptions:
$ref: '#/components/schemas/type_:ActivePremiumSubscriptionCount'
description: Total number of active premium/paid subscriptions
active_free_subscriptions:
$ref: '#/components/schemas/type_:ActiveFreeSubscriptionCount'
description: Total number of active free subscriptions
average_open_rate:
$ref: '#/components/schemas/type_:AverageOpenRate'
description: The publications historical average open rate
average_click_rate:
$ref: '#/components/schemas/type_:AverageClickRate'
description: The publications historical average click through rate
total_sent:
$ref: '#/components/schemas/type_:TotalEmailsSent'
description: Total number of emails sent
total_unique_opened:
$ref: '#/components/schemas/type_:TotalUniqueOpens'
description: Total number of uniquely opened emails. Only counts the first open for each subscriber.
total_clicked:
$ref: '#/components/schemas/type_:TotalClicks'
description: The total number of links clicked from emails.
description: "Optional list of stats for a publication. Retrievable by including an `expand` array in the publication request body. Add `\"stats\"` to the array to retrieve all, or add individual stats (prefaced with `stat_`) to only retrieve specific ones.\n\nExamples:\n{\n \"expand\": [\"stats\"]\n}\n\n{\n \"expand\": [\"stat_active_subscriptions\", \"stat_average_click_rate\"]\n}"
title: PublicationStats
type_ids:SubscriptionId:
type: string
description: The prefixed ID of the subscription.
title: SubscriptionId
type_:SubscriptionTierInfo:
type: object
properties:
id:
$ref: '#/components/schemas/type_ids:TierId'
name:
type: string
status:
$ref: '#/components/schemas/type_:SubscriptionTierInfoStatus'
description: Returns whether or not the tier has any active prices.
required:
- id
- name
- status
title: SubscriptionTierInfo
type_:ActiveFreeSubscriptionCount:
oneOf:
- type: integer
- type: boolean
description: Total number of active free subscriptions
title: ActiveFreeSubscriptionCount
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_workspaces:PublicationsBySubscriptionEmailResponseItem:
type: object
properties:
publication_id:
$ref: '#/components/schemas/type_ids:PublicationId'
description: The prefixed ID of the publication
publication_name:
type: string
description: The name of the publication
subscription_id:
$ref: '#/components/schemas/type_ids:SubscriptionId'
description: The prefixed ID of the subscription matching the email address for this publication
status:
$ref: '#/components/schemas/type_:SubscriptionExpandedStatus'
description: The status of the subscription matching the email address for this publication
publication:
$ref: '#/components/schemas/type_:Publication'
description: The full Publication object. Only present when `expand` includes `publication`.
subscription:
$ref: '#/components/schemas/type_:Subscription'
description: The Subscription object matching the email address for this publication. Only present when `expand` includes `subscription` or `subscription_custom_fields`.
required:
- publication_id
- publication_name
- subscription_id
- status
title: PublicationsBySubscriptionEmailResponseItem
type_:TotalEmailsSent:
oneOf:
- type: integer
- type: boolean
description: Total number of emails sent
title: TotalEmailsSent
type_ids:TierId:
type: string
description: The prefixed ID of the tier.
title: TierId
type_:ActivePremiumSubscriptionCount:
oneOf:
- type: integer
- type: boolean
description: Total number of active premium/paid subscriptions
title: ActivePremiumSubscriptionCount
securitySchemes:
BearerAuthScheme:
type: http
scheme: bearer