### Install response (200) Source: https://docs.zernio.com/llms-full.txt Example JSON response returned when the install call succeeds. It includes the installed tag ID, web pixel ID, and a list of tags for other platforms. ```json { "platform": "metaads", "install": { "storeAccountId": "66b2e19d8c3f5a7e9d0b1c3e", "platform": "shopify", "shopDomain": "acme.myshopify.com", "tagPlatform": "metaads", "siteTagId": "1729525464415281", "installed": true, "installedTagId": "1729525464415281", "webPixelId": "2031620387", "tags": [ { "platform": "metaads", "siteTagId": "1729525464415281" }, { "platform": "tiktokads", "siteTagId": "D00IKHRC77UE0J0RTNHG" } ], "replacedTagId": null } } ``` -------------------------------- ### Install response (200) for X Pixel Source: https://docs.zernio.com/llms-full.txt Example JSON response from the install endpoint, showing an X Pixel installation with details like widget ID, sidebar, and homepage check result. ```json { "platform": "xads", "install": { "storeAccountId": "66b2e19d8c3f5a7e9d0b1c4f", "platform": "wordpress", "siteUrl": "https://example.com", "tagPlatform": "xads", "siteTagId": "o8z1q", "installed": true, "method": "wordpress_widget", "widgetId": "custom_html-3", "sidebarId": "sidebar-1", "sidebarName": "Footer", "created": true, "homepageCheck": "found" } } ``` -------------------------------- ### Successful install response (200) Source: https://docs.zernio.com/llms-full.txt Example JSON response returned when the tracking tag is successfully installed on the WordPress site. It includes the platform, install details, widget ID, sidebar info, and homepage check status. ```json { "platform": "metaads", "install": { "storeAccountId": "66b2e19d8c3f5a7e9d0b1c4f", "platform": "wordpress", "siteUrl": "https://example.com", "tagPlatform": "metaads", "siteTagId": "1729525464415281", "installed": true, "method": "wordpress_widget", "widgetId": "custom_html-2", "sidebarId": "sidebar-1", "sidebarName": "Footer", "created": true, "homepageCheck": "found" } } ``` -------------------------------- ### Install response (200) with TikTok Pixel added Source: https://docs.zernio.com/llms-full.txt Example JSON response showing a successful install. The response includes the installed tag details, the web pixel ID, and the list of all tags on the store. Note that siteTagId, installedTagId, replacedTagId, and tags carry on-site IDs, not the API tagId. ```json { "platform": "tiktokads", "install": { "storeAccountId": "66b2e19d8c3f5a7e9d0b1c3e", "platform": "shopify", "shopDomain": "acme.myshopify.com", "tagPlatform": "tiktokads", "siteTagId": "D00IKHRC77UE0J0RTNHG", "installed": true, "installedTagId": "D00IKHRC77UE0J0RTNHG", "webPixelId": "2031620387", "tags": [ { "platform": "metaads", "siteTagId": "1729525464415281" }, { "platform": "tiktokads", "siteTagId": "D00IKHRC77UE0J0RTNHG" } ], "replacedTagId": null } } ``` -------------------------------- ### Start Embedded Signup with GET /v1/connect/whatsapp (Python) Source: https://docs.zernio.com/llms-full.txt Python equivalent of the Node.js example. Uses the Zernio client to get the auth URL for Embedded Signup. ```python from zernio import Zernio client = Zernio() profile_id = "66a1f0c2a4b9d3e8f1a2b3c4" connect = client.connect.get_connect_url( platform="whatsapp", profile_id=profile_id, redirect_url="https://myapp.com/callback", onboarding="api", ) print(connect["authUrl"]) ``` -------------------------------- ### GET /v1/accounts/{accountId}/messenger-get-started Source: https://docs.zernio.com/llms-full.txt Retrieves the current Get Started button settings. ```APIDOC ## GET /v1/accounts/{accountId}/messenger-get-started ### Description Retrieves the current Get Started button settings. ### Method GET ### Endpoint /v1/accounts/{accountId}/messenger-get-started ### Parameters #### Path Parameters - **accountId** (string) - Required - The account identifier. ### Response #### Success Response (200) - **payload** (string) - The current Get Started payload. ``` -------------------------------- ### Example output from accounts_list tool Source: https://docs.zernio.com/llms-full.txt Example response from the accounts_list tool showing connected accounts with platform, username, and ID. This output is displayed after asking the assistant to list connected accounts. ```text Found 2 connected account(s): - instagram: acmecorp (ID: 66b2e19d8c3f5a7e9d0b1c2d) - linkedin: acme (ID: 66b2e19d8c3f5a7e9d0b1c2e) ``` -------------------------------- ### GET /v1/connect/{platform} Source: https://docs.zernio.com/llms-full.txt Initiates the OAuth connection flow for a given platform. Pass the customer's profileId to associate the new account with their profile. Use headless=true to render the selection screens yourself. Returns an authUrl to redirect the customer's browser to. ```APIDOC ## GET /v1/connect/{platform} ### Description Initiates the OAuth connection flow for a given platform. Pass the customer's profileId to associate the new account with their profile. Use headless=true to render the selection screens yourself. Returns an authUrl to redirect the customer's browser to. ### Method GET ### Endpoint /v1/connect/{platform} ### Parameters #### Path Parameters - **platform** (string) - Required - The platform to connect (e.g., 'instagram'). #### Query Parameters - **profileId** (string) - Required - The customer's profile ID. - **redirect_url** (string) - Optional - The URL to redirect the customer's browser to after authorization. - **headless** (boolean) - Optional - Set to true to draw the selection screens yourself instead of using Zernio-hosted ones. ### Request Example ```bash curl "https://zernio.com/api/v1/connect/instagram?profileId=66a1f0c2a4b9d3e8f1a2b3c4&redirect_url=https://your-app.com/callback" \ -H "Authorization: Bearer $ZERNIO_API_KEY" ``` ### Response #### Success Response (200) - **authUrl** (string) - The URL to redirect the customer's browser to for authorization. - **state** (string) - A state parameter for CSRF protection. #### Response Example ```json { "authUrl": "https://www.instagram.com/oauth/authorize?client_id=...", "state": "..." } ``` ``` -------------------------------- ### Response: Start Call Source: https://docs.zernio.com/llms-full.txt Example 200 response from the start call. The last segment of verification.name is the verificationId needed for the complete call. ```json { "success": true, "verification": { "name": "locations/12345678901234567890/verifications/4T1775504407481", "method": "SMS", "state": "PENDING", "createTime": "2026-04-07T10:12:00Z" } } ``` -------------------------------- ### List products with Python client Source: https://docs.zernio.com/llms-full.txt Calls client.products.list_products with account_id, status, query, and limit. Iterates over the returned products and prints id and title. ```python page = client.products.list_products( account_id="66b2e19d8c3f5a7e9d0b1c2d", status="active", query="vendor:Acme tag:summer", limit=20, ) for product in page["products"]: print(product["id"], product["title"]) ``` -------------------------------- ### Port-in requirements response example Source: https://docs.zernio.com/llms-full.txt Example 200 response showing supported requirements with fields for CIF, ID copy, and service address. The 'kind' field determines how to satisfy each requirement. ```json { "country": "ES", "numberType": "local", "supported": true, "fields": [ { "requirementId": "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d", "label": "CIF", "kind": "text", "example": "B12345674" }, { "requirementId": "b2c3d4e5-f6a7-4b8c-9d0e-1f2a3b4c5d6e", "label": "ID copy", "kind": "file" }, { "requirementId": "c3d4e5f6-a7b8-4c9d-8e0f-2a3b4c5d6e7f", "label": "Service address", "kind": "address" } ] } ``` -------------------------------- ### GET /v1/accounts/{accountId}/messenger-get-started Source: https://docs.zernio.com/llms-full.txt Retrieves or configures the Get Started button for Facebook Messenger. This endpoint is part of the account settings API. ```APIDOC ## GET /v1/accounts/{accountId}/messenger-get-started ### Description Retrieves or configures the Get Started button for Facebook Messenger. ### Method GET ### Endpoint /v1/accounts/{accountId}/messenger-get-started ### Parameters #### Path Parameters - **accountId** (string) - Required - The account identifier. ### Response #### Success Response (200) - **getStarted** (object) - The Get Started button configuration. #### Response Example { "getStarted": {} } ``` -------------------------------- ### List accounts and create post in Python Source: https://docs.zernio.com/llms-full.txt Use the Zernio Python client to list accounts for a profile_id, then create a post with those account ids. The post is published immediately with publish_now=True. Prints the resulting post status. ```python listed = client.accounts.list_accounts(profile_id=profile_id) published = client.posts.create_post( content="Posted from your app.", platforms=[ {"platform": a["platform"], "accountId": a["_id"]} for a in listed["accounts"] ], publish_now=True, ) print(published["post"]["status"]) ``` -------------------------------- ### Response from GET /v1/whatsapp/calling Source: https://docs.zernio.com/llms-full.txt Example 200 response from the GET calling config endpoint. Shows the phoneNumberDocId, current destination, and recording flag. ```json { "phoneNumberDocId": "66f6c3d4e5f6a7b8c9d0e1f3", "phoneNumber": "+14155550100", "callingEnabled": false, "callDeepLink": null, "forwardTo": null, "recordingEnabled": false, "sipAuthUsername": null, "sipAuthPasswordConfigured": false, "callerIdMode": "business", "callerIdVerified": true, "maxCallDurationSeconds": null, "forwardCallerId": "business" } ``` -------------------------------- ### Get a store JSON response Source: https://docs.zernio.com/llms-full.txt Example response from the Get a store endpoint showing store details, capabilities, missingCapabilities, and grantPermissionsUrl for a Shopify store. ```json { "store": { "accountId": "66b2e19d8c3f5a7e9d0b1c2d", "platform": "shopify", "name": "Acme", "domain": "acme.myshopify.com", "url": "https://acme.com", "currency": "USD", "country": "US", "capabilities": ["products.read", "products.create", "products.update", "products.status", "products.price", "products.variants", "products.images", "collections.read", "collections.write", "collections.metafields", "metafields.read", "metafields.write", "pages.read", "pages.write"], "missingCapabilities": ["products.images_remove", "inventory.read", "inventory.write", "channels.read", "channels.write", "discounts.read", "discounts.write", "discounts.codes", "navigation.read", "navigation.write", "metaobjects.read", "metaobjects.write", "markets.read", "markets.write", "marketing.write"], "grantPermissionsUrl": "https://admin.shopify.com/store/acme/oauth/install?client_id=...&optional_scopes=write_files%2Cwrite_inventory%2Cread_locations%2C..." } } ``` -------------------------------- ### Example response for GET /v1/ads/recommendations Source: https://docs.zernio.com/llms-full.txt Shows a trimmed 200 response with one recommendation. resourceName is used to apply or dismiss; the bare id also works. impact is null when Google gives no estimate. details fields depend on type and are in micros. ```json { "adAccountId": "1234567890", "recommendations": [ { "resourceName": "customers/1234567890/recommendations/NjgzMzAxODc4NS0yNDItMTc5MDQzODQxMDc1NC0rMjQxOTE1ODU2NzEtMA", "id": "NjgzMzAxODc4NS0yNDItMTc5MDQzODQxMDc1NC0rMjQxOTE1ODU2NzEtMA", "type": "FORECASTING_SET_TARGET_CPA", "dismissed": false, "campaignId": "21874563210", "campaignIds": ["21874563210"], "adGroupId": null, "campaignBudgetId": null, "impact": { "base": { "impressions": 2790, "clicks": 87, "cost": 420, "conversions": 3.96, "conversionsValue": 0, "videoViews": 0 }, "potential": { "impressions": 5909, "clicks": 185, "cost": 889.58, "conversions": 8.39, "conversionsValue": 0, "videoViews": 0 } }, "details": { "recommendedTargetCpaMicros": "105420000", "campaignBudget": { "currentAmountMicros": "60000000", "recommendedNewAmountMicros": "140000000", "newStartDate": "2026-10-01" } } } ], "cachedAt": null, "stale": false } ``` -------------------------------- ### Response for GET /v1/connect/discord Source: https://docs.zernio.com/llms-full.txt Example JSON response (200) from the GET connect URL endpoint. Contains the authUrl to redirect the user to and a state value. ```json { "authUrl": "https://discord.com/oauth2/authorize?client_id=...", "state": "..." } ``` -------------------------------- ### Response for GET tracking tags Source: https://docs.zernio.com/llms-full.txt Example 200 response from the GET /v1/ads/{adId}/tracking-tags endpoint. Shows the platform, level, trackingUrlTemplate, and finalUrlSuffix fields. ```json { "platform": "google", "level": "campaign", "trackingUrlTemplate": "{lpurl}?utm_source=google", "finalUrlSuffix": "utm_medium=cpc" } ``` -------------------------------- ### Create a profile with POST /v1/profiles Source: https://docs.zernio.com/llms-full.txt Call POST /v1/profiles with a name to create a profile. The response includes a profile._id that serves as the profileId for subsequent steps. ```bash curl -X POST https://zernio.com/api/v1/profiles \ -H "Authorization: Bearer $ZERNIO_API_KEY" \ -H "Content-Type: application/json" \ -d '{"name": "My Brand"}' ``` -------------------------------- ### Create catalog sales campaign in Python Source: https://docs.zernio.com/llms-full.txt Uses client.ad_campaigns.create_standalone_ad with goal 'catalog_sales'. No imageUrl or video is provided because Meta renders visuals from catalog items. The headline and description use catalog template tags like {{vehicle.year}} and {{vehicle.price}}. ```python created = client.ad_campaigns.create_standalone_ad( account_id="66b2e19d8c3f5a7e9d0b1c2d", ad_account_id="act_1234567890", name="Vehicle inventory, catalog", goal="catalog_sales", budget_amount=30, budget_type="daily", headline="{{vehicle.year}} {{vehicle.make}} {{vehicle.model}}", body="Find your next car", description="{{vehicle.price}}", call_to_action="LEARN_MORE", link_url="https://example.com/inventory", countries=["US"], optimization_goal="OFFSITE_CONVERSIONS", promoted_object={ "productSetId": "1003260032095191", "pixelId": "1729525464415281", "customEventType": "PURCHASE", }, ) ``` -------------------------------- ### DELETE /v1/accounts/{accountId}/messenger-get-started Source: https://docs.zernio.com/llms-full.txt Deletes the Get Started button settings. ```APIDOC ## DELETE /v1/accounts/{accountId}/messenger-get-started ### Description Deletes the Get Started button settings. ### Method DELETE ### Endpoint /v1/accounts/{accountId}/messenger-get-started ### Parameters #### Path Parameters - **accountId** (string) - Required - The account identifier. ### Response #### Success Response (200) - **success** (boolean) - Indicates if the operation succeeded. ``` -------------------------------- ### Connect an account (Python) Source: https://docs.zernio.com/llms-full.txt Call client.connect.get_connect_url with platform and profile_id. Prints the authUrl. ```python connect = client.connect.get_connect_url( platform="linkedin", profile_id=profile_id, ) print(connect["authUrl"]) ``` -------------------------------- ### Response for GET /v1/whatsapp/conversions Source: https://docs.zernio.com/llms-full.txt Example 200 response from the GET /v1/whatsapp/conversions endpoint. It contains an events array with details such as timestamp, eventName, conversationId, eventsReceived, eventsFailed, traceId, and durationMs. ```json { "events": [ { "timestamp": "2027-01-01T09:15:02Z", "eventName": "LeadSubmitted", "conversationId": "66c3d2ae7b4f6c8d0e1f2a3b", "eventsReceived": 1, "eventsFailed": 0, "traceId": "AbCdEfGhIjKlMn0pQrStUv", "durationMs": 412 } ] } ``` -------------------------------- ### Create a post with Zernio Python SDK Source: https://docs.zernio.com/llms-full.txt Use the Zernio Python SDK to publish a post to multiple platforms. The example uses the create_post method with content, a list of platform dictionaries, and publish_now=True. The response is a dictionary containing the post status. ```python from zernio import Zernio client = Zernio() published = client.posts.create_post( content="Our changelog for September is out", platforms=[ {"platform": "twitter", "accountId": "66b2e19d8c3f5a7e9d0b1c2d"}, {"platform": "linkedin", "accountId": "66b2e19d8c3f5a7e9d0b1c2e"}, {"platform": "bluesky", "accountId": "66b2e19d8c3f5a7e9d0b1c2f"}, ], publish_now=True, ) print(published["post"]["status"]) ``` -------------------------------- ### Response 200 for GET location details Source: https://docs.zernio.com/llms-full.txt Example JSON response from the GET endpoint, showing the location block with placeId, reviewUrl, mapsUri, and isVerified, plus regularHours and specialHours. ```json { "success": true, "accountId": "66b2e19d8c3f5a7e9d0b1c2d", "locationId": "12345678901234567890", "location": { "name": "Joe's Pizza", "placeId": "ChIJExampleJoesPizzaPlaceId", "reviewUrl": "https://search.google.com/local/writereview?placeid=ChIJExampleJoesPizzaPlaceId", "mapsUri": "https://maps.google.com/maps?cid=1234567890123456789", "isVerified": true }, "title": "Joe's Pizza", "regularHours": { "periods": [ { "openDay": "MONDAY", "openTime": "11:00", "closeDay": "MONDAY", "closeTime": "22:00" } ] }, "specialHours": { "specialHourPeriods": [{ "startDate": { "year": 2026, "month": 12, "day": 25 }, "closed": true }] }, "profile": { "description": "Authentic New York style pizza since 1985" }, "websiteUri": "https://joespizza.com" } ``` -------------------------------- ### Create and publish a post (Python) Source: https://docs.zernio.com/llms-full.txt Uses the Zernio Python client to create a post with publish_now=True. Requires an accountId for the target platform. Prints the platformPostUrl from the response. ```python from zernio import Zernio client = Zernio() published = client.posts.create_post( content="Shipping day. The API is live.", platforms=[ {"platform": "twitter", "accountId": "66b2e19d8c3f5a7e9d0b1c2d"} ], publish_now=True ) print(published["post"]["platforms"][0]["platformPostUrl"]) ``` -------------------------------- ### GET /v1/sms/opt-outs Source: https://docs.zernio.com/llms-full.txt Retrieves the audit trail of STOP and START opt-out events for SMS. ```APIDOC ## GET /v1/sms/opt-outs ### Description Retrieves the audit trail of STOP and START opt-out events for SMS. ### Method GET ### Endpoint /v1/sms/opt-outs ### Response #### Success Response (200) No response body is documented. ``` -------------------------------- ### Response for GET /v1/ads/keywords Source: https://docs.zernio.com/llms-full.txt Example 200 response containing a keywords array with details like platformCriterionId, resourceName, metrics, and pagination. The metrics are a trailing 30-day window in account currency. ```json { "keywords": [ { "id": "66f2b3c4d5e6f7a8b9c0d1e2", "platformCriterionId": "987654321", "resourceName": "customers/1234567890/adGroupCriteria/165489732105~987654321", "platform": "google", "adAccountId": "1234567890", "campaignId": "21874563210", "campaignName": "US DevOps Search", "adSetId": "165489732105", "adSetName": "US DevOps Search", "keyword": "internal developer platform", "matchType": "exact", "status": "active", "negative": false, "qualityScore": 7, "metrics": { "windowDays": 30, "clicks": 84, "impressions": 2210, "cost": 61.4, "conversions": 3, "firstPageCpc": 0.42, "firstPositionCpc": 1.9 } } ], "pagination": { "page": 1, "limit": 100, "total": 1, "pages": 1 } } ``` -------------------------------- ### Response for GET /v1/ads/leads Source: https://docs.zernio.com/llms-full.txt Example JSON response from the leads endpoint. The fields object maps question names to answers, and campaignId corresponds to the LinkedIn Campaign, which is platformAdSetId on GET /v1/ads. ```json { "status": "success", "leads": [ { "id": "66f1a2b3c4d5e6f7a8b9c0d1", "leadgenId": "9021734", "formId": "4210986", "formName": "Q3 Whitepaper form", "campaignId": "810456563", "createdTime": "2027-01-06T09:12:44.000Z", "fields": { "company": "Acme", "size": "11 to 50" } } ], "pagination": { "hasMore": false, "cursor": null } } ``` -------------------------------- ### GET /v1/accounts/{accountId}/tracking-tags/{tagId}/install Source: https://docs.zernio.com/llms-full.txt Retrieves the installation status of a Meta pixel on a Shopify store. The response includes the currently installed Meta pixel and all Zernio tags on the store. ```APIDOC ## GET /v1/accounts/{accountId}/tracking-tags/{tagId}/install ### Description Retrieves the installation status of a Meta pixel on a Shopify store. The response includes the currently installed Meta pixel and all Zernio tags on the store. ### Method GET ### Endpoint /v1/accounts/{accountId}/tracking-tags/{tagId}/install ### Parameters #### Path Parameters - **accountId** (string) - Required - The Meta ads account that owns the pixel. - **tagId** (string) - Required - The ID of the tracking tag. #### Query Parameters - **storeAccountId** (string) - Required - The Shopify account ID. ### Response #### Success Response (200) - **installedTagId** (string) - The ID of the Meta pixel currently firing on the store. - **tags** (array) - List of all Zernio tags on the store. - **platform** (string) - The platform of the tag. - **siteTagId** (string) - The ID of the tag. ### Error Responses #### 409 reconnect_required - **error** (string) - Error message. - **type** (string) - Error type (e.g., "permission_error"). - **code** (string) - Error code (e.g., "reconnect_required"). - **param** (string) - The parameter causing the error. - **platform** (string) - The platform. - **details** (object) - Additional details. - **missingScopes** (array) - Missing OAuth scopes. - **authUrl** (string) - URL for merchant re-approval. ``` -------------------------------- ### Configure Zernio and create a post Source: https://docs.zernio.com/llms-full.txt Configure the access token once with Zernio.configure, then instantiate the PostsApi class. This example publishes a post to a LinkedIn account; accountId comes from GET /v1/accounts. On success, prints the platform post URL; on error, prints the status code and response body. ```ruby require 'zernio-sdk' Zernio.configure do |config| config.access_token = ENV['ZERNIO_API_KEY'] end posts_api = Zernio::PostsApi.new request = Zernio::CreatePostRequest.new( content: 'Hello from the Zernio Ruby SDK', platforms: [ Zernio::CreatePostRequestPlatformsInner.new(platform: 'linkedin', account_id: '66b2e19d8c3f5a7e9d0b1c2d'), ], publish_now: true ) begin result = posts_api.create_post(request, debug_return_type: 'PostCreateResponse') puts result.post.platforms.first.platform_post_url rescue Zernio::ApiError => e puts "Status: #{e.code}" puts "Body: #{e.response_body}" end ``` -------------------------------- ### Install zernio-go and set API key Source: https://docs.zernio.com/llms-full.txt Run `go get` to install the official Go client and export the ZERNIO_API_KEY environment variable. The API key is later placed in the request context under `zernio.ContextAccessToken`. ```bash go get github.com/zernio-dev/zernio-go export ZERNIO_API_KEY="sk_..." ``` -------------------------------- ### Publish a post with posts:create Source: https://docs.zernio.com/llms-full.txt Publishes a post to a single account immediately using the --text, --accounts, and --pretty flags. The --accounts flag takes an account ID, and the CLI fills in the platform. The output is the 201 response body from POST /v1/posts. ```bash zernio posts:create \ --text "The spring collection is live." \ --accounts 66b2e19d8c3f5a7e9d0b1c2d \ --pretty ``` -------------------------------- ### Sample JSON response from daily-metrics Source: https://docs.zernio.com/llms-full.txt Example 200 response showing dailyData with per-day metrics and platformBreakdown. ```json { "dailyData": [ { "date": "2026-08-13", "postCount": 3, "platforms": { "instagram": 2, "twitter": 1 }, "metrics": { "impressions": 4210, "reach": 3105, "likes": 312, "comments": 41, "shares": 18, "saves": 27, "clicks": 63, "views": 3890 } } ], "platformBreakdown": [ { "platform": "instagram", "postCount": 2, "impressions": 2884, "likes": 240 } ] } ``` -------------------------------- ### GET /v1/accounts/{accountId}/tracking-tags/{tagId} Source: https://docs.zernio.com/llms-full.txt Checks the installation status of a tracking tag for a store. Returns whether the tag is installed, which tag of that platform is currently fired, and lists all Zernio tags on the store. ```APIDOC ## GET /v1/accounts/{accountId}/tracking-tags/{tagId} ### Description Checks the installation status of a tracking tag for a store. Returns whether the tag is installed, which tag of that platform is currently fired, and lists all Zernio tags on the store. ### Method GET ### Endpoint /v1/accounts/{accountId}/tracking-tags/{tagId} ### Parameters #### Path Parameters - **accountId** (string) - Required - The connected ads account ID. - **tagId** (string) - Required - The tracking tag ID. #### Query Parameters - **storeAccountId** (string) - Required - The store's account ID. ### Response #### Success Response (200) - **installed** (boolean) - Whether the tag is installed. - **installedTagId** (string) - The on-site tag ID currently fired for that platform. - **tags** (array) - List of all Zernio tags on the store. #### Response Example { "installed": true, "installedTagId": "D00IKHRC77UE0J0RTNHG", "tags": [ { "platform": "metaads", "siteTagId": "1729525464415281" }, { "platform": "tiktokads", "siteTagId": "D00IKHRC77UE0J0RTNHG" } ] } ``` -------------------------------- ### Fetch WhatsApp pricing analytics with curl Source: https://docs.zernio.com/llms-full.txt Call GET /v1/whatsapp/pricing-analytics with accountId, start, end, granularity, and dimensions to get message volume and approximate cost. Meta's figures are approximate and can lag. ```bash curl "https://zernio.com/api/v1/whatsapp/pricing-analytics?accountId=66b2e19d8c3f5a7e9d0b1c2d&start=2026-09-01&end=2026-09-30&granularity=DAILY&dimensions=PRICING_CATEGORY" \ -H "Authorization: Bearer $ZERNIO_API_KEY" ``` -------------------------------- ### Create a profile with POST /v1/profiles Source: https://docs.zernio.com/llms-full.txt Creates a Kapso profile for a customer. Returns a 201 response with a profile object containing the _id used as profileId in subsequent steps. ```bash curl -X POST https://zernio.com/api/v1/profiles \ -H "Authorization: Bearer $ZERNIO_API_KEY" \ -H "Content-Type: application/json" \ -d '{"name": "Acme Corporation"}' ``` ```json { "message": "Profile created successfully", "profile": { "_id": "66a1f0c2a4b9d3e8f1a2b3c4", "name": "Acme Corporation", "isDefault": false } } ``` -------------------------------- ### Start 10DLC registration with Zernio Python SDK Source: https://docs.zernio.com/llms-full.txt Use the Zernio Python SDK to start a 10DLC SMS registration. Requires the same brand and campaign fields as the Node.js example. The response contains a registrationId. ```python from zernio import Zernio client = Zernio() registration = client.sms.start_sms_registration( phone_numbers=["+14155550100"], registration_type="standard_10dlc", brand={ "entityType": "PRIVATE_PROFIT", "displayName": "Acme", "companyName": "Acme Inc.", "ein": "12-3456789", "phone": "+14155550199", "country": "US", "vertical": "TECHNOLOGY", "website": "https://acme.example.com", "street": "123 Market St", "city": "San Francisco", "state": "CA", "postalCode": "94105", }, campaign={ "usecase": "CUSTOMER_CARE", "description": "Order updates and support replies for Acme customers.", "messageFlow": "Customers opt in at checkout on https://acme.example.com/checkout by ticking the SMS updates box.", "sample1": "Acme: your order #1234 has shipped. Reply STOP to opt out.", "sample2": "Acme: a support agent replied to your ticket. Reply HELP for help.", "optinKeywords": "START", "optoutKeywords": "STOP", "helpKeywords": "HELP", }, ) registration_id = registration["registrationId"] ```