def search_videohub(cls, query, filters=None, status=None, sort=None, size=None, page=None):
        url = getattr(settings, "VIDEOHUB_API_SEARCH_URL", cls.DEFAULT_VIDEOHUB_API_SEARCH_URL)
        headers = {
            "Content-Type": "application/json",
            "Authorization": settings.VIDEOHUB_API_TOKEN,
        }
        payload = {
            "query": query,
        }
        if filters:
            assert isinstance(filters, dict)
            payload["filters"] = filters
        if status:
            assert isinstance(status, six.string_types)
            payload.setdefault("filters", {})
            payload["filters"]["status"] = status
        if sort:
            assert isinstance(sort, dict)
            payload["sort"] = sort
        if size:
            assert isinstance(size, (six.string_types, int))
            payload["size"] = size
        if page:
            assert isinstance(page, (six.string_types, int))
            payload["page"] = page
        res = requests.post(url, data=json.dumps(payload), headers=headers)
        if res.status_code != 200:
            res.raise_for_status()
        return json.loads(res.content)