{
  "schemaVersion": "1.0",
  "item": {
    "slug": "orthogonal",
    "name": "Orthogonal API Platform - Access paid APIs using the SDK, Run API, or x402 direct payment. Search, discover, and integrate APIs with simple tool calls.",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/ChristianPickettCode/orthogonal",
    "canonicalUrl": "https://clawhub.ai/ChristianPickettCode/orthogonal",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/orthogonal",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=orthogonal",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "skill.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/orthogonal"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/orthogonal",
    "agentPageUrl": "https://openagent3.xyz/skills/orthogonal/agent",
    "manifestUrl": "https://openagent3.xyz/skills/orthogonal/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/orthogonal/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Orthogonal Platform",
        "body": "Orthogonal is a platform for monetizing and consuming APIs. Use these tools to discover, understand, and call any API on the platform.\n\nBase URL: https://api.orth.sh/v1"
      },
      {
        "title": "Authentication",
        "body": "Get your API key at https://orthogonal.com/dashboard/settings\n\nexport ORTHOGONAL_API_KEY=orth_live_your_api_key"
      },
      {
        "title": "1. search",
        "body": "Search for APIs using natural language. Returns a lightweight list of matching endpoints.\n\nEndpoint: POST /v1/search\n\ncurl -X POST 'https://api.orth.sh/v1/search' \\\n  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"prompt\": \"scrape websites\", \"limit\": 10}'\n\nParameters:\n\nprompt (string, required): Natural language description of what you're looking for\nlimit (number, optional): Max results (default: 10, max: 50)\n\nResponse: List of matching APIs with endpoints (name, description, method, path, price)"
      },
      {
        "title": "2. get_details",
        "body": "Get full details about a specific endpoint including all parameters.\n\nEndpoint: POST /v1/details\n\ncurl -X POST 'https://api.orth.sh/v1/details' \\\n  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"api\": \"olostep\", \"path\": \"/v1/scrapes\"}'\n\nParameters:\n\napi (string, required): API slug from search results (e.g., \"olostep\", \"linkup\")\npath (string, required): Endpoint path from search results (e.g., \"/v1/scrapes\")\n\nResponse: Full endpoint details including:\n\nPath parameters\nQuery parameters (name, type, required, description)\nBody parameters (name, type, required, description)\nPricing information\nDocumentation URL"
      },
      {
        "title": "3. integrate",
        "body": "Get ready-to-use code snippets for integrating an endpoint.\n\nEndpoint: POST /v1/integrate\n\ncurl -X POST 'https://api.orth.sh/v1/integrate' \\\n  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"api\": \"olostep\", \"path\": \"/v1/scrapes\", \"format\": \"orth-sdk\"}'\n\nParameters:\n\napi (string, required): API slug\npath (string, required): Endpoint path\nformat (string, optional): Code format - one of:\n\north-sdk (default) - Orthogonal SDK (@orth/sdk)\nrun-api - Direct HTTP to /v1/run\nx402-fetch - x402 payment with JavaScript\nx402-python - x402 payment with Python\ncurl - cURL command\nall - All formats\n\nResponse: Code snippets ready to copy-paste"
      },
      {
        "title": "4. use (run)",
        "body": "Call an API endpoint using your Orthogonal credits.\n\nEndpoint: POST /v1/run\n\ncurl -X POST 'https://api.orth.sh/v1/run' \\\n  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"api\": \"olostep\",\n    \"path\": \"/v1/scrapes\",\n    \"body\": {\n      \"url_to_scrape\": \"https://example.com\"\n    }\n  }'\n\nParameters:\n\napi (string, required): API slug\npath (string, required): Endpoint path\nquery (object, optional): Query parameters\nbody (object, optional): Request body\n\nResponse:\n\n{\n  \"success\": true,\n  \"price\": 0.01,\n  \"data\": { /* API response */ }\n}"
      },
      {
        "title": "5. list_all (optional)",
        "body": "List all discoverable APIs with their endpoints. Returns paginated APIs, each containing their endpoints. Use sparingly - prefer search for specific needs.\n\nEndpoint: GET /v1/list-endpoints\n\ncurl 'https://api.orth.sh/v1/list-endpoints?limit=100' \\\n  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY'\n\nParameters:\n\nlimit (number, optional): Max APIs to return per page (default: 100, max: 500)\noffset (number, optional): Pagination offset for APIs\n\nResponse: List of APIs, each with nested endpoints array"
      },
      {
        "title": "Typical Workflow",
        "body": "Search for what you need: POST /v1/search with natural language\nGet details for the endpoint: POST /v1/details to see required params\nUse the endpoint: POST /v1/run with the params\n\nOr for integration:\n\nSearch → Get details → Integrate to get code snippets"
      },
      {
        "title": "SDK Integration",
        "body": "For the simplest integration, use the Orthogonal SDK:\n\nnpm install @orth/sdk\n\nimport Orthogonal from \"@orth/sdk\";\n\nconst orthogonal = new Orthogonal({\n  apiKey: process.env.ORTHOGONAL_API_KEY,\n});\n\n// Search for APIs\nconst search = await orthogonal.search(\"web scraping\");\n\n// Call an API\nconst result = await orthogonal.run({\n  api: \"olostep\",\n  path: \"/v1/scrapes\",\n  body: { url_to_scrape: \"https://example.com\" }\n});"
      },
      {
        "title": "x402 Direct Payment",
        "body": "Pay directly with USDC on Base blockchain - no API key required:\n\nimport { wrapFetchWithPayment } from \"x402-fetch\";\nimport { privateKeyToAccount } from \"viem/accounts\";\n\nconst account = privateKeyToAccount(process.env.PRIVATE_KEY);\nconst fetchWithPayment = wrapFetchWithPayment(fetch, account);\n\nconst response = await fetchWithPayment(\n  \"https://x402.orth.sh/olostep/v1/scrapes\",\n  {\n    method: \"POST\",\n    headers: { \"Content-Type\": \"application/json\" },\n    body: JSON.stringify({ url_to_scrape: \"https://example.com\" })\n  }\n);"
      },
      {
        "title": "Support",
        "body": "Documentation: https://orthogonal.com/dashboard/docs\nBrowse APIs: https://orthogonal.com/discover\nBook a call: https://orthogonal.com/book"
      }
    ],
    "body": "Orthogonal Platform\n\nOrthogonal is a platform for monetizing and consuming APIs. Use these tools to discover, understand, and call any API on the platform.\n\nBase URL: https://api.orth.sh/v1\n\nAuthentication\n\nGet your API key at https://orthogonal.com/dashboard/settings\n\nexport ORTHOGONAL_API_KEY=orth_live_your_api_key\n\nTools\n1. search\n\nSearch for APIs using natural language. Returns a lightweight list of matching endpoints.\n\nEndpoint: POST /v1/search\n\ncurl -X POST 'https://api.orth.sh/v1/search' \\\n  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"prompt\": \"scrape websites\", \"limit\": 10}'\n\n\nParameters:\n\nprompt (string, required): Natural language description of what you're looking for\nlimit (number, optional): Max results (default: 10, max: 50)\n\nResponse: List of matching APIs with endpoints (name, description, method, path, price)\n\n2. get_details\n\nGet full details about a specific endpoint including all parameters.\n\nEndpoint: POST /v1/details\n\ncurl -X POST 'https://api.orth.sh/v1/details' \\\n  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"api\": \"olostep\", \"path\": \"/v1/scrapes\"}'\n\n\nParameters:\n\napi (string, required): API slug from search results (e.g., \"olostep\", \"linkup\")\npath (string, required): Endpoint path from search results (e.g., \"/v1/scrapes\")\n\nResponse: Full endpoint details including:\n\nPath parameters\nQuery parameters (name, type, required, description)\nBody parameters (name, type, required, description)\nPricing information\nDocumentation URL\n3. integrate\n\nGet ready-to-use code snippets for integrating an endpoint.\n\nEndpoint: POST /v1/integrate\n\ncurl -X POST 'https://api.orth.sh/v1/integrate' \\\n  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"api\": \"olostep\", \"path\": \"/v1/scrapes\", \"format\": \"orth-sdk\"}'\n\n\nParameters:\n\napi (string, required): API slug\npath (string, required): Endpoint path\nformat (string, optional): Code format - one of:\north-sdk (default) - Orthogonal SDK (@orth/sdk)\nrun-api - Direct HTTP to /v1/run\nx402-fetch - x402 payment with JavaScript\nx402-python - x402 payment with Python\ncurl - cURL command\nall - All formats\n\nResponse: Code snippets ready to copy-paste\n\n4. use (run)\n\nCall an API endpoint using your Orthogonal credits.\n\nEndpoint: POST /v1/run\n\ncurl -X POST 'https://api.orth.sh/v1/run' \\\n  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"api\": \"olostep\",\n    \"path\": \"/v1/scrapes\",\n    \"body\": {\n      \"url_to_scrape\": \"https://example.com\"\n    }\n  }'\n\n\nParameters:\n\napi (string, required): API slug\npath (string, required): Endpoint path\nquery (object, optional): Query parameters\nbody (object, optional): Request body\n\nResponse:\n\n{\n  \"success\": true,\n  \"price\": 0.01,\n  \"data\": { /* API response */ }\n}\n\n5. list_all (optional)\n\nList all discoverable APIs with their endpoints. Returns paginated APIs, each containing their endpoints. Use sparingly - prefer search for specific needs.\n\nEndpoint: GET /v1/list-endpoints\n\ncurl 'https://api.orth.sh/v1/list-endpoints?limit=100' \\\n  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY'\n\n\nParameters:\n\nlimit (number, optional): Max APIs to return per page (default: 100, max: 500)\noffset (number, optional): Pagination offset for APIs\n\nResponse: List of APIs, each with nested endpoints array\n\nTypical Workflow\nSearch for what you need: POST /v1/search with natural language\nGet details for the endpoint: POST /v1/details to see required params\nUse the endpoint: POST /v1/run with the params\n\nOr for integration:\n\nSearch → Get details → Integrate to get code snippets\nSDK Integration\n\nFor the simplest integration, use the Orthogonal SDK:\n\nnpm install @orth/sdk\n\nimport Orthogonal from \"@orth/sdk\";\n\nconst orthogonal = new Orthogonal({\n  apiKey: process.env.ORTHOGONAL_API_KEY,\n});\n\n// Search for APIs\nconst search = await orthogonal.search(\"web scraping\");\n\n// Call an API\nconst result = await orthogonal.run({\n  api: \"olostep\",\n  path: \"/v1/scrapes\",\n  body: { url_to_scrape: \"https://example.com\" }\n});\n\nx402 Direct Payment\n\nPay directly with USDC on Base blockchain - no API key required:\n\nimport { wrapFetchWithPayment } from \"x402-fetch\";\nimport { privateKeyToAccount } from \"viem/accounts\";\n\nconst account = privateKeyToAccount(process.env.PRIVATE_KEY);\nconst fetchWithPayment = wrapFetchWithPayment(fetch, account);\n\nconst response = await fetchWithPayment(\n  \"https://x402.orth.sh/olostep/v1/scrapes\",\n  {\n    method: \"POST\",\n    headers: { \"Content-Type\": \"application/json\" },\n    body: JSON.stringify({ url_to_scrape: \"https://example.com\" })\n  }\n);\n\nSupport\nDocumentation: https://orthogonal.com/dashboard/docs\nBrowse APIs: https://orthogonal.com/discover\nBook a call: https://orthogonal.com/book"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/ChristianPickettCode/orthogonal",
    "publisherUrl": "https://clawhub.ai/ChristianPickettCode/orthogonal",
    "owner": "ChristianPickettCode",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/orthogonal",
    "downloadUrl": "https://openagent3.xyz/downloads/orthogonal",
    "agentUrl": "https://openagent3.xyz/skills/orthogonal/agent",
    "manifestUrl": "https://openagent3.xyz/skills/orthogonal/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/orthogonal/agent.md"
  }
}