{
  "openapi": "3.0.1",
  "info": {
    "title": "Chinese AI Search Citation Analyzer DeepSeek Kimi",
    "description": "Analyze citations in Chinese AI search answers with DeepSeek or Kimi. Compare brand mentions, cited domains and changes across serialized scheduled runs.",
    "version": "0.1",
    "x-build-id": "g9PAzgHgu0ZUKddF1"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/zinin~chinese-ai-search-citation-analyzer/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-zinin-chinese-ai-search-citation-analyzer",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/zinin~chinese-ai-search-citation-analyzer/runs": {
      "post": {
        "operationId": "runs-sync-zinin-chinese-ai-search-citation-analyzer",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/zinin~chinese-ai-search-citation-analyzer/run-sync": {
      "post": {
        "operationId": "run-sync-zinin-chinese-ai-search-citation-analyzer",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "queries": {
            "title": "Chinese search queries",
            "maxItems": 20,
            "type": "array",
            "description": "Up to 20 nonempty queries of at most 500 characters. Duplicate queries are collapsed. Empty queries produce a free not-found control.",
            "items": {
              "type": "string",
              "maxLength": 500,
              "minLength": 1
            }
          },
          "models": {
            "title": "Models to compare",
            "maxItems": 4,
            "type": "array",
            "description": "Up to four model IDs. Empty uses model. Keyless supports only the two flash IDs. Optional :online suffix becomes one web plugin, never two searches.",
            "items": {
              "type": "string",
              "maxLength": 100,
              "minLength": 1
            }
          },
          "brand": {
            "title": "Brand to observe",
            "maxLength": 100,
            "type": "string",
            "description": "Literal brand text sought in the answer, excluding URL text. This is a mention check, not a search-engine rank or a sentiment score.",
            "default": "DeepSeek"
          },
          "brandAliases": {
            "title": "Brand aliases",
            "maxItems": 10,
            "type": "array",
            "description": "At most 10 literal aliases. Matching is case-insensitive. Include known spellings and Chinese forms; broad aliases may match unrelated text.",
            "items": {
              "type": "string",
              "maxLength": 100,
              "minLength": 1
            }
          },
          "competitors": {
            "title": "Competitors and optional aliases",
            "maxItems": 10,
            "type": "array",
            "description": "At most 10 names or objects with name and aliases (<=10). competitorsAhead lists competitors whose first mention appears before the brand. Runtime validates both forms: name is required in objects; names and aliases are nonempty strings of at most 100 characters; only name and aliases are allowed in objects."
          },
          "language": {
            "title": "Answer language",
            "maxLength": 20,
            "type": "string",
            "description": "Requested answer language passed to the model. Default zh. This setting changes the baseline key and can change citations and mentions.",
            "default": "zh"
          },
          "stateStoreName": {
            "title": "Baseline store name",
            "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]*$",
            "maxLength": 63,
            "type": "string",
            "description": "Named key-value store in your account. Use serialized schedules; overlapping runs sharing settings are unsupported. Store uses a hash of selection settings.",
            "default": "chinese-ai-search-citation-baseline"
          },
          "comparePrevious": {
            "title": "Compare with previous full run",
            "type": "boolean",
            "description": "Read baseline before upstream calls and commit only after complete successful delivery of every requested pair. Read errors fail; malformed values are explicitly reset.",
            "default": true
          },
          "maxItems": {
            "title": "Maximum processed query/model pairs",
            "minimum": 1,
            "maximum": 80,
            "type": "integer",
            "description": "Product is bounded to 80 before expansion. Platform key is limited to five grounded Answers and five logical search tasks per run; BYOK allows up to 80.",
            "default": 1
          },
          "apiKey": {
            "title": "Buyer API key (optional)",
            "type": "string",
            "description": "Optional buyer credential for the selected endpoint. Never copied to results. Empty uses the platform key only with OpenRouter. Buyer credentials are never replaced after a provider error. Runtime limit: 512 characters."
          },
          "baseUrl": {
            "title": "OpenAI-compatible base URL",
            "maxLength": 300,
            "type": "string",
            "description": "HTTPS base path, without /chat/completions. Only documented host/path pairs are accepted. Custom native endpoints require apiKey. Search supports OpenRouter only. No query, credentials, fragments or redirects.",
            "default": "https://openrouter.ai/api/v1"
          },
          "model": {
            "title": "Model ID",
            "maxLength": 100,
            "type": "string",
            "description": "Keyless: deepseek/deepseek-v4-flash or z-ai/glm-5.3-flash only. Qwen, Kimi and other model IDs require BYOK. The provider must support this model and operation.",
            "default": "deepseek/deepseek-v4-flash"
          },
          "reasoningMode": {
            "title": "Thinking mode (OpenRouter)",
            "enum": [
              "off",
              "low",
              "provider"
            ],
            "type": "string",
            "description": "OpenRouter only: off disables thinking, or uses low effort for z-ai/ models. Off-mode HTTP 400 retries with low effort, then provider defaults, within run caps. Direct endpoints retain provider thinking settings.",
            "default": "off"
          },
          "maxOutputTokens": {
            "title": "Maximum completion tokens",
            "minimum": 1,
            "maximum": 4096,
            "type": "integer",
            "description": "Upper completion allowance per call, including reasoning tokens. Default 1200; platform hard maximum 2048; BYOK hard maximum 4096. Length-truncated answers are free incomplete results.",
            "default": 1200
          },
          "maxTotalTokens": {
            "title": "Run token-unit limit",
            "minimum": 1,
            "maximum": 2000000,
            "type": "integer",
            "description": "UTF-8 message bytes plus completion reserve before each attempt, reconciled with valid usage afterward. Platform hard maximum 40000; BYOK 2000000. Unknown usage consumes full reserve.",
            "default": 40000
          },
          "temperature": {
            "title": "Temperature",
            "minimum": 0,
            "maximum": 2,
            "type": "number",
            "description": "Sampling temperature passed to the provider. Repeated runs can differ even at a low value. Does not establish factual correctness.",
            "default": 0.2
          },
          "maxConcurrency": {
            "title": "Concurrent LLM calls",
            "minimum": 1,
            "maximum": 1,
            "type": "integer",
            "description": "Version 1 processes one call at a time. Billing and delivery are serialized. Schedule citation comparisons without overlapping runs.",
            "default": 1
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}