DumGumDocs
Search documentation

Loading search…

API Reference

Project Statistics

GET/cs/v1/content_creation/statistics/project

Usage and cost for a single project, bucketed by day or by calendar month over the date range you ask for.

Figures are recomputed every 15 minutes from closed billing records, so the current day stays partial until it ends (UTC) and may still move slightly afterwards.

startDate and endDate are both inclusive, and days are counted in UTC — a range of 2026-07-01 to 2026-07-31 covers the whole of July.

Open interactive API explorer ↗ · Download OpenAPI

Authentication

bearerAuth

Bearer authentication header of the form Bearer <token>, where <token> is an access key.

Example: Authorization: Bearer sk-proj-XXXXXXXXX

Type: bearer

Parameters

#projectGid query · stringrequired

The project to report on. When you authenticate with an access key, this must be the project that key belongs to.

Type: string
#startDate query · stringrequired

First day to include, as YYYY-MM-DD (UTC). Inclusive.

Type: string
#endDate query · stringrequired

Last day to include, as YYYY-MM-DD (UTC). Inclusive.

Type: string
#groupBy query · string

Size of each bucket in rows: one row per day, or one row per calendar month.

Type: stringdefault: "DAILY"

Allowed values: "DAILY", "MONTHLY"

Responses

#200 Response

OK

#*/*

Usage and cost for a project over the requested range, split into buckets plus a grand total.

Every amount is in your account currency, as a decimal string so no precision is lost when you parse it.

Type: object
#rows arrayrequired

One entry per bucket that recorded activity, most recent first. Buckets with no activity at all are omitted.

Type: array
#Array items

Usage and cost recorded for one bucket of the requested range.

Type: object
#date stringrequired

The bucket, as YYYY-MM-DD. With groupBy=MONTHLY this is the first day of that month.

Type: string
#metrics objectrequired

What the project used and what it cost, over one bucket or over the whole requested range.

Counts are integers. Amounts are in your account currency, as plain decimal strings (21.25, 0.0) so no precision is lost when you parse them.

Type: object
#answerMessageCount integerrequired

How many of your users' messages the answers of this bucket replied to.

Type: integerformat: "int64"
#answerHumanCount integerrequired

Answers written by a human operator, in HUMAN reply mode.

Type: integerformat: "int64"
#answerHumanCost stringrequired

What those human-written answers cost you.

Type: string
#answerAiCount integerrequired

Answers generated by the model, in AI reply mode.

Type: integerformat: "int64"
#answerAiCost stringrequired

What those AI answers cost you.

Type: string
#messageDroppedCount integerrequired

Generation requests that ended without a reply — dropped by a guardrail, or with nothing to answer. Not billed.

Type: integerformat: "int64"
#answerActionCount integerrequired

Answers carrying an action rather than a text reply (ACTION_* types: pokes, picture requests, profile reports, …).

Type: integerformat: "int64"
#cost stringrequired

Everything billed on the answers of this bucket — AI and human replies, plus any Smart Fetch performed while writing them. This is the figure to use for a project's answer spend.

Media analyses and suggestion requests are billed outside of answers, so they are not part of this amount. They appear here as counts (photoAnalysisCount, videoAnalysisCount, audioAnalysisCount, icebreakerSuggestionCount, followupSuggestionCount) — multiply them by your per-unit price to get their spend.

Type: string
#answerFreeCount integerrequired

Answers that were not billed — mostly the follow-up messages of a multi-message reply, which is billed once on the first answer.

Type: integerformat: "int64"
#photoAnalysisCount integerrequired

Photo Analyses run on pictures your users sent. Billed outside of answers — see cost.

Type: integerformat: "int64"
#photoAnalysisCost numberrequiredType: numberformat: "double"
#videoAnalysisCount integerrequiredType: integerformat: "int64"
#videoAnalysisCost numberrequiredType: numberformat: "double"
#audioAnalysisCount integerrequired

Voice messages sent by users, transcribed and analysed so the persona could reply to what was actually said. A recording measured as carrying no signal at all — a muted or unplugged mic — is not analysed and not counted here.

Type: integerformat: "int64"
#audioAnalysisCost numberrequiredType: numberformat: "double"
#webSearchCount integerrequired

Smart Fetch lookups performed while writing answers.

Type: integerformat: "int64"
#webSearchCost stringrequired

What those Smart Fetch lookups cost you. Already included in cost.

Type: string
#icebreakerSuggestionCount integerrequired

Icebreaker suggestions requested — a suggestion call on a conversation with no history. Billed outside of answers.

