mrkeyoor.com_
Sat 17 Oct 13:31 UTC
LLM Toolsevaluationupdated 10 Oct 2026

one-api review

One API is a self-hosted gateway that lets applications access multiple model providers through an OpenAI-style interface, with shared token and quota management. Its primary documentation is Chinese, and an English README exists but identifies itself as an AI translation.

+69stars / 7d
Verdict

Our One API build passed in 78 seconds, but its 12-second test run ended with 8 passes and 3 failures out of 11. Use it only after checking the precise provider requests your applications send, especially where model mapping or Gemini system messages are involved. January code activity and October compatibility reports make it a cautious choice for a new shared gateway.

We ran it

Lab card: what happened when we ran one-apiScreenshot of one-api (oneapi.justsong.cn)
Install✓ · 13s181 packages
Build✓ · 78s
Tests✗ · 12s8 passed · 3 failed of 11 (go test)
Repo564 files~56,037 lines of source · 2.6 MB · 5 CI workflows · Dockerfile

Answers from our run

Does one-api build from source?

Dependencies installed in 13 seconds (181 packages), and the build succeeded in 78 seconds. We cloned commit 8df4a26 into a clean Debian container with 3 CPUs and no project-specific setup.

Do one-api's tests pass?

No. The project's own test command finished in 12 seconds and reported 8 passed, 3 failed (go test).

Who should not use one-api?

Applications requiring transparent passthrough of every new request field: the README warns model mapping reconstructs bodies and can lose unsupported fields.

What are the alternatives to one-api?

LiteLLM, New API. Our One API build passed in 78 seconds, but its 12-second test run ended with 8 passes and 3 failures out of 11.

Setup3/5Build passes, then credentials, persistent state, and access setup
Docs3/5Detailed Chinese guide, with differences in English translation
Community3/5Active October reports, but no push since January 9
Maturity3/5Working build, failed checks, and a current translation report

Who it’s for

Operators distributing model access through gateway tokens while retaining provider credentials centrally.
Teams needing channel groups, model restrictions, and separate account and token quotas.
Developers prepared to inspect provider translations and maintain the database-backed access service.

Who it’s NOT for

Applications requiring transparent passthrough of every new request field: the README warns model mapping reconstructs bodies and can lose unsupported fields.
Gemini workloads depending on exact conversation roles without adaptor review: issue 2458 reports altered system messages and an added model turn at commit 8df4a26.
Teams expecting a stateless multi-node deployment: the README requires a shared database, matching session secrets, and node synchronization settings.
English-only operators who cannot cross-check settings: the translated README differs from the Chinese documentation in provider coverage and log guidance.

Setup reality

Our October 9 sandbox installed commit 8df4a26 in 13 seconds, adding 181 packages, and built it successfully in 78 seconds. Tests failed after 12 seconds: the summary recorded 8 passes and 3 failures out of 11. The log tail names TestDecode/Decode:jpeg in common/image without explaining the cause or all reported failures.

Useful operation needs provider credentials, gateway tokens, persistent storage, and a changed administrator password. The Docker example uses a mounted data directory. Higher-concurrency and multi-node setups add external database settings, shared session secrets, and synchronization configuration.

The Go build result does not verify live provider requests or the separate frontend route. Model mapping can drop unsupported fields. English documentation exists, but operators should compare it with the primary Chinese README.

One API manages provider access through channels and tokens

Give an application a One API token, and you can keep the upstream provider credential inside the gateway instead of configuring it in every client. The project relays requests through an OpenAI-style interface and supplies an administration screen for channels, quotas, and user groups. Its primary documentation is Chinese, with an English README available. That makes it useful for an operator distributing access across several people or applications, provided those applications use request shapes the gateway translates correctly.

Our 2.6 MB checkout contained 564 files and about 56,037 lines of source. The Go harness handled the backend path, while the README also describes a separate web frontend. One API's value comes from operating the access layer: token expiry, permitted models, channel selection, and group-based rates. For one application calling one provider, you may gain little from adding a database, administrator account, and relay service between the client and its destination.

What happened when we ran it

Our One API sandbox installed commit 8df4a26 in 13 seconds and built it successfully in 78 seconds. Installation added 181 packages. The October 9, 2026 run used the golang:1.24-bookworm image with 3 CPUs and 8 GB of RAM in an unprivileged container without secrets. The test step then failed with exit code 1 after 12 seconds: the supplied summary recorded 8 passes and 3 failures out of 11.

