Codeberg (Forgejo) API
Free Codeberg API with no key for public data: repository search, issues, releases and users on the non-profit Git host. Same API as Gitea and Forgejo. Tested.
Endpoint tested and returned HTTP 200 on 2026-08-20
What is the Codeberg (Forgejo) API?
The Codeberg API is a free, key-free (for public data) REST API for the non-profit Git hosting platform, providing repository search, issues, pull requests, releases and user data. It implements the Forgejo/Gitea API, so the same code works against any self-hosted instance.
Codeberg is a non-profit, community-funded Git host built on Forgejo, and it is the practical open alternative to GitHub for projects that want independence from a commercial platform.
The real value of learning this API is portability: Forgejo and Gitea share it, so code written against Codeberg works unchanged against any self-hosted Gitea or Forgejo instance by changing the hostname.
Quick facts
- Base URL
https://codeberg.org/api/v1- Authentication
- Public repository data needs no auth. Private data and writes require a token.
- Rate limit
- No published hard limit for anonymous reads; be considerate of a non-profit's infrastructure.
- Pricing
- Free, funded by donations.
- CORS
- Not enabled — call it from your server
- Official docs
- Read the docs
How to use the Codeberg (Forgejo) API
Every request below was executed against the live API on 2026-08-20, and the response shown is the real body it returned — not an illustration.
1. Search public repositories
GET https://codeberg.org/api/v1/repos/search?limit=1
curl 'https://codeberg.org/api/v1/repos/search?limit=1'const res = await fetch("https://codeberg.org/api/v1/repos/search?limit=1");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://codeberg.org/api/v1/repos/search?limit=1", timeout=20)
res.raise_for_status()
print(res.json()){
"ok": true,
"data": [
{
"id": 1604031,
"owner": {
"id": 1014846,
"login": "dzw047p001",
"login_name": "",
"source_id": 0,
"full_name": "",
"email": "dzw047p001@noreply.codeberg.org",
"avatar_url": "https://codeberg.org/avatars/26dc58d132dd9820bee5ee97097cd918",
"html_url": "https://codeberg.org/dzw047p001",
"language": "",
"is_admin": false,
"last_login": "0001-01-01T00:00:00Z",
"created": "2026-04-14T16:59:59+02:00",
"restricted": false,
"active": false,
"prohibit_login": false,
"location": "",
"pronouns": "",
"website": "",
"description": "",
"visibility": "public",
"followers_count": 0,
"following_count": 0,
"starred_repos_count": 0,
"username": "dzw047p001"
},
"name": "_",
"full_name": "dzw047p001/_",
"description": "",
"empty": false,
"private": false,
"fork": false,
"template": false,
"parent": null,
"mirror": false,
"size": 8,
"language": "",
"languages_url": "https://codeberg.org/api/v1/repos/dzw047p001/_/languages",
"html_url": "https://codeberg.org/dzw047p001/_",
"url": "https://codeberg.org/api/v1/repos/dzw047p001/_",
"link": "",
"ssh_url": "ssh://git@codeberg.org/dzw047p001/_.git",
"clone_url": "https://codeberg.org/dzw047p001/_.git",
"original_url": "",
"website": "",
"stars_count": 1,
"forks_count": 0,
"watchers_coParameters
| Parameter | Type | Required | Description |
|---|---|---|---|
repos/search | path | Optional | Search repositories. repos/search |
q | string | Optional | Search query. rust |
limit | integer | Optional | Results per page, max 50. 10 |
sort | string | Optional | alpha, created, updated, size or id. updated |
repos/<owner>/<repo> | path | Optional | A specific repository. repos/forgejo/forgejo |
Response fields
okboolean- Whether the search succeeded.
data[].idinteger- Repository id.
data[].full_namestring- owner/repo.
data[].descriptionstring- Repository description.
data[].stars_count / forks_countinteger- Popularity metrics.
data[].languagestring- Primary language.
data[].updated_atstring- Last update timestamp.
data[].ownerobject- Owning user or organisation.
What you can build with the Codeberg (Forgejo) API
- Mirror a GitHub-style repository listing from an open host
- Build tooling that works against self-hosted Gitea or Forgejo
- Track issues and releases on Codeberg-hosted projects
- Display project activity on a personal site
Common errors and how to fix them
401
The repository is private.
Fix: Private data requires a personal access token in the Authorization header.
Empty data with ok: true
The search matched nothing.
Fix: Check `ok` and the data array length separately — an empty result is not an error.
Rate limiting
Codeberg is a donation-funded non-profit.
Fix: Cache aggressively; do not treat it like commercial infrastructure.
Codeberg (Forgejo) API — frequently asked questions
Is the Codeberg API free?
Yes, public repository data requires no API key. Codeberg is a donation-funded non-profit, so cache rather than polling aggressively.
Is it the same as the Gitea API?
Yes. Codeberg runs Forgejo, a Gitea fork, so the API is shared. Code written against Codeberg works against any self-hosted Gitea or Forgejo instance by changing the hostname.
How does it compare to the GitHub API?
Similar surface — repositories, issues, pull requests, releases — with a smaller ecosystem. Its advantage is portability to self-hosted instances and independence from a commercial platform.
Do I need a token?
Only for private repositories or write operations. Public reads are anonymous.
Tools that pair with this API
JSON Formatter
Format, beautify and minify JSON online with 2-space, 4-space or tab indentation. Sort keys alphabetically and catch syntax errors instantly — free and private.
Markdown to HTML Converter
Convert Markdown to clean HTML with a live preview — headings, emphasis, links, lists, code blocks, tables and blockquotes. 100% in your browser.
Codeberg (Forgejo) is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-20; always check the official documentation before relying on this API in production, as terms and limits can change.