openapi: 3.2.0 info: title: Reference Bulk Subscription Updates API version: 1.0.0 servers: - url: https://api.beehiiv.com/v2 description: Default tags: - name: Bulk Subscription Updates paths: /publications/{publicationId}/bulk_subscription_updates: get: operationId: index summary: 'List subscription updates OAuth Scope: subscriptions:read' description: Returns a list of Subscription Update objects for a publication. tags: - Bulk Subscription Updates 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: OK content: application/json: schema: $ref: '#/components/schemas/type_bulkSubscriptionUpdates_BulkSubscriptionUpdatesListResponse' '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}/bulk_subscription_updates/{id}: get: operationId: show summary: 'Get subscription update OAuth Scope: subscriptions:read' description: Returns a single Subscription Update object for a publication. tags: - Bulk Subscription Updates parameters: - name: publicationId in: path description: The prefixed ID of the publication object required: true schema: $ref: '#/components/schemas/type_ids_PublicationId' - name: id in: path description: The ID of the Subscription Update object required: true 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_bulkSubscriptionUpdates_BulkSubscriptionUpdatesGetResponse' '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}/subscriptions/bulk_actions: put: operationId: put summary: 'Update subscriptions OAuth Scope: subscriptions:write' description: Bulk update multiple subscriptions fields, including status, custom fields, and tiers. tags: - Bulk Subscription Updates 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: OK content: application/json: schema: $ref: '#/components/schemas/type_subscriptions_SubscriptionsPatchResponse' '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: subscriptions: type: array items: $ref: '#/components/schemas/type_bulkSubscriptionUpdates_SubscriptionsPatchRequestSubscriptionsItem' description: An array of objects representing the subscriptions to be updated (max 1000). patch: operationId: patch summary: 'Update subscriptions OAuth Scope: subscriptions:write' description: Bulk update multiple subscriptions fields, including status, custom fields, and tiers. tags: - Bulk Subscription Updates 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: OK content: application/json: schema: $ref: '#/components/schemas/type_subscriptions_SubscriptionsPatchResponse' '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: subscriptions: type: array items: $ref: '#/components/schemas/type_bulkSubscriptionUpdates_SubscriptionsPatchRequestSubscriptionsItem' description: An array of objects representing the subscriptions to be updated (max 1000). /publications/{publicationId}/subscriptions: put: operationId: put-status summary: 'Update subscriptions'' status OAuth Scope: subscriptions:write' description: Bulk update subscriptions' status. tags: - Bulk Subscription Updates 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: Successful response requestBody: content: application/json: schema: type: object properties: subscription_ids: type: array items: type: string description: An array of subscription IDs to be updated new_status: type: string description: The new status to set for the subscriptions required: - subscription_ids - new_status patch: operationId: patch-status summary: 'Update subscriptions'' status OAuth Scope: subscriptions:write' description: Bulk update subscriptions' status. tags: - Bulk Subscription Updates 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: Successful response requestBody: content: application/json: schema: type: object properties: subscription_ids: type: array items: type: string description: An array of subscription IDs to be updated new_status: type: string description: The new status to set for the subscriptions required: - subscription_ids - new_status components: schemas: type_subscriptions_SubscriptionsPatchResponseData: type: object properties: subscription_update_id: type: string description: The ID of the Subscription Update object responsible for handling the update job title: SubscriptionsPatchResponseData 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_bulkSubscriptionUpdates_BulkSubscriptionUpdatesListResponseDataItem: type: object properties: id: type: string description: The ID of the update object type: $ref: '#/components/schemas/type_bulkSubscriptionUpdates_BulkSubscriptionUpdatesListResponseDataItemType' description: The type of update (status or bulk) params: type: string description: The parameters passed in for the update status: $ref: '#/components/schemas/type_bulkSubscriptionUpdates_BulkSubscriptionUpdatesListResponseDataItemStatus' description: The status of the update publication_id: $ref: '#/components/schemas/type_ids_PublicationId' description: The publication ID associated with this update failure_reason: type: string description: If the job as a whole fails, this will detail the errors encountered completed: type: integer description: The timestamp of the job's completion created: type: integer description: The timestamp of the job's creation updated: type: integer description: The timestamp of the job's update error_log: type: array items: type: string description: An array of errors encountered for individual updates within the job title: BulkSubscriptionUpdatesListResponseDataItem type_subscriptions_SubscriptionsPatchResponse: type: object properties: data: $ref: '#/components/schemas/type_subscriptions_SubscriptionsPatchResponseData' required: - data title: SubscriptionsPatchResponse type_bulkSubscriptionUpdates_BulkSubscriptionUpdatesGetResponse: type: object properties: data: $ref: '#/components/schemas/type_bulkSubscriptionUpdates_BulkSubscriptionUpdatesGetResponseData' title: BulkSubscriptionUpdatesGetResponse type_ids_OptionalStripeCustomerId: type: string description: The prefixed ID of the Stripe customer. title: OptionalStripeCustomerId type_bulkSubscriptionUpdates_BulkSubscriptionUpdatesListResponseDataItemType: type: string enum: - status - bulk description: The type of update (status or bulk) title: BulkSubscriptionUpdatesListResponseDataItemType type_bulkSubscriptionUpdates_SubscriptionsPatchRequestSubscriptionsItemTier: type: string enum: - free - premium description: The Tier of the Subscription (not required) title: SubscriptionsPatchRequestSubscriptionsItemTier type_bulkSubscriptionUpdates_BulkSubscriptionUpdatesListResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/type_bulkSubscriptionUpdates_BulkSubscriptionUpdatesListResponseDataItem' description: An array of Subscription Update objects title: BulkSubscriptionUpdatesListResponse type__CustomFieldDataType: oneOf: - type: string - type: number format: double - type: boolean - type: array items: type: string title: CustomFieldDataType type_bulkSubscriptionUpdates_BulkSubscriptionUpdatesListResponseDataItemStatus: type: string enum: - pending - processing - complete - failed description: The status of the update title: BulkSubscriptionUpdatesListResponseDataItemStatus type_bulkSubscriptionUpdates_SubscriptionsPatchRequestSubscriptionsItem: type: object properties: subscription_id: $ref: '#/components/schemas/type_ids_SubscriptionId' tier: $ref: '#/components/schemas/type_bulkSubscriptionUpdates_SubscriptionsPatchRequestSubscriptionsItemTier' description: The Tier of the Subscription (not required) stripe_customer_id: $ref: '#/components/schemas/type_ids_OptionalStripeCustomerId' description: The Stripe Customer ID of the subscription (not required) unsubscribe: type: boolean description: A boolean value specifying whether to unsubscribe this subscription from the publication (not required) custom_fields: type: array items: $ref: '#/components/schemas/type_bulkSubscriptionUpdates_SubscriptionsPatchRequestSubscriptionsItemCustomFieldsItem' description: An array of custom field objects to update complimentary_gift_id: $ref: '#/components/schemas/type_ids_ComplimentaryAccessId' description: The prefixed ID of a complimentary access object to apply to this subscription. The complimentary access must belong to the same publication. required: - subscription_id title: SubscriptionsPatchRequestSubscriptionsItem type_ids_ComplimentaryAccessId: type: string description: The prefixed ID of the complimentary access object. title: ComplimentaryAccessId type__ErrorDetail: type: object properties: message: type: string code: type: string required: - message - code title: ErrorDetail type_bulkSubscriptionUpdates_SubscriptionsPatchRequestSubscriptionsItemCustomFieldsItem: type: object properties: name: type: string description: The display value of the custom field value: $ref: '#/components/schemas/type__CustomFieldDataType' description: The value of the custom field delete: type: boolean description: A boolean value to specify whether to delete this custom field entry from the subscription title: SubscriptionsPatchRequestSubscriptionsItemCustomFieldsItem type_bulkSubscriptionUpdates_BulkSubscriptionUpdatesGetResponseDataType: type: string enum: - bulk - status description: The type of update (status or bulk) title: BulkSubscriptionUpdatesGetResponseDataType type_bulkSubscriptionUpdates_BulkSubscriptionUpdatesGetResponseDataStatus: type: string enum: - pending - processing - complete - failed description: The status of the update title: BulkSubscriptionUpdatesGetResponseDataStatus type_ids_PublicationId: type: string description: The prefixed ID of the publication. title: PublicationId type_ids_SubscriptionId: type: string description: The prefixed ID of the subscription. title: SubscriptionId type_bulkSubscriptionUpdates_BulkSubscriptionUpdatesGetResponseData: type: object properties: id: type: string description: The ID of the update object type: $ref: '#/components/schemas/type_bulkSubscriptionUpdates_BulkSubscriptionUpdatesGetResponseDataType' description: The type of update (status or bulk) params: type: string description: The parameters passed in for the update status: $ref: '#/components/schemas/type_bulkSubscriptionUpdates_BulkSubscriptionUpdatesGetResponseDataStatus' description: The status of the update publication_id: $ref: '#/components/schemas/type_ids_PublicationId' description: The publication ID associated with this update failure_reason: type: string description: If the job as a whole fails, this will detail the errors encountered completed: type: integer description: The timestamp of the job's completion created: type: integer description: The timestamp of the job's creation updated: type: integer description: The timestamp of the job's update error_log: type: array items: type: string description: An array of errors encountered for individual updates within the job title: BulkSubscriptionUpdatesGetResponseData securitySchemes: BearerAuthScheme: type: http scheme: bearer