Introduction
The MediaOS API is a REST API that returns JSON. It provides access to your account's CRM data, inventory, orders, and billing records.
- All API responses are UTF-8 encoded JSON.
- Dates use the format
YYYY-MM-DD HH:MM:SS. - Boolean fields accept
true/falseor1/0. - Endpoints that list resources support pagination via
per_pageandpageparameters.
Authentication
The API uses HTTP Basic Authentication. Your API key acts as the username and your API password as the password.
HTTP Basic Auth
Pass your API key as the username and your API password as the password in the Authorization header.
Query Parameter (Alternative)
You may alternatively pass your API key as a query string parameter named apiKey.
Rate Limits
API usage is limited per account to prevent abuse and ensure service quality for all users.
| Scope | Limit | Window |
|---|---|---|
| Per Account | 5,000 requests | Rolling 24-hour window |
429 Too Many Requests response. Implement exponential backoff in your integration to handle this gracefully. Rate limit counters reset at the start of each 24-hour window.Pagination & Sorting
List endpoints support server-side pagination and sorting via query parameters.
| Parameter | Type | Default | Description |
|---|---|---|---|
per_page |
integer | 25 |
Number of records to return per page. Maximum value is 100. |
page |
integer | 1 |
Page number to return. Starts at 1. |
sort_by |
string | Varies | Field to sort results by. Accepted values vary per endpoint. |
sort_order |
string | asc |
Sort direction. Accepted values: asc or desc. |
All paginated responses include a top-level count field with the total number of matching records:
Error Codes
The API uses standard HTTP status codes to indicate success or failure.
Error responses include a JSON body with a human-readable message:
Account
Retrieve top-level details about your MediaOS account.
Returns details for the authenticated account, including name, plan, and configuration settings.
Parameters
None.
Example Response
Advertisers
Advertisers are the companies or individuals that purchase advertising. Full CRUD operations are supported.
Returns a single advertiser record by its numeric ID.
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
id | integer | Required | Advertiser ID |
Example Response
Returns a paginated list of advertisers. All parameters are optional and can be combined for filtering.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
id | integer | Filter by exact advertiser ID |
name | string | Filter by name (partial match) |
is_lead | boolean | Filter by lead status |
active | boolean | Filter by active status |
owned_by_user_id | integer | Filter by owning sales rep |
created_by_user_id | integer | Filter by creating user |
date_created_before | datetime | Filter: created before this date (YYYY-MM-DD HH:MM:SS) |
date_created_after | datetime | Filter: created after this date |
sort_by | string | Sort field |
sort_order | string | asc or desc |
per_page | integer | Results per page (default 25, max 100) |
page | integer | Page number (default 1) |
Creates a new advertiser record. Send parameters as JSON in the request body or as form fields.
Body Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | Required | Advertiser display name |
created_by_user_id | integer | Optional | User who created the record |
owned_by_user_id | integer | Optional | Sales rep / owner |
is_lead | boolean | Optional | Mark as a lead (not yet a customer) |
sales_lock | boolean | Optional | Lock record from other sales reps |
description | string | Optional | Free-text description / notes |
general_ledger_account_code | string | Optional | GL account code for accounting integrations |
Example Request
Updates an existing advertiser. Only the fields provided will be updated (partial update).
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
id | integer | Required | Advertiser ID to update |
Body Parameters
Same fields as Create — all optional. Only supplied fields are updated.
Agencies
Agencies represent advertising agencies that act on behalf of advertisers. Full CRUD is supported.
Returns a single agency record by its numeric ID.
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
id | integer | Required | Agency ID |
Returns a paginated list of agencies.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
id | integer | Filter by agency ID |
name | string | Filter by name (partial match) |
sort_by | string | Sort field |
sort_order | string | asc or desc |
per_page | integer | Default 25, max 100 |
page | integer | Default 1 |
Creates a new agency record.
Body Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | Required | Agency name |
created_by_user_id | integer | Optional | Creating user ID |
owned_by_user_id | integer | Optional | Owning sales rep ID |
discount_percent | decimal | Optional | Default agency discount (e.g. 15.00 for 15%) |
Updates an existing agency. All body fields are optional; only provided fields are changed.
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
id | integer | Required | Agency ID to update |
Contacts
Contacts are individual people associated with an advertiser or agency. Full CRUD is supported.
advertiser_id and agency_id will result in an error.Returns a single contact by ID.
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
id | integer | Required | Contact ID |
Returns a paginated list of contacts matching the given filters.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
id | integer | Filter by contact ID |
name | string | Filter by full name (partial match) |
advertiser_id | integer | Filter by linked advertiser |
agency_id | integer | Filter by linked agency |
owned_by_user_id | integer | Filter by owning sales rep |
created_by_user_id | integer | Filter by creating user |
is_lead | boolean | Filter by lead status |
active | boolean | Filter by active status |
date_created_before | datetime | Created before date |
date_created_after | datetime | Created after date |
sort_by | string | id, first_name, last_name, title |
sort_order | string | asc or desc |
per_page | integer | Default 25, max 100 |
page | integer | Default 1 |
Creates a new contact. The contact must be linked to either an advertiser or an agency (not both).
Body Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
advertiser_id | integer | Optional* | Link to an advertiser |
agency_id | integer | Optional* | Link to an agency (use one or the other) |
title | string | Optional | Job title |
first_name | string | Optional | First name |
last_name | string | Optional | Last name |
owned_by_user_id | integer | Optional | Owning sales rep |
Updates an existing contact. All body fields are optional.
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
id | integer | Required | Contact ID |
Contact Data
Contact data stores typed attributes for contacts, advertisers, or agencies — such as phone numbers, email addresses, and websites.
Returns the full list of available contact data types (e.g., Phone, Email, Website).
Returns a single contact data record by ID.
Returns contact data records. If no filters are supplied, the most recent 100 records are returned.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
advertiser_id | integer | Filter by advertiser |
contact_id | integer | Filter by contact |
agency_id | integer | Filter by agency |
Creates a new contact data record. The record must be linked to exactly one of: advertiser_id, agency_id, or contact_id.
Body Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
contact_data_type_id | integer | Required | The type of data (from /contactDataTypes/) |
value | string | Required | The data value (e.g., phone number) |
advertiser_id | integer | Required* | Link to an advertiser |
agency_id | integer | Required* | Link to an agency |
contact_id | integer | Required* | Link to a contact (one of the three is required) |
Updates the value of an existing contact data record.
Body Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
value | string | Required | Updated value |
Addresses
Postal addresses for advertisers, agencies, or contacts. Full CRUD is supported.
Returns a single address by ID.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
id | integer | Filter by address ID |
advertiser_id | integer | Filter by advertiser |
agency_id | integer | Filter by agency |
contact_id | integer | Filter by contact |
Creates a new address. Must be assigned to one of: advertiser, agency, or contact.
Body Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
country_code | string | Required | ISO country code (e.g. US) |
advertiser_id | integer | Optional* | Link to advertiser |
agency_id | integer | Optional* | Link to agency |
contact_id | integer | Optional* | Link to contact (one of three required) |
line1 | string | Optional | Address line 1 |
line2 | string | Optional | Address line 2 |
line3 | string | Optional | Address line 3 |
line4 | string | Optional | Address line 4 |
city | string | Optional | City |
state | string | Optional | State / Province |
postal_code | string | Optional | ZIP / Postal code |
Updates an existing address. All fields are optional.
Users
Retrieve user records for members of your MediaOS account. Users are read-only via the API.
Returns a single user record by ID.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
id | integer | Filter by user ID |
first_name | string | Filter by first name |
last_name | string | Filter by last name |
email | string | Filter by email address |
active | boolean | Filter by active status |
is_administrator | boolean | Filter by admin role |
is_sales | boolean | Filter by sales role |
is_production | boolean | Filter by production role |
is_accounting | boolean | Filter by accounting role |
sort_by | string | id, firstName, lastName, email |
sort_order | string | asc or desc |
per_page | integer | Default 25, max 100 |
page | integer | Default 1 |
Products
Products represent the publications, websites, or media channels in your account. Read-only.
Returns a single product by ID.
Returns all products in the account. No filters required.
Ad Sizes
Ad sizes define the available creative dimensions for a product. Read-only.
Returns a single ad size record by ID.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
product_id | integer | Required | Filter by product |
active | boolean | Optional | Filter by active status |
Ad Rates
Ad rates define the pricing for ad sizes within a product. Read-only.
Returns a single ad rate record by ID.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
product_id | integer | Required | Filter by product |
ad_size_id | integer | Optional | Filter by ad size |
active | boolean | Optional | Filter by active status |
Issues
Issues are publication dates / editions for a product (e.g., January 2025 magazine issue). Read-only.
Returns a single issue by ID.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
product_id | integer | Required | Product to list issues for |
Locations
Locations are geographic zones used for targeting ad insertions. Read-only.
Returns a single location record by ID.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
product_id | integer | Required | Product to list locations for |
Sections
Sections are content areas within a product (e.g., "Back Cover", "Page 4"). Read-only.
Returns a single section record by ID.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
product_id | integer | Required | Product to list sections for |
Contracts
Contracts represent advertising orders / sales agreements. Read-only.
Returns a single contract record by ID.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
id | integer | Filter by contract ID |
advertiser_id | integer | Filter by advertiser |
date_created_before | datetime | Created before date |
date_created_after | datetime | Created after date |
date_sold_before | datetime | Sold before date |
date_sold_after | datetime | Sold after date |
amount_from | decimal | Minimum contract total |
amount_to | decimal | Maximum contract total |
status | string | Filter by contract status |
is_proposal | boolean | Filter proposals vs. signed contracts |
sort_by | string | id, date_created, date_sold, total, status |
sort_order | string | asc or desc |
per_page | integer | Default 25, max 100 |
page | integer | Default 1 |
Contract Line Items
Individual line items within a contract, describing what was sold. Read-only.
Returns a single contract line item by ID.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
contract_id | integer | Required | Contract to retrieve line items for |
Returns a single contract line item type by ID.
Returns the full list of contract line item types available in the account.
Insertions
Ad insertions represent a single placement of an advertisement — linking a contract, product, issue, section, and location. Read-only.
Returns a single insertion record by ID.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
id | integer | Filter by insertion ID |
contract_id | integer | Filter by contract |
product_id | integer | Filter by product |
advertiser_id | integer | Filter by advertiser |
section_id | integer | Filter by section |
issue_id | integer | Filter by issue |
location_id | integer | Filter by location |
sort_by | string | id, contract_id, product_id, advertiser_id, section_id, issue_id, location_id |
sort_order | string | asc or desc |
per_page | integer | Default 25, max 100 |
page | integer | Default 1 |
Invoices
Invoices track billing records generated from contracts. Read-only.
Returns a single invoice by ID.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
id | integer | Filter by invoice ID |
contract_id | integer | Filter by contract |
advertiser_id | integer | Filter by advertiser |
date_created_before | datetime | Created before date |
date_created_after | datetime | Created after date |
date_due_before | datetime | Due before date |
date_due_after | datetime | Due after date |
amount_from | decimal | Minimum invoice total |
amount_to | decimal | Maximum invoice total |
sort_by | string | id, date_created, date_due, total |
sort_order | string | asc or desc |
per_page | integer | Default 25, max 100 |
page | integer | Default 1 |
Invoice Line Items
Individual charges on an invoice. Read-only.
Returns a single invoice line item by ID.
Returns all invoice line item type definitions for the account.
Returns a single invoice line item type by ID.
Payments
Payments record money received against invoices. Supports search and creation.
Returns a single payment record by ID.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
id | integer | Filter by payment ID |
entered_by_user_id | integer | Filter by user who entered the payment |
date_created_before | datetime | Created before date |
date_created_after | datetime | Created after date |
amount_from | decimal | Minimum payment amount |
amount_to | decimal | Maximum payment amount |
contract_id | integer | Filter by contract |
advertiser_id | integer | Filter by advertiser |
sort_by | string | id, date_created, amount |
sort_order | string | asc or desc |
per_page | integer | Default 25, max 100 |
page | integer | Default 1 |
Records a new payment against an invoice.
Body Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
invoice_id | integer | Required | Invoice this payment applies to |
amount | decimal | Required | Payment amount |
notes | string | Required | Internal notes about the payment |
payment_type | string | Required | Payment method (e.g. check, credit_card, wire) |
payment_date | datetime | Required | Date the payment was received (YYYY-MM-DD HH:MM:SS) |
Example Request
Ad Requests
Ad requests track incoming creative submission requests tied to insertions. Read-only.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
id | integer | Filter by ad request ID |
sort_by | string | id |
sort_order | string | asc or desc |
per_page | integer | Default 25, max 100 |
page | integer | Default 1 |
Ads
Ads represent the creative assets and metadata for delivered advertisements. Read-only.
Returns a single ad record including creative metadata and delivery status.
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
id | integer | Required | Ad ID |
Memberships
Memberships track subscription or membership records associated with contacts. Read-only.
Checks whether a given email address has an active membership record.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
email | string | Required | Email address to verify |
Example Response
Returns a single membership record by ID.
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
id | integer | Required | Membership ID |