Type: integerformat: "int64"
#followupSuggestionCount integerrequired

Follow-up suggestions requested — a suggestion call on a conversation that already has messages. Billed outside of answers.

Type: integerformat: "int64"
#total objectrequired

The same metrics summed over every returned bucket, so you don't have to add up rows yourself.

Type: object
#answerMessageCount integerrequired

How many of your users' messages the answers of this bucket replied to.

Type: integerformat: "int64"
#answerHumanCount integerrequired

Answers written by a human operator, in HUMAN reply mode.

Type: integerformat: "int64"
#answerHumanCost stringrequired

What those human-written answers cost you.

Type: string
#answerAiCount integerrequired

Answers generated by the model, in AI reply mode.

Type: integerformat: "int64"
#answerAiCost stringrequired

What those AI answers cost you.

Type: string
#messageDroppedCount integerrequired

Generation requests that ended without a reply — dropped by a guardrail, or with nothing to answer. Not billed.

Type: integerformat: "int64"
#answerActionCount integerrequired

Answers carrying an action rather than a text reply (ACTION_* types: pokes, picture requests, profile reports, …).

Type: integerformat: "int64"
#cost stringrequired

Everything billed on the answers of this bucket — AI and human replies, plus any Smart Fetch performed while writing them. This is the figure to use for a project's answer spend.

Media analyses and suggestion requests are billed outside of answers, so they are not part of this amount. They appear here as counts (photoAnalysisCount, videoAnalysisCount, audioAnalysisCount, icebreakerSuggestionCount, followupSuggestionCount) — multiply them by your per-unit price to get their spend.

Type: string
#answerFreeCount integerrequired

Answers that were not billed — mostly the follow-up messages of a multi-message reply, which is billed once on the first answer.

Type: integerformat: "int64"
#photoAnalysisCount integerrequired

Photo Analyses run on pictures your users sent. Billed outside of answers — see cost.

Type: integerformat: "int64"
#photoAnalysisCost numberrequiredType: numberformat: "double"
#videoAnalysisCount integerrequiredType: integerformat: "int64"
#videoAnalysisCost numberrequiredType: numberformat: "double"
#audioAnalysisCount integerrequired

Voice messages sent by users, transcribed and analysed so the persona could reply to what was actually said. A recording measured as carrying no signal at all — a muted or unplugged mic — is not analysed and not counted here.

Type: integerformat: "int64"
#audioAnalysisCost numberrequiredType: numberformat: "double"
#webSearchCount integerrequired

Smart Fetch lookups performed while writing answers.

Type: integerformat: "int64"
#webSearchCost stringrequired

What those Smart Fetch lookups cost you. Already included in cost.

Type: string
#icebreakerSuggestionCount integerrequired

Icebreaker suggestions requested — a suggestion call on a conversation with no history. Billed outside of answers.

Type: integerformat: "int64"
#followupSuggestionCount integerrequired

Follow-up suggestions requested — a suggestion call on a conversation that already has messages. Billed outside of answers.

Type: integerformat: "int64"
Illustrative example
{
  "rows": [
    {
      "date": "2026-07-14",
      "metrics": {
        "answerMessageCount": "1420",
        "answerHumanCount": "12",
        "answerHumanCost": "0.3",
        "answerAiCount": "838",
        "answerAiCost": "20.95",
        "messageDroppedCount": "7",
        "answerActionCount": "23",
        "cost": "21.25",
        "answerFreeCount": "134",
        "photoAnalysisCount": "58",
        "photoAnalysisCost": 0,
        "videoAnalysisCount": 0,
        "videoAnalysisCost": 0,
        "audioAnalysisCount": "24",
        "audioAnalysisCost": 0,
        "webSearchCount": "16",
        "webSearchCost": "0.8",
        "icebreakerSuggestionCount": "31",
        "followupSuggestionCount": "44"
      }
    }
  ],
  "total": {
    "answerMessageCount": "1420",
    "answerHumanCount": "12",
    "answerHumanCost": "0.3",
    "answerAiCount": "838",
    "answerAiCost": "20.95",
    "messageDroppedCount": "7",
    "answerActionCount": "23",
    "cost": "21.25",
    "answerFreeCount": "134",
    "photoAnalysisCount": "58",
    "photoAnalysisCost": 0,
    "videoAnalysisCount": 0,
    "videoAnalysisCost": 0,
    "audioAnalysisCount": "24",
    "audioAnalysisCost": 0,
    "webSearchCount": "16",
    "webSearchCost": "0.8",
    "icebreakerSuggestionCount": "31",
    "followupSuggestionCount": "44"
  }
}