The log tail identifies TestDecode/Decode:jpeg under common/image as a failing case. It shows successful package results for common/network, relay, the AWS llama3 adaptor, and channeltype, alongside packages reporting no test files. The tail does not explain the JPEG failure or identify every failure in the summary. Calling it a missing image library, a network problem, or a general gateway defect would require evidence we do not have.

Our scan found 5 CI workflow files, a Dockerfile, and a Compose file, but no tests directory. The Go results show why that last signal needs care: package-local tests can exist without a directory named tests. This run established successful installation and build with an incomplete test result. It did not establish live provider compatibility, request throughput, or accounting accuracy. No vulnerability-audit result was supplied, so this review cannot award the dependency tree a clean bill of health.

Model mapping can discard unsupported request fields

The Chinese README warns that enabling model mapping reconstructs a request body and can prevent fields not yet formally supported from passing through. That is a serious boundary if your client adopts new provider features quickly. A model name appearing in an administration menu does not establish full support for its request options. Keep a representative request corpus and compare what reaches the upstream service before routing an application through the gateway.

Open issue 2458 reports a more specific translation problem at the same 8df4a26 commit: Gemini requests may turn system instructions into a user message and append a model reply the client never sent. The reporter captured bodies with a local upstream recorder, without calling Gemini. That is a reported adaptor defect, separate from our sandbox results. It gives teams depending on precise conversation roles a concrete reason to pause adoption and inspect the translated request.

A running container still needs credentials and persistent state

The Docker example listens on port 3000 and persists data through a host-mounted directory. Operators add provider credentials as channels, then create gateway tokens for clients. The documented initial administrator password must be changed. Decide who can manage channels and issue tokens before sharing the endpoint, and configure HTTPS for clients outside the host. The admin interface centralizes useful controls, but it also centralizes access to the upstream accounts you place behind it.

The 78-second successful build is only the backend result our harness supplied. It does not establish an operational deployment with paid providers or a separately verified frontend. SQLite is the simple storage route, while the README recommends an external database for higher concurrency. Multiple nodes require shared database settings and the same session secret, with slave roles and synchronization configuration. Redis can reduce database traffic, though the documentation warns that caching can make data lag.

English documentation exists, but it is not fully aligned

The English README says it was translated by ChatGPT and invites corrections. There are concrete differences from the Chinese version: its provider list is shorter, and its log-directory description differs. English-only operators can get started, but should cross-check settings against the primary documentation and code before relying on them. A gateway that holds credentials and usage balances deserves more scrutiny than a successful container start.

Our 181-package installation does not resolve those operational questions. Quota is separate at the account and token levels, and the FAQ explains group and model multipliers. Budget-conscious teams should reconcile gateway usage against provider records instead of treating an internal balance as an invoice. If you need a language-model SDK alongside a gateway, compare LiteLLM. If you prefer this family of administration interfaces, inspect New API and its compatibility behavior separately.

January code activity trails October compatibility reports

The last push was January 9, 2026. GitHub listed 37,113 stars and 1,039 open issues and PRs, while the latest stable release, v0.6.10, dates to February 2, 2025. October activity included the Gemini translation report and an open adaptor-update PR. That combination shows an engaged user base with pending compatibility work, rather than proving either current maintainer responsiveness or abandonment from an old release tag alone.

One API earns consideration when its token and channel controls solve an existing access problem and your request shapes are already covered. I would hesitate to introduce it as the default gateway for a new application dependent on rapidly changing provider features. Our build passed, but 3 of the 11 reported checks failed, and the current translation report affects conversation meaning. Before issuing shared tokens, verify the exact provider path, persistent balances, and administrator access you intend to rely on.

Alternatives

ProjectWhat it isPick it when
LiteLLM gh↗A multi-provider model SDK and gateway with routing and usage controls.pick this instead when you need an SDK as well as an independently evaluated gateway.
New API gh↗A related model gateway with a management interface and multiple API formats.pick this instead when you want to compare this style of administration against another implementation.

What people are saying

  1. [github-trending] songquanpeng/one-api

Sources

  1. One API Chinese README
  2. One API English README
  3. Gemini conversation translation report
  4. Pending Gemini adaptor update
  5. One API v0.6.10 release
  6. One API code activity

More llm tools reviews

GLM-5.3-Flash-EXL3-2x-DGX-Sparks-TensorFold · livenerf · scion · opencode2api · IQuest-Q1 · iCode · the whole board →