GitHub API: List releases
Lists published, non-draft releases of a public GitHub project, newest first. A bare project name matches the most-starred repository.
Unofficial. Not affiliated with or endorsed by GitHub.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- Project, required
project Project name, owner/name, or GitHub repository link, such as microsoft/vscode.
cli/cli
- Max Results optional
max_results Maximum number of releases to return, such as 10.
2
Whole number from 1 to 100. Default
10.- Include Pre Releases optional
include_pre_releases Include pre-releases as well as stable releases; for example, true.
false (default)
True or false.
Input as JSON
{ "project": "cli/cli" , "max_results": 2}Output
{ "project": { "name": "cli", "owner": "cli", "full_name": "cli/cli" , "page_link": "https://github.com/cli/cli" }, "releases": [ { "version": "v2.103.0", "pre_release": "no", "release_date": "2026-10-21", "release_notes": "Expiring, auto-refreshing OAuth tokens (preview)\ngh can now sign in with expiring OAuth credentials that it refreshes automatically. When you opt in, gh stores a short-lived access token alongside a rotating refresh token and refreshes the access token whenever it is needed, so you stay signed in wi…", "release_title": "GitHub CLI 2.103.0", "download_files": [ { "file_name": "gh_2.103.0_checksums.txt", "download_count": 18463 }, { "file_name": "gh_2.103.0_linux_386.deb", "download_count": 109 }, { "file_name": "gh_2.103.0_linux_386.rpm", "download_count": 47 } ], "release_page_link": "https://github.com/cli/cli/releases/tag/v2.103.0" }, { "version": "v2.102.1", "pre_release": "no", "release_date": "2026-10-20", "release_notes": "What's Changed\n:dependabot: Dependencies\nchore(deps): bump Go toolchain from 1.27.1 to 1.27.3 and golang.org/x/net from 0.58.0 to 0.60.0\nFull Changelog: https://github.com/cli/cli/compare/v2.102.0...v2.102.1" , "release_title": "GitHub CLI 2.102.1", "download_files": [ { "file_name": "gh_2.102.1_checksums.txt", "download_count": 11328 }, { "file_name": "gh_2.102.1_linux_386.deb", "download_count": 73 }, { "file_name": "gh_2.102.1_linux_386.rpm", "download_count": 43 } ], "release_page_link": "https://github.com/cli/cli/releases/tag/v2.102.1" } ]}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"github.com/list_releases","input":{"project":"cli/cli","max_results":2}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "github.com/list_releases" , "input": { "project": "cli/cli" , "max_results": 2 }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "github.com/list_releases" , "input": { "project": "cli/cli" , "max_results": 2 } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run github.com/list_releases# with {"project":"cli/cli","max_results":2}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "project" ], "properties": { "project": { "type": "string", "minLength": 1, "description": "Project name, owner/name, or GitHub repository link, such as microsoft/vscode." }, "max_results": { "type": "integer", "default": 10, "maximum": 100, "minimum": 1, "description": "Maximum number of releases to return, such as 10." }, "include_pre_releases": { "type": "boolean", "default": false, "description": "Include pre-releases as well as stable releases; for example, true." } }}Output schema
{ "type": "object", "required": [ "project", "releases" ], "properties": { "project": { "type": "object", "required": [ "name", "owner", "full_name", "page_link" ], "properties": { "name": { "type": "string" }, "owner": { "type": "string" }, "full_name": { "type": "string" }, "page_link": { "type": "string" } } }, "releases": { "type": "array", "items": { "type": "object", "required": [ "version", "release_title", "release_date", "pre_release", "release_notes", "download_files", "release_page_link" ], "properties": { "version": { "type": [ "string", "null" ] }, "pre_release": { "enum": [ "yes", "no" ], "type": "string" }, "release_date": { "type": [ "string", "null" ], "description": "Publication date in YYYY-MM-DD format." }, "release_notes": { "type": [ "string", "null" ], "description": "Plain text, truncated to 2,000 characters." }, "release_title": { "type": [ "string", "null" ] }, "download_files": { "type": "array", "items": { "type": "object", "required": [ "file_name", "download_count" ], "properties": { "file_name": { "type": "string" }, "download_count": { "type": "integer" } } } }, "release_page_link": { "type": "string" } } } } }}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
github.com/list_releases- Returns
- project details and releases with version, title, date, pre-release flag, notes, download files and page link
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method github.com/list_releases with the inputs above.
Ask your agent
- What are the latest stable releases of the vscode project, with version numbers and download files?
- Show me the last 10 versions of microsoft/vscode including release notes and dates.
- Can you list recent pre-release and stable builds of the react repository, newest first?
- I need the release history for the most popular project named kubernetes, including titles and page links.
- Find the newest published versions of the tensorflow/tensorflow repo on GitHub, up to 25 entries, with pre-releases included.
See more
All GitHub methodsLists public issues or pull requests for a GitHub project, with state, label and sort options. A bare project name matches the most-starred repository with that name.
github.com/list_issuesLooks up a public GitHub repository by name, owner/name, or link and returns its stars, forks, release, commit and contributor facts.
github.com/get_repositoryFinds public GitHub repositories by keywords, with an optional language filter and sort order. Returns up to 100 matches.
github.com/search_repositoriesLists up to 25 public repositories trending on GitHub, in page order, optionally filtered by programming language and time period.
github.com/list_trending_repositoriesLooks up a NuGet package by name or nuget.org link. Inexact names match the top search result. Returns the latest stable release's details and the 10 most recent versions, including prereleases.
nuget.org/get_packageGets the newest public G2 reviews for a software product, with reviewer details and review text, plus the product's overall rating and review count when G2's profile shows them. The public feed exposes up to 25 recent reviews.
g2.com/get_product_reviewsFinds PR Newswire press releases by company name or keywords, newest first, with optional publication date filters.
prnewswire.com/search_press_releasesLists the latest publicly embeddable posts and reels from an Instagram account, newest first. Without login Instagram may show fewer posts than requested. View counts that are not available are null.
instagram.com/list_recent_posts