Skip to main content

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 export writes the API as an OpenAPI document that imports back without a single change. jojapi import previews 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 changes lists what production is behind; changes deploy promotes it and changes discard throws it away. jojapi deployments keep|public|archive changes one deployment.
  • Worker. jojapi resources add|remove|share|revoke|accept handles storage, queues and their shares. jojapi vars sets variables; secrets are read from a prompt or stdin, never from an argument. jojapi settings --logs on, jojapi usage and jojapi mode cover the rest.
  • Listing. jojapi info, create and update (--marketplace public names the checks that fail); jojapi endpoints show|add|update|hide|disable|delete|duplicate|move|example; jojapi groups, faqs, objects; and jojapi 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 billing for what endpoints charge; jojapi agents for per-request agent prices; jojapi grant for one-off free quota.
  • Analytics. jojapi apis, dashboard, traffic, requests (credentials and cookies are always redacted), transactions and subscribers.

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.
Below that: requests over the last 30 days (with the change against the 30 days before and the success rate), what you spent this month on plans and pay-as-you-go usage, your balance, a daily chart of requests by status, your subscriptions with their quota, your most used APIs with error rate and latency, usage by project, and recent activity. New accounts get a short Get started list until their first request.

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

A fetch() 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-plan answers plan: {slug, type, blocked}, so you no longer have to list the plans again to find the new one.
  • Opaque ids for subscriptions and transfers. ProviderSubscriptions and pending-transfers return string ids, and the routes that take an id expect it exactly as returned. This includes studio/grant-quota and the Studio’s transfer and cancel actions. Raw numbers are refused.
  • Every error has a status. The few routes that answered errors with only a code now carry status as well (code stays for older clients).
  • Public plan limits apply when a plan is made public. Opening a private plan with update-api-plan now 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.