openapi: 3.2.0
info:
title: Reference Complimentary Access API
version: 1.0.0
servers:
- url: https://api.beehiiv.com/v2
description: Default
tags:
- name: Complimentary Access
paths:
/publications/{publicationId}/complimentary_access:
get:
operationId: index
summary: 'List complimentary access OAuth Scope: complimentary_access:read'
description: Retrieve all complimentary access objects belonging to a specific publication.
tags:
- Complimentary Access
parameters:
- name: publicationId
in: path
description: The prefixed ID of the publication object
required: true
schema:
$ref: '#/components/schemas/type_ids_PublicationId'
- name: expand[]
in: query
description: Optional list of expandable objects.
`tier` - Returns the full tier object associated with this complimentary access.
`stats` - Returns granted subscription counts.
required: false
schema:
type: string
- 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: cursor
in: query
description: Use this opaque cursor token to fetch the next page of results. Obtain the value from `next_cursor` in a previous response.
required: false
schema:
type: string
- name: Authorization
in: header
description: Bearer authentication
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/type_complimentaryAccess_IndexComplimentaryAccessResponse'
'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'
/publications/{publicationId}/complimentary_access/{complimentaryAccessId}:
get:
operationId: show
summary: 'Get complimentary access OAuth Scope: complimentary_access:read'
description: Retrieve a single complimentary access object belonging to a specific publication.
tags:
- Complimentary Access
parameters:
- name: publicationId
in: path
description: The prefixed ID of the publication object
required: true
schema:
$ref: '#/components/schemas/type_ids_PublicationId'
- name: complimentaryAccessId
in: path
description: The prefixed ID of the complimentary access object
required: true
schema:
$ref: '#/components/schemas/type_ids_ComplimentaryAccessId'
- name: expand[]
in: query
description: Optional list of expandable objects.
`tier` - Returns the full tier object associated with this complimentary access.
required: false
schema:
type: string
- name: Authorization
in: header
description: Bearer authentication
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/type_complimentaryAccess_ComplimentaryAccessResponse'
'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'
components:
schemas:
type_tiers_TierPriceCurrency:
type: string
enum:
- usd
- aud
- cad
- eur
- gbp
- inr
- brl
- mxn
- nzd
- dkk
title: TierPriceCurrency
type_tiers_TierStatus:
type: string
enum:
- active
- archived
description: Returns whether or not the tier has any active prices.
title: TierStatus
type_complimentaryAccess_ComplimentaryAccessStats:
type: object
properties:
total_granted:
type: integer
description: Total number of subscriptions that have ever been granted this complimentary access.
active_granted:
type: integer
description: Number of subscriptions currently within an active complimentary access period.
required:
- total_granted
- active_granted
description: 'Optional stats for a complimentary access object. Retrievable by including `expand: [stats]` in the request.'
title: ComplimentaryAccessStats
type_ids_PublicationId:
type: string
description: The prefixed ID of the publication.
title: PublicationId
type_ids_PriceId:
type: string
description: The prefixed ID of the price.
title: PriceId
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_ids_ComplimentaryAccessId:
type: string
description: The prefixed ID of the complimentary access object.
title: ComplimentaryAccessId
type_complimentaryAccess_IndexComplimentaryAccessResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/type_complimentaryAccess_ComplimentaryAccess'
limit:
type: integer
description: The limit placed on the results. Defaults to 10 if not specified.
has_more:
type: boolean
description: Indicates whether there are more results available after the current page.
next_cursor:
type: string
description: The cursor token to use for fetching the next page of results. This will be null if has_more is false.
total_results:
type: integer
description: The total number of results from all pages.
required:
- data
title: IndexComplimentaryAccessResponse
type_complimentaryAccess_ComplimentaryAccess:
type: object
properties:
id:
$ref: '#/components/schemas/type_ids_ComplimentaryAccessId'
description: The prefixed ID of the complimentary access object.
duration:
type: integer
description: The duration of the gift. Null when time_unit is "forever".
time_unit:
$ref: '#/components/schemas/type_complimentaryAccess_ComplimentaryAccessTimeUnit'
description: The unit of time for the gift duration.
description:
type: string
description: A human-readable description of the gift (e.g., "3 Months Gift", "Lifetime Gift").
tier_id:
$ref: '#/components/schemas/type_ids_TierId'
description: The prefixed ID of the associated tier. Always present.
tier:
$ref: '#/components/schemas/type_tiers_Tier'
description: 'The full tier object. Present when `expand: [tier]` is requested. Returned alongside `tier_id`.'
stats:
$ref: '#/components/schemas/type_complimentaryAccess_ComplimentaryAccessStats'
description: 'Stats for this complimentary access. Retrievable by including `expand: [stats]` in the request.'
required:
- id
- time_unit
- description
description: The complimentary access object.
title: ComplimentaryAccess
type_tiers_TierStats:
type: object
properties:
active_subscriptions:
type: integer
description: Total number of active subscriptions belonging to this tier.
required:
- active_subscriptions
description: 'Optional list of stats for a tier. Retrievable by including `expand: [stats]` in the tier request body.'
title: TierStats
type__ErrorDetail:
type: object
properties:
message:
type: string
code:
type: string
required:
- message
- code
title: ErrorDetail
type_tiers_TierPrice:
type: object
properties:
id:
$ref: '#/components/schemas/type_ids_PriceId'
currency:
$ref: '#/components/schemas/type_tiers_TierPriceCurrency'
amount_cents:
type: integer
enabled:
type: boolean
default: true
interval:
$ref: '#/components/schemas/type_tiers_TierPriceInterval'
denominator:
type: string
cta:
type: string
description: When using the external Stripe checkout, this text will be displayed on the button
features:
type: array
items:
type: string
description: Price belonging to a Tier
title: TierPrice
type_tiers_TierPriceInterval:
type: string
enum:
- month
- quarter
- year
- one_time
- donation
title: TierPriceInterval
type_complimentaryAccess_ComplimentaryAccessTimeUnit:
type: string
enum:
- days
- months
- years
- forever
description: The unit of time for the gift duration.
`days` - Duration in days.
`months` - Duration in months.
`years` - Duration in years.
`forever` - Lifetime access with no expiration.
title: ComplimentaryAccessTimeUnit
type_complimentaryAccess_ComplimentaryAccessResponse:
type: object
properties:
data:
$ref: '#/components/schemas/type_complimentaryAccess_ComplimentaryAccess'
title: ComplimentaryAccessResponse
type_tiers_Tier:
type: object
properties:
id:
$ref: '#/components/schemas/type_ids_TierId'
name:
type: string
status:
$ref: '#/components/schemas/type_tiers_TierStatus'
description: Returns whether or not the tier has any active prices.
description:
type: string
default: Super engaged readers
stats:
$ref: '#/components/schemas/type_tiers_TierStats'
prices:
type: array
items:
$ref: '#/components/schemas/type_tiers_TierPrice'
description: 'Optional list of prices for a tier. Retrievable by including `expand: [prices]` in the tier request body.'
required:
- id
- name
- status
description: The subscription tier object.
title: Tier
type_ids_TierId:
type: string
description: The prefixed ID of the tier.
title: TierId
securitySchemes:
BearerAuthScheme:
type: http
scheme: bearer