ChangelogImproved

Answer analysis drops to 1 credit

API
Answer analysis going from 2 credits to 1, beside an analysis of a ChatGPT answer that ranks Northwind first and Acme CRM second, both recommended, with the cited sites marked owned and reviews

An answer task with include.analysis returns every brand the answer names with its rank, recommendation and sentiment, plus the kind of each cited site, at half the previous price.

What changed

  • Answer analysis costs 1 credit per task on top of the engine price (before: 2). A ChatGPT answer with analysis costs 2 credits in total.
  • Each cited site gets a finer kind: editorial, review_media, pr_wire, reviews, commerce, social, blog, community, video and institution for known sites. Any other site is classified once as brand, content or one of these kinds, and the result is reused.
  • A spelling the analysis confirms as a brand’s own name, such as 컬리 for Kurly, is kept and matched by rule in later answers.
  • Analysis runs on CHATGPT, GEMINI, PERPLEXITY, GOOGLE, AIMODE, NAVER_AI_BRIEF and NAVER_AI_TAB tasks.

How it works

A model decides which names are brands, which one is yours, and recommended and sentiment. Positions, ranks, name matching and source kinds are computed by rules, so the same reading gives the same result.

Your brand and competitors are matched by name and alias with the rules a monitor uses: whole words in Latin script, anywhere in Korean, Japanese, Chinese and Thai. The model reads the first 40,000 characters of the answer, and the analysis adds a few seconds before the task completes.

Where it helps

  • Compute mention rate, average position and share of voice across your prompts straight from analysis.targets.
  • Compare how each engine speaks of your brand and your competitors with recommended and sentiment.
  • See which kinds of sites the engines cite in your category with sources[].kind, and where your own site appears as owned.

Send a request

Send the request with your API key in the Authorization header.

curl -X POST https://api.querying.ai/v1/async/task \
  -H "Authorization: Bearer $QUERYING_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "taskType": "CHATGPT",
    "payload": {
      "prompt": "best CRM for a small team",
      "country": "US",
      "include": { "analysis": true },
      "brand": "Acme CRM",
      "brandAliases": ["Acme"],
      "brandDomains": ["acme-crm.example"],
      "competitors": [
        "Northwind",
        {
          "name": "Contoso CRM",
          "aliases": ["Contoso"],
          "domains": ["contoso-crm.example"]
        }
      ]
    }
  }'

Request fields

taskTypestringRequired
The engine to run, such as CHATGPT or GOOGLE.
payload.promptstringRequired
The question, written the way a user types it into the chat. Up to 100,000 characters.
payload.countrystring
Two-letter country code of the market to ask from, such as US, KR or JP. Default US.
payload.include.analysisbooleanRequired
true adds analysis: every brand the answer names, with rank, recommendation, sentiment and the kind of each cited site. 1 credit on top of the engine price.
payload.brandstring
Your brand’s name, up to 200 characters. It appears in analysis.targets with role brand.
payload.brandAliasesarray
Up to 20 other names the answer may use for your brand. Only with brand.
payload.brandDomainsarray
Up to 20 of your sites, such as acme-crm.example. A citation on one of them or a subdomain has kind owned. Only with brand.
payload.competitorsarray
Up to 50 competitors. Each is a name, or { name, aliases, domains } with up to 20 aliases and 20 domains. They appear in analysis.targets with role competitor.

Response

A finished task looks like this, trimmed for length.

JSON
{
  "success": true,
  "task": {
    "id": "…",
    "taskType": "CHATGPT",
    "status": "COMPLETED",
    "createdAt": "…"
  },
  "credits": { "creditsToCharge": 2, "creditsCharged": 2 },
  "response": {
    "text": "…",
    "analysis": {
      "version": 1,
      "status": "ok",
      "brands": [
        {
          "name": "Northwind",
          "rank": 1,
          "role": "competitor",
          "recommended": true,
          "sentiment": "positive",
          "sentimentScore": 0.9
        },
        {
          "name": "Acme CRM",
          "rank": 2,
          "role": "brand",
          "recommended": true,
          "sentiment": "positive",
          "sentimentScore": 0.5
        },
        {
          "name": "Fabrikam",
          "rank": 3,
          "role": null,
          "recommended": false,
          "sentiment": "neutral",
          "sentimentScore": 0
        }
      ],
      "targets": [
        {
          "name": "Acme CRM",
          "role": "brand",
          "mentioned": true,
          "rank": 2,
          "recommended": true,
          "sentiment": "positive",
          "sentimentScore": 0.5,
          "cited": true
        },
        {
          "name": "Northwind",
          "role": "competitor",
          "mentioned": true,
          "rank": 1,
          "recommended": true,
          "sentiment": "positive",
          "sentimentScore": 0.9,
          "cited": false
        },
        {
          "name": "Contoso CRM",
          "role": "competitor",
          "mentioned": false,
          "rank": null,
          "recommended": null,
          "sentiment": null,
          "sentimentScore": null,
          "cited": false
        }
      ],
      "sources": [
        {
          "position": 1,
          "url": "https://www.acme-crm.example/pricing",
          "domain": "acme-crm.example",
          "kind": "owned",
          "brand": "Acme CRM"
        },
        {
          "position": 2,
          "url": "https://www.g2.com/categories/crm",
          "domain": "g2.com",
          "kind": "reviews",
          "brand": null
        }
      ]
    }
  }
}
response.analysis.statusstring
ok when the analysis ran. no_answer when the engine returned no answer text, and failed when the analysis could not run. Only ok is charged.
response.analysis.brandsarray
Every brand the answer names, in the order it first names each. rank starts at 1, and a product counts for its maker. Each has recommended, sentiment and sentimentScore.
response.analysis.targetsarray
The brands you sent, in your order, each with mentioned, its rank in brands and cited for a citation on one of its domains.
response.analysis.sources[].kindstring
The kind of each cited site: owned and competitor from your domains, then editorial, review_media, pr_wire, reviews, commerce, social, blog, community, video, institution, brand, content or other.

Receive the result

The request returns the task right away with status QUEUED. Poll GET /v1/async/task/{id} until status is COMPLETED or FAILED, or add webhook.url and the finished task arrives at your server with the same task, credits and response. Results stay available for 24 hours after a task finishes.

curl https://api.querying.ai/v1/async/task/$TASK_ID \
  -H "Authorization: Bearer $QUERYING_API_KEY"

Pricing

The task holds 1 credit for the analysis at submit and charges it only when analysis.status is ok. With no_answer or failed, the credit is released and the task completes with its answer. Plans and credit prices are listed at https://querying.ai/pricing .

More updates

Stay in the loop

Get new product updates in your inbox.

RSS feed