---
title: "POST /api/v1/internal/analytics/facts"
method: POST
path: "/api/v1/internal/analytics/facts"
tags: ["Internal", "Analytics"]
---

# POST /api/v1/internal/analytics/facts

`POST /api/v1/internal/analytics/facts`

Accepts validated web or app facts from trusted producers and publishes them to the isolated analytics Queue. Final conversion facts use event 103, require cost to equal amount, and require zero Affiliate payout when scrubbed.

## Headers

- `authorization` string, required

## Request body

- object
  - `facts` union[], required
    - union
      - object
        - `table` 'event', required
        - `row` object, required
          - `event_id` string, required
          - `trace_id` string, required
          - `source_id` 'web' | 'app', required
          - `event_datetime` string, date-time, required
          - `event_type_id` integer, required
          - `subscription_datetime` string, date-time, nullable
          - `user_id` integer
          - `product_id` integer
          - `mobile_app_id` integer
          - `company_id` integer
          - `country_id` integer
          - `language_id` integer
          - `subscription_plan_id` integer
          - `network_account_id` integer
          - `network_id` integer
          - `campaign_id` integer
          - `adgroup_id` integer
          - `creative_id` integer
          - `keyword_id` integer
          - `match_type` string
          - `ad_position` string
          - `placement_id` integer
          - `click_id` string
          - `visitor_id` string
          - `affiliate_id` integer
          - `funnel_id` integer
          - `marketing_domain_id` integer
          - `advertiser_id` integer
          - `offer_id` integer
          - `offer_type_id` integer
          - `prelanding_landing_design_id` integer
          - `checkout_landing_design_id` integer
          - `revenue` integer
          - `cost` integer
          - `amount` integer
          - `fee` integer
          - `payment_number` integer
          - `conversion_transaction_id` string
          - `cc_brand` string
          - `cc_first6` string
          - `cc_last4` string
          - `threeds` union
            - 0
            - 1
          - `threeds_protocol_version` string
          - `merchant_id` integer
          - `gateway_id` integer
          - `acquirer_id` integer
          - `user_agent_id` integer
          - `user_agent` string
          - `user_agent_browser_id` integer
          - `user_agent_browser_version` string
          - `user_agent_engine_id` integer
          - `user_agent_engine_version` string
          - `user_agent_os_id` integer
          - `user_agent_os_version` string
          - `user_agent_device_id` integer
          - `user_agent_cpu_id` integer
          - `user_agent_is_mobile` union
            - 0
            - 1
          - `user_agent_is_bot` union
            - 0
            - 1
          - `ip` string
          - `source` string
          - `unsubscription_flow_id` integer
          - `is_adjustment` union
            - 0
            - 1
          - `chargeback_alert_source` string
          - `is_rdr` union
            - 0
            - 1
      - object
        - `table` 'ad_spend', required
        - `row` object, required
          - `event_id` string, required
          - `trace_id` string, required
          - `source_id` 'web' | 'app', required
          - `event_datetime` string, date-time, required
          - `report_date` string
          - `event_type_id` union, required
            - 100
            - 101
          - `network_account_id` integer
          - `network_id` integer
          - `campaign_id` integer
          - `adgroup_id` integer
          - `creative_id` integer
          - `keyword_id` integer
          - `match_type` string
          - `ad_position` string
          - `placement_id` integer
          - `click_id` string
          - `visitor_id` string
          - `affiliate_id` integer
          - `funnel_id` integer
          - `marketing_domain_id` integer
          - `advertiser_id` integer
          - `offer_id` integer
          - `offer_type_id` integer
          - `prelanding_landing_design_id` integer
          - `checkout_landing_design_id` integer
          - `mobile_app_id` integer
          - `country_id` integer
          - `is_custom_event` union
            - 0
            - 1
          - `quality_score` integer
          - `impressions` integer
          - `clicks` integer
          - `conversions` integer
          - `revenue` integer
          - `cost` integer
          - `amount` integer
          - `fee` integer
      - object
        - `table` 'ad_revenue', required
        - `row` object, required
          - `event_id` string, required
          - `trace_id` string, required
          - `source_id` 'web' | 'app', required
          - `event_datetime` string, date-time, required
          - `event_type_id` 102, required
          - `subscription_datetime` string, date-time, nullable
          - `user_id` integer
          - `product_id` integer
          - `mobile_app_id` integer
          - `company_id` integer
          - `country_id` integer
          - `language_id` integer
          - `subscription_plan_id` integer
          - `network_account_id` integer
          - `network_id` integer
          - `campaign_id` integer
          - `adgroup_id` integer
          - `creative_id` integer
          - `keyword_id` integer
          - `match_type` string
          - `ad_position` string
          - `placement_id` integer
          - `click_id` string
          - `visitor_id` string
          - `affiliate_id` integer
          - `funnel_id` integer
          - `marketing_domain_id` integer
          - `advertiser_id` integer
          - `offer_id` integer
          - `offer_type_id` integer
          - `prelanding_landing_design_id` integer
          - `checkout_landing_design_id` integer
          - `ad_impressions_count` integer
          - `revenue` integer
          - `cost` integer
          - `amount` integer
          - `fee` integer
      - object
        - `table` 'agent_turn', required
        - `row` object, required
          - `event_datetime` string, date-time, required
          - `event_id` string, required
          - `trace_id` string, required
          - `agent_mode` 'keyword' | 'triage', required
          - `actor` 'expert_ai' | 'triage', required
          - `conversation_id` string, uuid, required
          - `message_id` string, uuid, required
          - `product_id` integer, required
          - `source` 'dashboard' | 'landing', required
          - `subscriber_user_id` integer, required
          - `attachment_count` integer, required
          - `buffered` union, required
            - 0
            - 1
          - `cache_read_tokens` integer, required
          - `cache_write_tokens` integer, required
          - `container_started` union, required
            - 0
            - 1
          - `duration_ms` integer, required
          - `engine_version` string, required
          - `estimated_cost_microusd` integer, required
          - `execution_tier` 'direct_model' | 'worker' | 'justbash' | 'linux', required
          - `failed_tool_call_count` integer, required
          - `guardrail_decision` 'allow' | 'rewrite' | 'block', required
          - `input_tokens` integer, required
          - `model` string, required
          - `operation` 'answer' | 'analyze_attachment' | 'web_search' | 'generate_csv' | 'generate_json' | 'generate_markdown' | 'generate_text' | 'generate_xlsx' | 'combine_csv' | 'filter_csv' | 'filter_text' | 'query_json' | 'transform_text' | 'browser_render' | 'convert_document' | 'imagemagick' | 'native_tool' | 'ocr' | 'pandas', required
          - `output_tokens` integer, required
          - `policy_version` string, required
          - `prompt_version` string, required
          - `review_count` integer, required
          - `rewrite_count` integer, required
          - `risk_level` 'low' | 'medium' | 'high' | 'critical', required
          - `sandbox_avoided` union, required
            - 0
            - 1
          - `submission_id` union, required
            - ''
            - string
          - `telemetry_version` 1, required
          - `tool_call_count` integer, required
          - `tool_names` string[], required
          - `total_tokens` integer, required
      - object
        - `table` 'agent_security_event', required
        - `row` object, required
          - `event_datetime` string, date-time, required
          - `event_id` string, required
          - `trace_id` string, required
          - `agent_mode` 'keyword' | 'triage', required
          - `actor` 'expert_ai' | 'triage', required
          - `conversation_id` string, uuid, required
          - `message_id` string, uuid, required
          - `product_id` integer, required
          - `source` 'dashboard' | 'landing', required
          - `subscriber_user_id` integer, required
          - `agent_turn_event_id` string, required
          - `blocked_reason` string, required
          - `buffered` union, required
            - 0
            - 1
          - `guardrail_decision` 'allow' | 'rewrite' | 'block', required
          - `judge_latency_ms` integer, required
          - `judge_model` union, required
            - string
            - ''
          - `execution_tier` union, required
            - 'direct_model' | 'worker' | 'justbash' | 'linux'
            - ''
          - `policy_codes` string[], required
          - `policy_version` string, required
          - `requires_buffered_response` union, required
            - 0
            - 1
          - `requires_judge` union, required
            - 0
            - 1
          - `review_count` integer, required
          - `rewrite_count` integer, required
          - `risk_categories` string[], required
          - `risk_level` 'low' | 'medium' | 'high' | 'critical', required
          - `stage` 'input' | 'pre_tool' | 'tool_result' | 'output' | 'attachment', required
          - `submission_id` union, required
            - ''
            - string
          - `tool_name` string, required
      - object
        - `table` 'agent_evaluation', required
        - `row` object, required
          - `event_datetime` string, date-time, required
          - `event_id` string, required
          - `trace_id` string, required
          - `agent_mode` 'keyword' | 'triage', required
          - `actor` 'expert_ai' | 'triage', required
          - `conversation_id` string, uuid, required
          - `message_id` string, uuid, required
          - `product_id` integer, required
          - `source` 'dashboard' | 'landing', required
          - `subscriber_user_id` integer, required
          - `agent_turn_event_id` string, required
          - `attachment_use_score` integer, nullable, required
          - `correctness_score` integer, nullable, required
          - `evaluation_duration_ms` integer, required
          - `evaluation_codes` string[], required
          - `evaluation_trigger` 'error' | 'sample' | 'security' | 'tool', required
          - `evaluation_version` string, required
          - `evaluator_model` string, required
          - `groundedness_score` integer, nullable, required
          - `handoff_score` integer, nullable, required
          - `helpfulness_score` integer, nullable, required
          - `instruction_following_score` integer, nullable, required
          - `outcome` 'pass' | 'fail' | 'review', required
          - `safety_score` integer, nullable, required
          - `sample_bucket` integer, required
          - `tone_score` integer, nullable, required
          - `triage_score` integer, nullable, required
          - `uncertainty_score` integer, nullable, required
      - object
        - `table` 'ai_model_call', required
        - `row` object, required
          - `event_datetime` string, date-time, required
          - `event_id` string, required
          - `trace_id` string, required
          - `agent_mode` 'keyword' | 'triage', required
          - `conversation_id` string, uuid, required
          - `product_id` integer, required
          - `source` 'dashboard' | 'landing', required
          - `subscriber_user_id` integer, required
          - `cache_read_tokens` integer, required
          - `cache_write_tokens` integer, required
          - `charge_scope` 'customer' | 'platform', required
          - `duration_ms` integer, required
          - `error_class` string, required
          - `estimated_cost_microusd` integer, required
          - `gateway_cost_microusd` integer, nullable, required
          - `gateway_log_id` string, required
          - `input_tokens` integer, required
          - `model` string, required
          - `output_tokens` integer, required
          - `provider` string, required
          - `purpose` 'agent' | 'compaction' | 'compaction_prefix' | 'safety' | 'web_search' | 'title' | 'evaluation', required
          - `status` 'success' | 'error' | 'blocked', required
          - `submission_id` union, required
            - ''
            - string
          - `total_tokens` integer, required
          - `turn_id` string, required
      - object
        - `table` 'agent_outcome', required
        - `row` object, required
          - `conversation_id` string, uuid, required
          - `event_datetime` string, date-time, required
          - `event_id` string, required
          - `event_type` 'triage_completed' | 'signup_completed' | 'expert_first_response' | 'artifact_delivered' | 'customer_continued' | 'customer_returned' | 'human_requested' | 'human_paused' | 'human_started' | 'human_connected' | 'human_failed' | 'feedback_positive' | 'feedback_negative' | 'inactive', required
          - `product_id` integer, required
          - `reason` 'professional_selected' | 'checkout_completed' | 'first_expert_response' | 'artifact_published' | 'expert_followup' | 'inactivity_elapsed' | 'customer_requested' | 'checkout_activated' | 'ai_resumed' | 'agent_signal_failed' | 'membership_unavailable' | 'consultation_limit_reached' | 'delay_elapsed' | 'pearl_message_received' | 'pearl_dispatch_failed' | 'user_feedback' | 'inactivity_timeout', required
          - `source` 'dashboard' | 'landing', required
          - `subscriber_user_id` integer, required
          - `trace_id` string, required
          - `version` 1, required
      - object
        - `table` 'conversion', required
        - `row` object, required
          - `event_id` string, required
          - `trace_id` string, required
          - `source_id` 'web' | 'app', required
          - `event_datetime` string, date-time, required
          - `event_type_id` 103, required
          - `subscription_datetime` string, date-time, nullable
          - `user_id` integer
          - `product_id` integer
          - `mobile_app_id` integer
          - `company_id` integer
          - `country_id` integer
          - `language_id` integer
          - `subscription_plan_id` integer
          - `network_account_id` integer
          - `network_id` integer
          - `campaign_id` integer
          - `adgroup_id` integer
          - `creative_id` integer
          - `keyword_id` integer
          - `match_type` string
          - `ad_position` string
          - `placement_id` integer
          - `click_id` string
          - `visitor_id` string
          - `affiliate_id` integer
          - `funnel_id` integer
          - `marketing_domain_id` integer
          - `advertiser_id` integer
          - `offer_id` integer
          - `offer_type_id` integer
          - `prelanding_landing_design_id` integer
          - `checkout_landing_design_id` integer
          - `user_agent_id` integer
          - `user_agent` string
          - `user_agent_browser_id` integer
          - `user_agent_browser_version` string
          - `user_agent_engine_id` integer
          - `user_agent_engine_version` string
          - `user_agent_os_id` integer
          - `user_agent_os_version` string
          - `user_agent_device_id` integer
          - `user_agent_cpu_id` integer
          - `user_agent_is_mobile` union
            - 0
            - 1
          - `user_agent_is_bot` union
            - 0
            - 1
          - `ip` string
          - `scrubbed` union, required
            - 0
            - 1
          - `revenue` integer
          - `cost` integer
          - `amount` integer
          - `fee` integer
      - object
        - `table` 'impression', required
        - `row` object, required
          - `event_id` string, required
          - `trace_id` string, required
          - `source_id` 'web' | 'app', required
          - `event_datetime` string, date-time, required
          - `event_type_id` union, required
            - 104
            - 105
            - 106
            - 108
          - `impression_type` 'prelanding' | 'checkout' | 'offer', required
          - `network_account_id` integer
          - `network_id` integer
          - `campaign_id` integer
          - `adgroup_id` integer
          - `creative_id` integer
          - `keyword_id` integer
          - `match_type` string
          - `ad_position` string
          - `placement_id` integer
          - `click_id` string
          - `visitor_id` string
          - `affiliate_id` integer
          - `funnel_id` integer
          - `marketing_domain_id` integer
          - `advertiser_id` integer
          - `offer_id` integer
          - `offer_type_id` integer
          - `prelanding_landing_design_id` integer
          - `checkout_landing_design_id` integer
          - `mobile_app_id` integer
          - `country_id` integer
          - `browser_language_id` integer
          - `landing_language_id` integer
          - `subscription_plan_id` integer
          - `user_agent_id` integer
          - `user_agent` string
          - `user_agent_browser_id` integer
          - `user_agent_browser_version` string
          - `user_agent_engine_id` integer
          - `user_agent_engine_version` string
          - `user_agent_os_id` integer
          - `user_agent_os_version` string
          - `user_agent_device_id` integer
          - `user_agent_cpu_id` integer
          - `user_agent_is_mobile` union
            - 0
            - 1
          - `user_agent_is_bot` union
            - 0
            - 1
          - `ip` string
          - `previous_prelanding_impression` union
            - 0
            - 1
          - `impression_number` integer

## Response `202`

The batch was accepted by Cloudflare Queues.

- object
  - `accepted` integer, required
  - `status` 'accepted', required

## Other responses

- `400` — The request does not match the strict analytics contract.
- `401` — The producer credential is invalid.
- `503` — The analytics Queue is unavailable.

---

[API](https://skmtc.dev/expertschat/apis/billing-core-api.md) · [All operations](https://skmtc.dev/expertschat/apis/billing-core-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/expertschat/billing-core-api/revisions/c6d0e986ce32/schema)
