{"id":613,"date":"2026-01-18T16:46:40","date_gmt":"2026-01-18T16:46:40","guid":{"rendered":"https:\/\/radar.kubebuddy.io\/?page_id=613"},"modified":"2026-01-27T16:13:06","modified_gmt":"2026-01-27T16:13:06","slug":"api-getting-started","status":"publish","type":"page","link":"https:\/\/radar.kubebuddy.io\/docs\/api-getting-started\/","title":{"rendered":"api-getting-started"},"content":{"rendered":"\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"utf-8\">\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n  <title>KubeBuddy Radar API &#8211; Getting Started<\/title>\n  <link rel=\"stylesheet\" href=\"\/wp-content\/plugins\/kubebuddy-radar-plugin\/assets\/radar.css\">\n  <link rel=\"stylesheet\" href=\"\/wp-content\/plugins\/kubebuddy-radar-plugin\/assets\/docs.css?v=5\">\n  <script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/prism\/1.29.0\/prism.min.js\"><\/script>\n  <script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/prism\/1.29.0\/components\/prism-bash.min.js\"><\/script>\n  <script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/prism\/1.29.0\/components\/prism-json.min.js\"><\/script>\n  <script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/prism\/1.29.0\/components\/prism-python.min.js\"><\/script>\n  <script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/prism\/1.29.0\/components\/prism-powershell.min.js\"><\/script>\n<\/head>\n<body>\n  <div class=\"kb-docs-page\">\n    <div class=\"kb-docs-hero\">\n      <a class=\"kb-docs-back\" href=\"\/docs\/\">\u2190 Back to Docs<\/a>\n      <h1>KubeBuddy Radar API &#8211; Getting Started<\/h1>\n      <p>Start with an authenticated catalog request, then try user-specific endpoints with your account.<\/p>\n    <\/div>\n\n    <div class=\"kb-docs-content\">\n      <div class=\"kb-docs-layout\">\n        <aside class=\"kb-docs-toc\">\n          <h3>On this page<\/h3>\n          <div class=\"kb-docs-toc-links\">\n            <a href=\"#summary\">Quick Summary<\/a>\n            <a href=\"#get-key\">Get your API key<\/a>\n            <a href=\"#catalog-request\">Catalog request (auth)<\/a>\n            <a href=\"#auth-request\">Authenticated request<\/a>\n            <a href=\"#errors\">Common errors<\/a>\n            <a href=\"#next-steps\">Next steps<\/a>\n            <a href=\"#help\">Need help<\/a>\n          <\/div>\n        <\/aside>\n        <div>\n      <section id=\"summary\" class=\"kb-docs-section\">\n        <div class=\"kb-docs-callout kb-docs-callout-info\">\n          <h2>Quick Summary<\/h2>\n          <ul>\n            <li>Base URL: <code>https:\/\/radar.kubebuddy.io\/api\/kb-radar\/v1<\/code><\/li>\n            <li>Catalog endpoints: require auth (browser session or API key)<\/li>\n            <li>User endpoints: HTTP Basic Auth with WordPress application passwords<\/li>\n          <\/ul>\n        <\/div>\n      <\/section>\n\n      <section id=\"get-key\" class=\"kb-docs-section\">\n        <h2>1) Get your API key<\/h2>\n        <ul>\n          <li>Go to Account -&gt; Developer API Access<\/li>\n          <li>Create a key and copy it (shown once)<\/li>\n          <li>Keys are WordPress Application Passwords tied to your user<\/li>\n          <li>Use your WordPress username + the key for auth<\/li>\n        <\/ul>\n        <p>Your account page only shows keys created for the logged-in user.<\/p>\n        <p>Store keys securely and revoke them when no longer needed.<\/p>\n      <\/section>\n\n      <section id=\"catalog-request\" class=\"kb-docs-section\">\n        <h2>2) Try a catalog request (auth required)<\/h2>\n        <p>Use HTTP Basic Auth (application password) or a browser session. Let&#8217;s fetch the first 3 projects:<\/p>\n        <div class=\"kb-docs-code\">\n          <button class=\"kb-docs-copy\" data-copy-target=\"catalog-request\">Copy<\/button>\n          <pre id=\"catalog-request\"><code class=\"language-bash\">curl -u \"username:app_password\" \\\n  \"https:\/\/radar.kubebuddy.io\/api\/kb-radar\/v1\/projects?per_page=3\"<\/code><\/pre>\n        <\/div>\n        <p>Sample response:<\/p>\n        <div class=\"kb-docs-code\">\n          <button class=\"kb-docs-copy\" data-copy-target=\"catalog-response\">Copy<\/button>\n          <pre id=\"catalog-response\"><code class=\"language-json\">{\n  \"page\": 1,\n  \"per_page\": 3,\n  \"total\": 256,\n  \"total_pages\": 86,\n  \"items\": [\n    {\n      \"id\": 12,\n      \"name\": \"Argo CD\",\n      \"description\": \"Declarative GitOps CD for Kubernetes\",\n      \"category\": \"CI\/CD\",\n      \"cncf_status\": \"graduated\",\n      \"repo_url\": \"https:\/\/github.com\/argoproj\/argo-cd\",\n      \"homepage\": \"https:\/\/argo-cd.readthedocs.io\",\n      \"latest_version\": \"v2.10.4\",\n      \"latest_published_at\": \"2024-06-02 10:35:20\"\n    }\n  ]\n}<\/code><\/pre>\n        <\/div>\n        \n        <h3>Try searching and filtering:<\/h3>\n        <div class=\"kb-docs-code\">\n          <button class=\"kb-docs-copy\" data-copy-target=\"catalog-search\">Copy<\/button>\n          <pre id=\"catalog-search\"><code class=\"language-bash\"># Search for Kubernetes-related projects\ncurl -u \"username:app_password\" \\\n  \"https:\/\/radar.kubebuddy.io\/api\/kb-radar\/v1\/projects?search=kubernetes&per_page=5\"\n\n# Get only CNCF graduated projects\ncurl -u \"username:app_password\" \\\n  \"https:\/\/radar.kubebuddy.io\/api\/kb-radar\/v1\/projects?cncf_status=graduated&per_page=10\"\n\n# Get recent security releases\ncurl -u \"username:app_password\" \\\n  \"https:\/\/radar.kubebuddy.io\/api\/kb-radar\/v1\/recent-releases?limit=10&security_only=1\"\n\n# Get recent CI\/CD tool releases\ncurl -u \"username:app_password\" \\\n  \"https:\/\/radar.kubebuddy.io\/api\/kb-radar\/v1\/recent-releases?limit=10&category=CI\/CD\"<\/code><\/pre>\n        <\/div>\n        \n        <h3>Try with PowerShell:<\/h3>\n        <div class=\"kb-docs-code\">\n          <button class=\"kb-docs-copy\" data-copy-target=\"catalog-powershell\">Copy<\/button>\n          <pre id=\"catalog-powershell\"><code class=\"language-powershell\">$user = \"your_username\"\n$pass = \"your_app_password\"\n$token = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(\"$user`:$pass\"))\n$headers = @{ Authorization = \"Basic $token\" }\n\n# Basic request\nInvoke-RestMethod \"https:\/\/radar.kubebuddy.io\/api\/kb-radar\/v1\/projects?per_page=3\" -Headers $headers\n\n# Search and filter\n$graduated = Invoke-RestMethod \"https:\/\/radar.kubebuddy.io\/api\/kb-radar\/v1\/projects?cncf_status=graduated&per_page=10\" -Headers $headers\n$graduated.items | ForEach-Object { Write-Host \"$($_.name) - $($_.category)\" }<\/code><\/pre>\n        <\/div>\n        \n        <h3>Try with Python:<\/h3>\n        <div class=\"kb-docs-code\">\n          <button class=\"kb-docs-copy\" data-copy-target=\"catalog-python\">Copy<\/button>\n          <pre id=\"catalog-python\"><code class=\"language-python\">import requests\nfrom requests.auth import HTTPBasicAuth\n\nauth = HTTPBasicAuth(\"your_username\", \"your_app_password\")\n\n# Basic request\nresponse = requests.get(\"https:\/\/radar.kubebuddy.io\/api\/kb-radar\/v1\/projects?per_page=3\", auth=auth)\ndata = response.json()\nprint(f\"Found {data['total']} projects total\")\n\n# Get security releases\nsecurity = requests.get(\n    \"https:\/\/radar.kubebuddy.io\/api\/kb-radar\/v1\/recent-releases?limit=10&security_only=1\",\n    auth=auth\n)\nreleases = security.json()\nfor rel in releases['releases']:\n    print(f\"{rel['name']} {rel['version']} - {rel['security_severity']}\")<\/code><\/pre>\n        <\/div>\n      <\/section>\n\n      <section id=\"errors\" class=\"kb-docs-section\">\n        <h2>3) Common errors &#038; troubleshooting<\/h2>\n        \n        <h3>401 Unauthorized<\/h3>\n        <p><strong>Problem:<\/strong> Missing or invalid authentication credentials<\/p>\n        <p><strong>Solutions:<\/strong><\/p>\n        <ul>\n          <li>Make sure you&#8217;re using your WordPress <strong>username<\/strong>, not your email address<\/li>\n          <li>Verify your application password is correct (copy it exactly, including spaces)<\/li>\n          <li>Check that the Authorization header is properly formatted<\/li>\n          <li>Test with a simple curl command first: <code>curl -u \"user:pass\" \"URL\"<\/code><\/li>\n        <\/ul>\n        \n        <h3>403 Forbidden<\/h3>\n        <p><strong>Problem:<\/strong> Authenticated but not authorized for this resource<\/p>\n        <p><strong>Solutions:<\/strong><\/p>\n        <ul>\n          <li>Check your plan level &#8211; some endpoints require Pro or Pro Plus<\/li>\n          <li>Verify you haven&#8217;t exceeded your subscription limit<\/li>\n          <li>Make sure the endpoint exists and you&#8217;re using the correct HTTP method<\/li>\n        <\/ul>\n        \n        <h3>404 Not Found<\/h3>\n        <p><strong>Problem:<\/strong> Endpoint doesn&#8217;t exist<\/p>\n        <p><strong>Solutions:<\/strong><\/p>\n        <ul>\n          <li>Check the base URL: <code>https:\/\/radar.kubebuddy.io\/api\/kb-radar\/v1<\/code><\/li>\n          <li>Verify the endpoint path in the API reference<\/li>\n          <li>Make sure the resource ID exists (e.g., project ID)<\/li>\n        <\/ul>\n        \n        <h3>Testing Your Setup<\/h3>\n        <p>Quick test to verify your credentials work:<\/p>\n        <div class=\"kb-docs-code\">\n          <button class=\"kb-docs-copy\" data-copy-target=\"test-auth\">Copy<\/button>\n          <pre id=\"test-auth\"><code class=\"language-bash\"># Test authentication with dashboard endpoint\ncurl -v -u \"your_username:your_app_password\" \\\n  \"https:\/\/radar.kubebuddy.io\/api\/kb-radar\/v1\/dashboard\"\n\n# If successful, you'll see your account info\n# If 401, check your username and password<\/code><\/pre>\n        <\/div>\n      <\/section>\n\n      <section id=\"next-steps\" class=\"kb-docs-section\">\n        <h2>Next Steps<\/h2>\n        <p>Now that you&#8217;ve made your first requests, here&#8217;s what to explore next:<\/p>\n        \n        <h3>1. Explore More Endpoints<\/h3>\n        <ul>\n          <li><code>GET \/stats<\/code> &#8211; Get platform statistics<\/li>\n          <li><code>GET \/recent-releases<\/code> &#8211; See what&#8217;s new across all projects (now with category and security filters)<\/li>\n          <li><code>GET \/popular-projects<\/code> &#8211; Discover trending tools<\/li>\n          <li><code>GET \/projects<\/code> &#8211; Browse all projects (now with search and CNCF status filters)<\/li>\n          <li><code>GET \/subscriptions<\/code> &#8211; View your tracked projects (authenticated)<\/li>\n        <\/ul>\n        \n        <h3>2. Try Advanced Filtering<\/h3>\n        <ul>\n          <li>Search for specific projects: <code>?search=prometheus<\/code><\/li>\n          <li>Filter by CNCF maturity: <code>?cncf_status=graduated<\/code><\/li>\n          <li>Get only security releases: <code>?security_only=1<\/code><\/li>\n          <li>Filter by category: <code>?category=CI\/CD<\/code><\/li>\n        <\/ul>\n        \n        <h3>3. Build Something<\/h3>\n        <ul>\n          <li>Create a Slack bot for release notifications<\/li>\n          <li>Add a dashboard widget showing your tracked projects<\/li>\n          <li>Set up CI\/CD checks for dependency updates<\/li>\n          <li>Build a custom mobile app<\/li>\n        <\/ul>\n        \n        <h3>3. Read the Full Documentation<\/h3>\n        <ul>\n          <li><a href=\"\/docs\/api\/\">Complete API Reference<\/a> &#8211; All endpoints with examples<\/li>\n          <li><a href=\"\/docs\/api\/#best-practices\">Performance Best Practices<\/a> &#8211; Optimize your usage<\/li>\n          <li><a href=\"\/docs\/api\/#examples\">Real-World Use Cases<\/a> &#8211; Learn from examples<\/li>\n        <\/ul>\n      <\/section>\n\n      <section id=\"help\" class=\"kb-docs-section\">\n        <h2>Need help?<\/h2>\n        <p>Contact support and include any error details.<\/p>\n        <p><a href=\"\/support\/#kb-support-form\">Contact support<\/a><\/p>\n        <p><a class=\"kb-docs-back\" href=\"\/docs\/\">\u2190 Back to Docs<\/a><\/p>\n      <\/section>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/body>\n<\/html>\n\n","protected":false},"excerpt":{"rendered":"<p>KubeBuddy Radar API &#8211; Getting Started \u2190 Back to Docs KubeBuddy Radar API &#8211; Getting Started Start with an authenticated catalog request, then try user-specific endpoints with your account. On this page Quick Summary Get your API key Catalog request (auth) Authenticated request Common errors Next steps Need help Quick Summary Base URL: https:\/\/radar.kubebuddy.io\/api\/kb-radar\/v1 Catalog &#8230; <a title=\"api-getting-started\" class=\"read-more\" href=\"https:\/\/radar.kubebuddy.io\/docs\/api-getting-started\/\" aria-label=\"Read more about api-getting-started\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":608,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-613","page","type-page","status-publish"],"_links":{"self":[{"href":"https:\/\/radar.kubebuddy.io\/api\/wp\/v2\/pages\/613","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/radar.kubebuddy.io\/api\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/radar.kubebuddy.io\/api\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/radar.kubebuddy.io\/api\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/radar.kubebuddy.io\/api\/wp\/v2\/comments?post=613"}],"version-history":[{"count":19,"href":"https:\/\/radar.kubebuddy.io\/api\/wp\/v2\/pages\/613\/revisions"}],"predecessor-version":[{"id":877,"href":"https:\/\/radar.kubebuddy.io\/api\/wp\/v2\/pages\/613\/revisions\/877"}],"up":[{"embeddable":true,"href":"https:\/\/radar.kubebuddy.io\/api\/wp\/v2\/pages\/608"}],"wp:attachment":[{"href":"https:\/\/radar.kubebuddy.io\/api\/wp\/v2\/media?parent=613"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}