{"id":94586,"plugin_id":"plugin_asdk_app_6ae3128e3bc0819189066da4ece075c9","kind":"skill","collection_source":"plugin_package","comparison_source":null,"observed_at":"2026-11-13T06:10:38.003Z","digest":"bd38953b0d6810e7e2fa6b26f622205e07a68ea83ad01acf8e5c7056e73792e6","against":null,"payload":{"description":"Write code that calls the OpenChase API (api.openchase.ai). Use when the user is adding real-time social or publication search to an app, script or pipeline, or mentions OpenChase, OPENCHASE_KEY, or endpoints like /v1/search.","included_files":[{"relative_path":"examples/openchase_client.mjs","size_in_bytes":1713},{"relative_path":"examples/openchase_client.py","size_in_bytes":2243},{"relative_path":"references/endpoints.md","size_in_bytes":2611}],"name":"build-with-openchase","skill_md_contents":"---\nname: build-with-openchase\ndescription: Write code that calls the OpenChase API (api.openchase.ai). Use when the user is adding real-time social or publication search to an app, script or pipeline, or mentions OpenChase, OPENCHASE_KEY, or endpoints like /v1/search.\n---\n\n# Building with the OpenChase API\n\n1. Read `references/endpoints.md` for inputs and outputs. For every\n   endpoint with examples and sample responses, fetch\n   `https://openchase.ai/llms-full.txt`; the OpenAPI spec is at\n   `https://api.openchase.ai/v1/openapi.json`.\n2. Authenticate with `Authorization: Bearer $OPENCHASE_KEY` (an\n   `oc_live_...` key from https://openchase.ai/connect, Keys tab). Read the\n   key from the environment or an ignored `.env` file; never put it in source\n   code or a committed config file. Every search spends a credit (none if\n   nothing is found), so test with a few calls, not a loop.\n3. Search first (`POST /v1/search`), then open only what's needed:\n   `POST /v1/search-links` with the `search_id` for the top posts per\n   platform, or `POST /v1/fetch` with result ids. Page with\n   `GET /v1/search/{search_id}?page=N`.\n4. Read `X-OC-Credits-Used` and `X-OC-Credits-Left`. Handle:\n   - `402` (`no_credits`, `key_budget_reached`): stop and tell the user;\n   - `429`: wait for `Retry-After`, then retry with backoff;\n   - `404 search_expired`: run the search again (searches last 15 minutes).\n5. Every error has a `message` written for people: show it as is.\n6. Working examples: `examples/openchase_client.py` and\n   `examples/openchase_client.mjs`.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}