{
  "openapi": "3.0.1",
  "info": {
    "title": "Echonews News Intelligence API",
    "description": "News intelligence API for deduplicated, clustered Stories and source Posts from X, Telegram, and RSS. Search by keyword or meaning, filter structured news data, inspect multilingual source Posts and translations, and retrieve media.",
    "version": "0.0",
    "x-build-id": "bo2ObGD2etaDbEXR0"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/echonews.io~news-intelligence-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-echonews.io-news-intelligence-api",
        "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/echonews.io~news-intelligence-api/runs": {
      "post": {
        "operationId": "runs-sync-echonews.io-news-intelligence-api",
        "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/echonews.io~news-intelligence-api/run-sync": {
      "post": {
        "operationId": "run-sync-echonews.io-news-intelligence-api",
        "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",
        "required": [
          "operation"
        ],
        "properties": {
          "operation": {
            "title": "Operation",
            "enum": [
              "sources.list",
              "sources.get",
              "locations.list",
              "categories.list",
              "subcategories.list",
              "stories.list",
              "stories.top",
              "stories.get",
              "stories.search",
              "stories.media.list",
              "posts.list",
              "posts.get",
              "posts.media.resolve"
            ],
            "type": "string",
            "description": "The allow-listed Echonews RPC operation to execute. Only fields supported by the selected operation are accepted.",
            "default": "stories.list"
          },
          "query": {
            "title": "Search query",
            "pattern": "[A-Za-z]",
            "type": "string",
            "description": "Required English-language Story search query for stories.search. Must contain at least one Latin letter."
          },
          "mode": {
            "title": "Search mode",
            "enum": [
              "keyword",
              "semantic",
              "hybrid"
            ],
            "type": "string",
            "description": "Required by stories.search. Keyword matches explicit wording, semantic matches meaning, and hybrid combines both result sets."
          },
          "sort": {
            "title": "Search sort",
            "enum": [
              "relevance",
              "updated_at"
            ],
            "type": "string",
            "description": "Required by stories.search. Relevance returns best matches first; updated_at returns newest matching Stories first."
          },
          "filters": {
            "title": "Search filters",
            "type": "object",
            "description": "Optional common Story filters for stories.search. These fields must be nested here, not passed at the top level. Do not combine updated_on with updated_after or updated_before.",
            "properties": {
              "updated_after": {
                "type": "string",
                "title": "Updated after",
                "description": "Inclusive Story updated_at lower bound as an ISO-8601 UTC timestamp.",
                "editor": "textfield"
              },
              "updated_before": {
                "type": "string",
                "title": "Updated before",
                "description": "Exclusive Story updated_at upper bound as an ISO-8601 UTC timestamp.",
                "editor": "textfield"
              },
              "updated_on": {
                "type": "string",
                "title": "Updated on",
                "description": "Story UTC calendar day in YYYY-MM-DD format. Do not combine with updated_after or updated_before.",
                "editor": "datepicker",
                "dateType": "absolute"
              },
              "categories": {
                "type": "array",
                "title": "Categories",
                "description": "Category slugs. Values are ORed.",
                "editor": "stringList",
                "items": {
                  "type": "string"
                }
              },
              "subcategories": {
                "type": "array",
                "title": "Subcategories",
                "description": "Subcategory slugs. Values are ORed.",
                "editor": "stringList",
                "items": {
                  "type": "string"
                }
              },
              "source_ids": {
                "type": "array",
                "title": "Source IDs",
                "description": "Match Stories containing Posts from these Source IDs. Values are ORed.",
                "editor": "json",
                "items": {
                  "type": "integer"
                }
              },
              "source_types": {
                "type": "array",
                "title": "Source types",
                "description": "Match Stories through Posts from these source platforms. Values are ORed.",
                "editor": "select",
                "items": {
                  "type": "string",
                  "enum": [
                    "x",
                    "telegram",
                    "rss"
                  ],
                  "enumTitles": [
                    "X",
                    "Telegram",
                    "RSS"
                  ]
                }
              },
              "source_location_ids": {
                "type": "array",
                "title": "Source location IDs",
                "description": "Match by geographic coverage of the Post's Source, not by where the Story happened.",
                "editor": "json",
                "items": {
                  "type": "integer"
                }
              },
              "post_languages": {
                "type": "array",
                "title": "Post languages",
                "description": "Match by language of individual Posts. Values are ORed.",
                "editor": "stringList",
                "items": {
                  "type": "string"
                }
              },
              "verified_only": {
                "type": "boolean",
                "title": "Verified only",
                "description": "Restrict matching Posts to verified X or Telegram Sources. RSS Sources are not considered verified.",
                "editor": "checkbox"
              }
            },
            "additionalProperties": false
          },
          "source_id": {
            "title": "Source ID",
            "type": "integer",
            "description": "Required by sources.get."
          },
          "story_id": {
            "title": "Story ID",
            "type": "integer",
            "description": "Required by stories.get and stories.media.list; optional parent Story filter for posts.list."
          },
          "post_id": {
            "title": "Post ID",
            "type": "integer",
            "description": "Required by posts.get and posts.media.resolve."
          },
          "media_id": {
            "title": "Media ID",
            "type": "string",
            "description": "Required by posts.media.resolve. Use the media ID returned by Post detail or Story media, for example 41919169:0."
          },
          "updated_after": {
            "title": "Updated after",
            "type": "string",
            "description": "Inclusive Story updated_at lower bound as an ISO-8601 UTC timestamp. Used by stories.list and stories.top."
          },
          "updated_before": {
            "title": "Updated before",
            "type": "string",
            "description": "Exclusive Story updated_at upper bound as an ISO-8601 UTC timestamp. Used by stories.list and stories.top."
          },
          "updated_on": {
            "title": "Updated on",
            "type": "string",
            "description": "Story UTC calendar day. Used by stories.list and stories.top. Do not combine with updated_after or updated_before."
          },
          "categories": {
            "title": "Categories",
            "type": "array",
            "description": "Category slugs. Used by stories.list, stories.top, and as a parent Story filter for posts.list. Values are ORed.",
            "items": {
              "type": "string"
            }
          },
          "subcategories": {
            "title": "Subcategories",
            "type": "array",
            "description": "Subcategory slugs. Used by stories.list, stories.top, and as a parent Story filter for posts.list. Values are ORed.",
            "items": {
              "type": "string"
            }
          },
          "source_ids": {
            "title": "Source IDs",
            "type": "array",
            "description": "Source IDs. Used by stories.list, stories.top, and posts.list. Values are ORed.",
            "items": {
              "type": "integer"
            }
          },
          "source_types": {
            "title": "Source types",
            "type": "array",
            "description": "Source platform types. Used by stories.list, stories.top, stories.media.list, and posts.list. Values are ORed.",
            "items": {
              "type": "string",
              "enum": [
                "x",
                "telegram",
                "rss"
              ],
              "enumTitles": [
                "X",
                "Telegram",
                "RSS"
              ]
            }
          },
          "source_location_ids": {
            "title": "Source location IDs",
            "type": "array",
            "description": "Source coverage Location IDs used by Story or Post filters. This is Source coverage, not the location where a Story happened.",
            "items": {
              "type": "integer"
            }
          },
          "post_languages": {
            "title": "Post languages",
            "type": "array",
            "description": "Languages of individual Posts. Used by Story filters and posts.list. Values are ORed.",
            "items": {
              "type": "string"
            }
          },
          "verified_only": {
            "title": "Verified only",
            "type": "boolean",
            "description": "Restrict matching to verified X or Telegram Sources where supported. RSS Sources are not considered verified. Backend default is false."
          },
          "source_time_after": {
            "title": "Source time after",
            "type": "string",
            "description": "Post source_time lower bound as an ISO-8601 UTC timestamp."
          },
          "source_time_before": {
            "title": "Source time before",
            "type": "string",
            "description": "Post source_time upper bound as an ISO-8601 UTC timestamp."
          },
          "source_on": {
            "title": "Source day",
            "type": "string",
            "description": "Post source UTC calendar day in YYYY-MM-DD format."
          },
          "has_media": {
            "title": "Has media",
            "type": "boolean",
            "description": "Filter posts.list by whether each returned Post has media."
          },
          "is_duplicate": {
            "title": "Is duplicate",
            "type": "boolean",
            "description": "Filter posts.list by Post deduplication status."
          },
          "q": {
            "title": "Text filter",
            "type": "string",
            "description": "Optional text filter for sources.list, locations.list, or subcategories.list."
          },
          "location_ids": {
            "title": "Location IDs",
            "type": "array",
            "description": "Source coverage Location IDs for sources.list.",
            "items": {
              "type": "integer"
            }
          },
          "levels": {
            "title": "Location levels",
            "type": "array",
            "description": "Location levels for locations.list.",
            "items": {
              "type": "string",
              "enum": [
                "global",
                "country",
                "region",
                "city",
                "other"
              ],
              "enumTitles": [
                "Global",
                "Country",
                "Region",
                "City",
                "Other"
              ]
            }
          },
          "types": {
            "title": "Types",
            "type": "array",
            "description": "For sources.list: x, telegram, rss. For stories.media.list: image, video, animation. The Actor applies operation-specific validation.",
            "items": {
              "type": "string",
              "enum": [
                "x",
                "telegram",
                "rss",
                "image",
                "video",
                "animation"
              ],
              "enumTitles": [
                "X sources",
                "Telegram sources",
                "RSS sources",
                "Images",
                "Videos",
                "Animations"
              ]
            }
          },
          "availability": {
            "title": "Media availability",
            "type": "array",
            "description": "Availability filter for stories.media.list.",
            "items": {
              "type": "string",
              "enum": [
                "ready",
                "on_demand"
              ],
              "enumTitles": [
                "Ready",
                "On demand"
              ]
            }
          },
          "order": {
            "title": "Order",
            "enum": [
              "asc",
              "desc"
            ],
            "type": "string",
            "description": "Chronological direction for stories.list (updated_at) or posts.list (source_time). Not accepted by stories.top or stories.search."
          },
          "limit": {
            "title": "Page size",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Items per page, from 1 to 100. Backend defaults: stories.list 50, stories.top 20, stories.search 25, stories.media.list 50, posts.list 50."
          },
          "cursor": {
            "title": "Pagination cursor",
            "type": "string",
            "description": "Opaque next_cursor from the previous page. Repeat the original request unchanged and add only this cursor."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}