Ads
Crevio ads run across multiple platforms with a standard hierarchy: Campaign → Ad Group → Ad, plus custom audiences, pixels & conversions, and lead forms.Connect an ads account first
Ads need their own connection — separate from your other integrations — before you can sync or create campaigns.platform: "openaiads"; one key covers exactly one ad account. OpenAI has no read-only scope, so the key carries full campaign write access.
headline (3–50 characters), body (up to 100), image_url and link_url are all required. Budgets are lifetime-only with an end_date, bid_strategy plus bid_amount are required, and targeting is by country only.
The campaign hierarchy
Once connected, build top-down:Audiences, targeting, pixels, and conversions
- Custom audiences — build and reuse audience segments.
- Targeting search & reach estimates — search targeting options and estimate audience reach before you spend.
- Pixels & conversions — install pixels and report conversions back for optimization.
- Lead forms & leads — collect leads with on-platform forms and pull the resulting leads.
Boost a post and Click-to-WhatsApp
Turn an existing organic social post into a paid ad:Meta special ad categories
Meta requires housing, employment and financial ads to declare a special ad category. Sendspecial_ad_categories with special_ad_category_country on POST /ads, POST /ads/boost or POST /ads/ctwa:
HOUSING, EMPLOYMENT or FINANCIAL_PRODUCTS_SERVICES, Meta rejects narrowed targeting: omit age_min, age_max and gender, and use no ZIP codes, lookalikes or location exclusions. Meta’s error comes back as the API error.
Performance reports
Pull performance reports to see spend, results, and ROAS across the hierarchy, then feed that back into optimization — or let a Task do the optimizing on a schedule.Insights queries
GET /ads/insights runs a live performance query against the platform behind a connection, for anything the fixed reports don’t cover. The connection’s platform decides what you send:
- Google Ads: any read-only GAQL
SELECTinquery, for example search terms, keywords with Quality Score, geo, devices, assets or conversion actions. - Meta: Graph insights
fields,breakdownsandfilteringonobject_id, which must be the connection’s ad account (act_...) or one of its campaigns, ad sets or ads. - TikTok:
ad_account_id,data_level,dimensions,metrics,fromandto.
next_cursor for more rows. A query the platform rejects returns 400 with its message.
search_term_view.status says whether a term is already a keyword (ADDED), a negative (EXCLUDED) or neither (NONE).
Keywords and negatives
POST /ads/keywords adds keywords to a Google Search ad group (ad_group_id), keeping the ones already there. With "negative": true it adds negatives to one ad group (ad_group_id) or one campaign (campaign_id), never both, and keeps every negative already there. Each keyword is { "text": ..., "match_type": "exact" | "phrase" | "broad" }.
503 ad_provider_unavailable instead of overwriting newer negatives. Retry later, or add the negative at the ad-group level. When the agent makes these changes, it always asks for approval first.
Voice
Crevio places autonomous AI phone calls — inbound and outbound. You give the AI an objective and an opening line, and it makes the call. Voice is billed per minute.Place a call
POST /calls starts an outbound AI call.
Call events
Subscribe a webhook or an event-triggered Task tocall.started and call.ended instead of polling GET /calls. Both carry the call object; call.ended arrives after the call is billed, with its transcript and credits_charged.
The calls API and these events cover phone calls only. A call the account owner takes with their assistant in the browser stays in that chat: GET /calls doesn’t list it, and it sends no events.
Phone numbers
Provision a number to call from (and to receive inbound calls), and release it when you’re done.Texting
A phone number can send and receive texts once texting is on.POST /phone-numbers/{id}/texting turns it on and returns the number with its texting state: active, registering, or unsupported. While a US number is registering, carriers must approve the business before texts deliver. Send the owner sms_registration_url, a form for the business’s legal details that stays valid for 7 days. Calling the endpoint again re-reads the state and returns a fresh link once the old one expires. Texting becomes active on its own after approval.
Three booleans on PATCH /phone-numbers/{id} control what the number does with texts. All default to false.
POST /sms-messages sends one text. If the recipient texted the number in the last 24 hours it is a reply and sends immediately. Otherwise purpose applies: transactional (default) needs consent on file, and marketing needs written consent (web_form, checkout, or api). Texting first only sends between 8am and 9pm in the recipient’s time zone, and is capped at 3 texts per number per day. The first text to a number gets the business name and “Reply STOP to opt out.” added. Each segment (160 GSM-7 characters, or 70 with other characters) costs 1 credit. Pass an Idempotency-Key header to make retries safe.
422 with a code: no_consent, opted_out, frequency_capped, unreachable (not in the number’s country), or texting_unavailable.
POST /sms-follow-ups texts a group of past customers chosen by tag or customer_ids, with message as the first text. It takes the same variables as an email, such as {{ customer.first_name | default: "there" }} and one follow-up 3 days later if they don’t reply. These are marketing texts, so customers without written marketing consent, opted-out numbers, and numbers the line can’t text are skipped. The response counts them per reason. Read the outcome with GET /sms-follow-ups/stats?launch_id=... and the individual follow-ups with GET /sms-follow-ups?launch_id=.... POST /sms-follow-ups/{id}/cancel ends one as canceled, along with any text still waiting to go out.
Consent and do-not-call (TCPA)
Voice includes compliance tooling. Record TCPA consents before calling, and maintain do-not-call suppressions so the AI never dials a suppressed number.Next steps
Social
Boost organic posts into paid ads.
Tasks
Automate campaign optimization and follow-up calls.
Usage & credits
See how per-minute calls and ad operations bill.
API reference
Every ads and voice endpoint and parameter.

