AWeber REST API
REST API for managing AWeber accounts, lists, subscribers, broadcasts, campaigns, custom fields, segments, and tags. Authentication uses OAuth 2.0 with personal access tokens or the authorization code flow.
REST API for managing AWeber accounts, lists, subscribers, broadcasts, campaigns, custom fields, segments, and tags. Authentication uses OAuth 2.0 with personal access tokens or the authorization code flow.
openapi: 3.1.0
info:
title: AWeber REST API
version: '1.0'
description: |
The AWeber REST API provides programmatic access to lists, subscribers,
broadcasts, campaigns, custom fields, segments, and tags. The API is
organized around the authenticated account and uses OAuth 2.0 for
authentication. All requests are made over HTTPS to api.aweber.com and
return JSON.
See https://developer.aweber.com/docs/v3 for full reference.
contact:
name: AWeber Developer
url: https://developer.aweber.com/
servers:
- url: https://api.aweber.com/1.0
description: AWeber REST API v1.0
tags:
- name: Accounts
- name: Lists
- name: Subscribers
- name: Broadcasts
- name: Campaigns
- name: Custom Fields
- name: Segments
- name: Tags
- name: Web Forms
- name: Landing Pages
security:
- OAuth2: []
paths:
/accounts:
get:
tags: [Accounts]
summary: List the authenticated user's accounts
operationId: listAccounts
responses:
'200':
description: Collection of accounts
content:
application/json:
schema: { $ref: '#/components/schemas/Collection' }
/accounts/{accountId}:
get:
tags: [Accounts]
summary: Get an account
operationId: getAccount
parameters:
- $ref: '#/components/parameters/AccountId'
responses:
'200':
description: Account
content:
application/json:
schema: { $ref: '#/components/schemas/Account' }
/accounts/{accountId}/lists:
get:
tags: [Lists]
summary: List subscriber lists in an account
operationId: listLists
parameters:
- $ref: '#/components/parameters/AccountId'
responses:
'200':
description: Collection of lists
content:
application/json:
schema: { $ref: '#/components/schemas/Collection' }
/accounts/{accountId}/lists/{listId}:
get:
tags: [Lists]
summary: Get a list
operationId: getList
parameters:
- $ref: '#/components/parameters/AccountId'
- $ref: '#/components/parameters/ListId'
responses:
'200':
description: List
content:
application/json:
schema: { $ref: '#/components/schemas/List' }
/accounts/{accountId}/lists/{listId}/subscribers:
get:
tags: [Subscribers]
summary: List subscribers on a list
operationId: listSubscribers
parameters:
- $ref: '#/components/parameters/AccountId'
- $ref: '#/components/parameters/ListId'
- name: ws.size
in: query
schema: { type: integer }
- name: ws.start
in: query
schema: { type: integer }
- name: status
in: query
schema: { type: string, enum: [subscribed, unsubscribed, unconfirmed] }
responses:
'200':
description: Collection of subscribers
content:
application/json:
schema: { $ref: '#/components/schemas/Collection' }
post:
tags: [Subscribers]
summary: Add a subscriber to a list
operationId: createSubscriber
parameters:
- $ref: '#/components/parameters/AccountId'
- $ref: '#/components/parameters/ListId'
requestBody:
required: true
content:
application/json:
schema: { $ref: '#/components/schemas/SubscriberInput' }
responses:
'201':
description: Subscriber created
/accounts/{accountId}/lists/{listId}/subscribers/{subscriberId}:
get:
tags: [Subscribers]
summary: Get a subscriber
operationId: getSubscriber
parameters:
- $ref: '#/components/parameters/AccountId'
- $ref: '#/components/parameters/ListId'
- $ref: '#/components/parameters/SubscriberId'
responses:
'200':
description: Subscriber
content:
application/json:
schema: { $ref: '#/components/schemas/Subscriber' }
patch:
tags: [Subscribers]
summary: Update a subscriber
operationId: updateSubscriber
parameters:
- $ref: '#/components/parameters/AccountId'
- $ref: '#/components/parameters/ListId'
- $ref: '#/components/parameters/SubscriberId'
requestBody:
required: true
content:
application/json:
schema: { $ref: '#/components/schemas/SubscriberInput' }
responses:
'200':
description: Updated
delete:
tags: [Subscribers]
summary: Delete a subscriber
operationId: deleteSubscriber
parameters:
- $ref: '#/components/parameters/AccountId'
- $ref: '#/components/parameters/ListId'
- $ref: '#/components/parameters/SubscriberId'
responses:
'204':
description: Deleted
/accounts/{accountId}/lists/{listId}/broadcasts:
get:
tags: [Broadcasts]
summary: List broadcasts for a list
operationId: listBroadcasts
parameters:
- $ref: '#/components/parameters/AccountId'
- $ref: '#/components/parameters/ListId'
- name: status
in: query
schema: { type: string, enum: [draft, scheduled, sent] }
responses:
'200':
description: Collection of broadcasts
content:
application/json:
schema: { $ref: '#/components/schemas/Collection' }
post:
tags: [Broadcasts]
summary: Create a broadcast
operationId: createBroadcast
parameters:
- $ref: '#/components/parameters/AccountId'
- $ref: '#/components/parameters/ListId'
requestBody:
required: true
content:
application/json:
schema: { $ref: '#/components/schemas/BroadcastInput' }
responses:
'201':
description: Broadcast created
/accounts/{accountId}/lists/{listId}/broadcasts/{broadcastId}:
get:
tags: [Broadcasts]
summary: Get a broadcast
operationId: getBroadcast
parameters:
- $ref: '#/components/parameters/AccountId'
- $ref: '#/components/parameters/ListId'
- $ref: '#/components/parameters/BroadcastId'
responses:
'200':
description: Broadcast
content:
application/json:
schema: { $ref: '#/components/schemas/Broadcast' }
/accounts/{accountId}/lists/{listId}/campaigns:
get:
tags: [Campaigns]
summary: List campaigns for a list
operationId: listCampaigns
parameters:
- $ref: '#/components/parameters/AccountId'
- $ref: '#/components/parameters/ListId'
responses:
'200':
description: Collection of campaigns
content:
application/json:
schema: { $ref: '#/components/schemas/Collection' }
/accounts/{accountId}/lists/{listId}/custom_fields:
get:
tags: [Custom Fields]
summary: List custom fields on a list
operationId: listCustomFields
parameters:
- $ref: '#/components/parameters/AccountId'
- $ref: '#/components/parameters/ListId'
responses:
'200':
description: Collection of custom fields
content:
application/json:
schema: { $ref: '#/components/schemas/Collection' }
post:
tags: [Custom Fields]
summary: Create a custom field
operationId: createCustomField
parameters:
- $ref: '#/components/parameters/AccountId'
- $ref: '#/components/parameters/ListId'
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [name]
properties:
name: { type: string }
is_subscriber_updateable: { type: boolean }
responses:
'201':
description: Created
/accounts/{accountId}/lists/{listId}/segments:
get:
tags: [Segments]
summary: List saved searches/segments
operationId: listSegments
parameters:
- $ref: '#/components/parameters/AccountId'
- $ref: '#/components/parameters/ListId'
responses:
'200':
description: Collection of segments
content:
application/json:
schema: { $ref: '#/components/schemas/Collection' }
/accounts/{accountId}/lists/{listId}/web_forms:
get:
tags: [Web Forms]
summary: List web forms on a list
operationId: listWebForms
parameters:
- $ref: '#/components/parameters/AccountId'
- $ref: '#/components/parameters/ListId'
responses:
'200':
description: Collection of web forms
content:
application/json:
schema: { $ref: '#/components/schemas/Collection' }
/accounts/{accountId}/landing_pages:
get:
tags: [Landing Pages]
summary: List landing pages
operationId: listLandingPages
parameters:
- $ref: '#/components/parameters/AccountId'
responses:
'200':
description: Collection of landing pages
content:
application/json:
schema: { $ref: '#/components/schemas/Collection' }
components:
parameters:
AccountId:
name: accountId
in: path
required: true
schema: { type: integer }
ListId:
name: listId
in: path
required: true
schema: { type: integer }
SubscriberId:
name: subscriberId
in: path
required: true
schema: { type: integer }
BroadcastId:
name: broadcastId
in: path
required: true
schema: { type: integer }
schemas:
Collection:
type: object
properties:
entries:
type: array
items: { type: object }
total_size: { type: integer }
next_collection_link: { type: string, format: uri }
Account:
type: object
properties:
id: { type: integer }
self_link: { type: string, format: uri }
business_name: { type: string }
primary_email: { type: string }
List:
type: object
properties:
id: { type: integer }
name: { type: string }
self_link: { type: string, format: uri }
total_subscribers: { type: integer }
Subscriber:
type: object
properties:
id: { type: integer }
email: { type: string, format: email }
name: { type: string }
status: { type: string, enum: [subscribed, unsubscribed, unconfirmed] }
tags:
type: array
items: { type: string }
custom_fields:
type: object
additionalProperties: true
SubscriberInput:
type: object
required: [email]
properties:
email: { type: string, format: email }
name: { type: string }
ad_tracking: { type: string }
custom_fields:
type: object
additionalProperties: true
tags:
type: array
items: { type: string }
Broadcast:
type: object
properties:
id: { type: integer }
subject: { type: string }
body_html: { type: string }
body_text: { type: string }
status: { type: string }
BroadcastInput:
type: object
required: [subject]
properties:
subject: { type: string }
body_html: { type: string }
body_text: { type: string }
securitySchemes:
OAuth2:
type: oauth2
flows:
authorizationCode:
authorizationUrl: https://auth.aweber.com/oauth2/authorize
tokenUrl: https://auth.aweber.com/oauth2/token
scopes:
account.read: Read account information
list.read: Read lists
list.write: Manage lists
subscriber.read: Read subscribers
subscriber.write: Manage subscribers
email.read: Read broadcasts and campaigns
email.write: Manage broadcasts and campaigns
landing-page.read: Read landing pages
landing-page.write: Manage landing pages