The CLI covers your whole API
jojapi 0.2 goes beyond Worker code. From a terminal, CI or an AI agent you can now manage deployments, bindings, variables, the listing, its OpenAPI document, pricing, traffic and request logs. Every write that cannot be undone shows what will change and asks first. See Command-line interface.
- Endpoints as code.
jojapi exportwrites the API as an OpenAPI document that imports back without a single change.jojapi importpreviews every change field by field and ends with a digest;--apply --expect <digest>applies exactly that preview, and refuses if anything changed since. OpenAPI (JSON or YAML) and Postman Collections are read from a file or a URL. - Deployments.
jojapi changeslists what production is behind;changes deploypromotes it andchanges discardthrows it away.jojapi deployments keep|public|archivechanges one deployment. - Worker.
jojapi resources add|remove|share|revoke|accepthandles storage, queues and their shares.jojapi varssets variables; secrets are read from a prompt or stdin, never from an argument.jojapi settings --logs on,jojapi usageandjojapi modecover the rest. - Listing.
jojapi info,createandupdate(--marketplace publicnames the checks that fail);jojapi endpoints show|add|update|hide|disable|delete|duplicate|move|example;jojapi groups,faqs,objects; andjojapi page, which shows the marketplace page as consumers see it. - Pricing.
jojapi plans create|public|private|rate|display|add-object|delete|access;jojapi features;jojapi billingfor what endpoints charge;jojapi agentsfor per-request agent prices;jojapi grantfor one-off free quota. - Analytics.
jojapi apis,dashboard,traffic,requests(credentials and cookies are always redacted),transactionsandsubscribers.
Projects for your API keys
API keys now belong to projects. The workspace’s API Keys page is now Projects & API Keys: switch between projects or see all of them, and create each key in the project it belongs to. See Projects.- Every key in a project. Your existing keys are in a project named Default, which you can rename. A key stays in the project it was created in, so a project’s history is always its own keys’ history.
- Room to grow. Up to 25 projects per account and 50 keys per project, up from 15 keys per account.
- Usage by project. Subscription analytics filter by project and total each project’s requests, usage, latency and spend. Request logs show each key’s project.
- Find a key fast. The key pickers in the playground, the Connect dialog, analytics and request logs are searchable and grouped by project.
A dashboard that tells you what to do next
The workspace dashboard now starts with what needs your attention, and each item has a one-click fix:- A failed payment. Pay now opens the payment for that subscription.
- A quota at 80% or used up. See its usage or upgrade the plan; the date it resets is right there.
- A balance running low. When your balance is below the last 7 days of pay-as-you-go usage, top up or turn on auto top-up.
API pages and the playground
API pages use more of a large screen, and the playground shows more of what comes back.- The response stays in view. The endpoint list and the response panel stay on screen while you scroll through an endpoint’s parameters. The response gets the widest column, and an opened response fills the panel. Pages across the site are now up to 1600px wide.
- Examples next to the live response. An endpoint’s documented responses moved to an Examples tab beside Response. It opens first until you send a request, so signed-out visitors see what the endpoint returns right away.
- What a request cost. Every billable object the gateway reports is shown, not only credits, with what is left on your plan or your pay-as-you-go balance, and the time and size of the response.
- Files and text. Images, audio and video preview in the panel; PDFs and other files download; HTML, XML and other text are shown as text.
- The fix, one click away. When the gateway refuses a request because you have no subscription, your plan or balance doesn’t cover it, or the key can’t call this API, the response links to the fix.
- Readable descriptions. Endpoint, parameter and response descriptions render Markdown (links, emphasis, code and lists), and long URLs no longer widen the page.
- Phones. A Send bar stays at the bottom of the screen while you fill in a request. Signed out, Send becomes Sign in and brings you back to the endpoint.
- Code in nine languages. Code Snippets writes the request as you filled it in, with its host, headers, query and body, in cURL, JavaScript, Node.js, Python, PHP, Go, Java, C# and Ruby, with syntax highlighting.
- Share a request. The link button next to an endpoint’s name copies a link that opens the endpoint with your values filled in. Your API key and any parameter named like a credential stay out of the link, and a JSON body too large for a link is left out. Opening a link never sends the request.
- Send checks first. When a required parameter is empty, or you have no API key that can call the API, Send says so and takes you to the field instead of sending.
- Agent payments in Connect. How AI agents can pay for an API with a wallet, without an API key, moved from the page header into the Connect dialog.
Release notes from your deploys
Releases on an API page now lists only releases with a note from the provider, instead of an “Updated” line for every production deploy. Every deploy still moves the page’s “last updated” date. A deploy from the command line or GitHub can now carry the note:jojapi deploy --prod --note "…" (CLI 0.2.1) or the note input of jojapicom/deploy-action. See Deployments.
Browser impersonation for Worker requests
Afetch() from your Worker can now go out with a real browser’s identity: set x-jojapi-relay-impersonate: chrome (or firefox, safari, a pinned version such as chrome146, …) and the target sees that browser’s TLS handshake, HTTP/2 settings and default headers, with or without your own proxy. Requests without the header are unchanged. See Proxies and the egress relay.
Management API
- New plans come back with their slug.
create-api-plananswersplan: {slug, type, blocked}, so you no longer have to list the plans again to find the new one. - Opaque ids for subscriptions and transfers.
ProviderSubscriptionsandpending-transfersreturn string ids, and the routes that take an id expect it exactly as returned. This includesstudio/grant-quotaand the Studio’s transfer and cancel actions. Raw numbers are refused. - Every error has a
status. The few routes that answered errors with only acodenow carrystatusas well (codestays for older clients). - Public plan limits apply when a plan is made public. Opening a private plan with
update-api-plannow checks the same limits as creating a public plan: 10 public plans per API, one of them pay-as-you-go. The hidden plan behind agent payments no longer takes one of the 10 slots. - Small fixes. Switching an API’s Worker to the mode it already runs no longer creates a deployment. A Postman Collection imported from a URL is recorded as a Postman source. Access to a deleted plan can no longer be granted.
