Ad Accounts

Create Meta ad account

Creates a durable Meta ad account in the end user's own business portfolio using their connected Meta Ads token. Requires an active metaads accountId, Ads access, business_management permission and business admin access. Discover portfolios with GET /v1/ads/businesses. System-user tokens may return an empty businesses list; supply the known business ID in that case.

The self-serve account starts without a payment method. The user must add a payment method in Ads Manager before ads can deliver. Zernio cannot add payment methods. Meta may require business verification and limits how many accounts a business can create. Closing an account does not guarantee more capacity. An ad account cannot truly be deleted, even after closing it and removing it from a business.

timezoneId is Meta's numeric ID, not an IANA timezone name. Select it from https://developers.facebook.com/docs/marketing-api/reference/ad-account/timezone-ids/. For example, 1 is America/Los_Angeles. Meta validates supported currencies and IDs. endAdvertiser, mediaAgency and partner default to NONE for the self-serve flow.

The new account is added atomically to an existing scoped ad-account allowlist. Unrestricted connections stay unrestricted. Reconnecting the same Meta identity preserves this scope unless a caller explicitly replaces it. Discovery is nudged immediately. Use the returned adAccountId with the existing ads endpoints.

This operation is not idempotent and Zernio never automatically retries it. Unknown body fields are rejected. No validateOnly or dry-run option is supported. After a timeout or a 502 with details.creationStatus=unknown, check the business in Ads Manager before attempting another creation. A 201 with connectionUpdated=false means the account exists but needs reconnecting with adAccountIds containing the returned ID and the previous scoped IDs via GET /v1/connect/facebook/ads. Do not repeat the create call.

post/v1/ads/accounts

Request body

accountIdstring required

Zernio metaads SocialAccount ID.

businessIdstring required

Business portfolio that will own the account.

namestring required

Ad account name. Whitespace is trimmed.

currencystring required

Uppercase ISO 4217 currency supported by Meta.

timezoneIdinteger required

Numeric Meta timezone ID from the linked timezone list. For example 1 is America/Los_Angeles.

endAdvertiserstring

End advertiser business or page ID. NONE uses the owning business.

mediaAgencystring

Media agency business or page ID. NONE for self-serve customers.

partnerstring

Partner business or page ID. NONE for self-serve customers.

invoiceboolean

Request Meta invoicing. Eligibility is determined by Meta.

invoiceGroupIdstring

Existing Meta invoice group ID.

invoicingEmailsstring[]

Addresses for Meta invoices.

ioboolean

Meta insertion-order invoicing option.

poNumberstring

Purchase order number.

fundingIdstring

Existing Meta funding reference. Does not add a payment method.

adAccountCreatedFromBmFlagboolean

Meta Business Manager creation flag.

Response

Ad account created. Check connectionUpdated and payment instructions.

adAccountIdstring required

New Meta ad account ID for subsequent ads calls.

businessIdstring required

Owning business portfolio ID.

connectionUpdatedboolean required

Whether the connection scope and discovery schedule were updated.

paymentMethodRequiredboolean required

Always true as a delivery prerequisite. This is not a live funding-source check. Confirm payment or invoicing in Ads Manager.

adsManagerUrlstring uri required

Open the created account in Ads Manager.

nextStepsstring required

Payment setup instructions for the user.

warningsstring[] required

Recovery instructions if the account could not be attached to the connection.

Changes