Developers

Changelog

Release notes of the cademi CLI, newest first. Check your version with cademi version; cademi update installs the latest. API release notes: API changelog.

0.5.2

October 26, 2026

Current release of the CLI, built for API release 3.19.0. No command or flag was added, removed, or renamed.

Changes that may require action

  • In cademi settings menus items create and cademi settings menus items update, the label field accepts at most 50 characters (it was 155). A longer label returns 422 validation_failed on the label field. Menu items saved with a longer label keep it; only a new write must fit the limit. cademi commands settings menus items create --schema --json shows maxLength: 50 (API release 3.19.0).

Commands

  • The CLI embeds the API release 3.19.0 document, and cademi version shows api 3.19.0.

Agent skill

  • The cademi-cli agent skill inside the binary is version 0.1.16. It follows CLI 0.5.2 and API release 3.19.0.

To get this release, run cademi update.

0.5.1

October 23, 2026

Built for API release 3.18.0. No command or flag was added, removed, or renamed.

Commands

  • When an operation ends as failed or canceled and returns an error, cademi operations wait and --wait report its field, message, code, and reason, as in operation op_1 failed: file: ... (import_column_missing, reason: email). Without an error, the message stays the same.

Go SDK

  • APIError.Error() includes the reason of each item of details, as in ; field: message (reason: x). An item without a message shows its code. The code (HTTP n): message prefix and the [request_id x] suffix do not change.

Agent skill

  • The cademi-cli agent skill inside the binary is version 0.1.15. It follows CLI 0.5.1 and API release 3.18.0.
  • The skill references separate a flag, an argument, or a related setting from its description with a colon. Alternative permissions read "a or b", as in reports rankings list. config apply --plan <file> shows the value name, as in --help.

To get this release, run cademi update.

0.5.0

October 22, 2026

Built for API release 3.18.0. It is generated from API release 3.18.0, which includes 3.15.3, 3.15.4, 3.16.0, and 3.17.0. No command or flag was added, removed, or renamed.

Changes that may require action

  • cademi events list --resource-id requires --resource-type and takes the public ID of the resource, the same value an event returns in resource.id (for example, les_30). Without --resource-type, or with a bare number such as 30, the API returns 422 validation_failed (API release 3.15.3).
  • The Go SDK no longer has the TicketAnonymous type or the Ticket.Anonymous field. API release 3.16.0 removed the anonymous block from support tickets, and no response ever returned it.

Commands

  • cademi config validate, cademi config plan, and cademi config apply accept the email_template kind, which only updates a template (sale, import, free, or new_access in id), and the custom_field kind. The help of cademi config lists both (API release 3.18.0).
  • cademi settings platform get returns the timezone field, and cademi settings platform update accepts it, as in -f timezone=America/Sao_Paulo. It is the IANA time zone of the account (API release 3.17.0).
  • cademi integrations credentials policy-templates list can return the settings_manager template, with the settings permissions (API release 3.18.0).

Help

  • The help of cademi content products lessons content update lists the accepted block types and the data fields of each, including linkTool.

Agent skill

  • The cademi-cli agent skill inside the binary is version 0.1.14. It follows CLI 0.5.0 and API release 3.18.0.

0.4.1

October 14, 2026

Built for API release 3.15.2. It is generated from API release 3.15.2, which includes 3.15.1: no command, flag, exit code, field, event, or error code was added, removed, or changed.

The API transition announced in 3.15.0 is over. The access token of cademi auth login sent together with X-API-Key, as CLI 0.3.x does, returns 401 ambiguous_credentials. CLI 0.4.0 and later send the access token alone. If you still run 0.3.x, update with cademi update.

Help

  • The help of cademi account administrators delete says that an administrator acting with their own OAuth access token cannot delete themselves.

Go SDK

  • The comments on actor.admin_id of AuditEntry and RequestLog, and on Capabilities, describe the current model: the administrator of the OAuth access token, or null when a credential acted.

Agent skill

  • The cademi-cli agent skill inside the binary is version 0.1.13. It follows CLI 0.4.1 and API release 3.15.2.

0.4.0

October 14, 2026

Built for API release 3.15.0. Human login is OAuth only: cademi auth login signs in as the administrator, with the administrator's own permissions, and no longer asks for a credential secret. No command or flag was removed. With API release 3.15.0, credentials no longer have an authentication mode, and some commands change with it.

Changes that may require action

  • cademi auth login in human mode sends only Authorization: Bearer with the administrator's access token, never X-API-Key. Calls act with the administrator's own permissions instead of the policies of a credential. --with-key without --api-key-only is ignored, with a warning.
  • Human profiles saved by earlier versions, with a credential secret and OAuth tokens, keep working without a new login; the secret is ignored.
  • cademi integrations credentials create no longer accepts auth_mode in the body: the CLI refuses it before sending, with exit code 2. Credentials no longer return auth_mode or human.
  • With an administrator's access token, cademi integrations credentials current and cademi integrations credentials current-policies return 404 and exit with code 5. Use cademi account capabilities get to read the permissions in effect.
  • The error codes human_context_required, human_mode_not_allowed, admin_not_eligible, and tenant_mismatch are gone. 401 ambiguous_credentials has its own hint.

Commands

  • In human mode, cademi auth status, cademi doctor, and cademi sandbox reset use GET /capabilities. cademi auth status shows the administrator (adm_...) and the account (ins_...), and the number of permissions in effect.
  • cademi profiles list shows the administrator of a human profile in the CREDENTIAL column, and its JSON output includes account_id.
  • requested_by.kind of a processing attempt can be administrator, with an adm_ ID.

Help

  • This release is generated from API release 3.15.0. The help of cademi account capabilities get, cademi account administrators create, cademi account administrators permissions update, and cademi integrations credentials create describes what an administrator can grant: a full-access administrator grants anything, and any other administrator grants only what their own permissions grant.

Go SDK

  • Credential no longer has AuthMode or Human, the CredentialHuman type is removed, CredentialsCreateBody no longer has AuthMode, and HumanAuth sends only the bearer token.

Agent skill

  • The cademi-cli agent skill inside the binary is version 0.1.12. It follows CLI 0.4.0 and API release 3.15.0.

Update the CLI and run cademi auth login only if you want to drop the credential secret saved by an earlier version; existing human profiles keep working. If a script sends auth_mode when creating a credential, remove it. If a script reads cademi integrations credentials current while signed in as an administrator, use cademi account capabilities get instead.

0.3.2

October 12, 2026

Built for API release 3.14.0, which includes 3.13.2. No command, flag, exit code, installation step, or update behavior of the CLI was removed or changed. API release 3.14.0 moves the permissions of administrators to the policy format that credentials already use, and the body and output of three commands change with it.

Changes that may require action

  • cademi account administrators permissions get returns role, full_access, and policies instead of the permissions map and product_ids. Each item of policies has the same format as the policies of a credential. root and master_admin return full_access: true and no policies.
  • cademi account administrators permissions update takes role and policies in the body, and both are required. Send policies: [] with root or master_admin. The CLI refuses permissions and product_ids before sending, with exit code 2. Pass to --if-match the ETag of cademi account administrators permissions get: the one from cademi account administrators get returns 412 revision_mismatch and exits with code 6.
  • cademi account administrators create takes policies instead of permissions, and the CLI refuses permissions before sending, with exit code 2. Without policies, the administrator gets the default permissions of the role, limited to product_ids when you send it. policies together with product_ids returns 422 validation_failed and exits with code 6.
  • Nobody grants more than they have: a request that grants permissions the credential cannot delegate returns 403 delegation_limit_exceeded and exits with code 4. Changing your own permissions returns 409 state_conflict with details[].reason set to self_modification, and exits with code 6.
  • published_by of a policy can be {"kind": "system", "id": null}, a revision the platform derived on its own.

Help

  • This release is generated from API release 3.14.0. The help of cademi account administrators create, cademi account administrators permissions get, and cademi account administrators permissions update describes the policy format. With API release 3.14.0, cademi integrations credentials permission-catalog get also returns billing.read, billing.manage_invoices, billing.manage_cards, activity.read, and settings.update_appearance: dashboard permissions of administrators that are not delegable and that no command requires.

API fixes

This API fix needs no change in the CLI:

  • cademi reports exports get on an account without exports returns summary.by_status as {}.

Agent skill

  • The cademi-cli agent skill inside the binary is version 0.1.11. It follows CLI 0.3.2 and API release 3.14.0.

If a script reads or changes administrator permissions, move it to policies and pass the ETag of cademi account administrators permissions get to --if-match. If it creates administrators with permissions, send policies within what the credential can delegate, or send only role and product_ids.

0.3.1

October 9, 2026

Built for API release 3.13.1. Backward compatible with 0.3.0: no command, flag, exit code, installation step, or update behavior was removed or changed. API release 3.13.1 only documents behavior the API already had, and this release is generated from it, so requests, responses, and commands do not change.

Help

  • The help of cademi integrations event-streams create states the limit of 5 active event streams per credential and 20 per account. Creating a stream beyond these limits returns 429 with too_many_streams.
  • The request schema of the declarative manifest, shown by cademi commands settings configuration plans create --schema and cademi commands settings configuration validations create --schema, says that module and lesson require product_id in attributes, which accepts a $ref, and that a lesson also takes module_id and content. See Declarative configuration.

Agent skill

  • The cademi-cli agent skill inside the binary is version 0.1.10. It follows CLI 0.3.1 and API release 3.13.1.

No action is required.

0.3.0

October 8, 2026

Built for API release 3.13.0, which includes 3.12.2. No command, flag, exit code, installation step, or update behavior of the CLI was removed or changed. One change in API release 3.13.0 may require action: the first import of an account is released by the Cademí team. Error messages in the terminal also show the reason of each error detail.

Changes that may require action

  • The first import of an account is released by the Cademí team. Until the account has a processed import, cademi users imports processing-attempts create with mode set to initial gets 409 feature_disabled with details[].reason set to first_import_requires_release, and exits with code 6. Retrying does not help. Contact Cademí support to release the first import; later imports are processed normally. See the API changelog.
  • API release 3.12.2 documents that the 429 with too_many_streams from POST /event-streams uses the standard error envelope, without the rate limit fields. The CLI and cademi listen already handled it, so no change is needed in a script that uses them.

Errors in the terminal

  • Each item of details shows its reason in parentheses, next to its code when the item has one, for example (reason: first_import_requires_release) or (reason: has_memberships). The --json error envelope and the exit codes do not change. See Exit codes.

Help

  • This release is generated from API release 3.13.0. The help of cademi users imports processing-attempts create describes the release of the first import, the help of cademi automations diamonds delete says that a Diamond with memberships is deleted in the dashboard, and the help of cademi files exports create says that filters.product_id and filters.tag_id accept a single ID or a list of IDs.

API fixes

These API fixes need no change in the CLI:

  • cademi files exports create and import analyses work again.
  • cademi files exports list, cademi files exports get, and cademi reports exports get no longer list or return records without any date.
  • cademi integrations webhooks get on a deleted webhook endpoint returns 404 and exits with code 5.
  • cademi sales deliveries update returns the delivery when it archives a delivery already archived or reactivates one already active.
  • A credential granted administrator permissions on specific administrators manages the administrators in its scope. Administrators outside the scope return 404.
  • cademi gamification scores list without filters no longer times out.
  • Correcting the reply of a reopened question moves the question back to answered.
  • The user of a ticket without a user is null.

Agent skill

  • The cademi-cli agent skill inside the binary is version 0.1.9. It follows CLI 0.3.0 and API release 3.13.0.

If you process imports, expect first_import_requires_release on the first import of a new account. If a script reads a webhook endpoint after deleting it, handle exit code 5.

0.2.7

October 7, 2026

Built for API release 3.12.1. Backward compatible with 0.2.6: no command, flag, exit code, installation step, or update behavior was removed or changed. This release changes the wording of the login and the page the browser shows after it.

Login

  • The page the browser shows after cademi auth login uses the cademi.dev look, with the Cademí symbol and one color per outcome: green when the CLI is authorized, red when the authorization is denied, and amber when the authorization comes back twice.
  • The help of cademi auth login, the root help, the login messages in the terminal, and the browser pages say "account" instead of "platform" and "instance", as the portal does. The --platform flag, the platform key in --json, and the platform_mismatch code are unchanged.

Agent skill

  • The cademi-cli agent skill inside the binary is version 0.1.8. It follows CLI 0.2.7 and API release 3.12.1.
  • Its generated examples include the flags each command requires, as in cademi account usage --period 30d, cademi reports activity list, cademi reports lessons list, and cademi reports support get.
  • The skill adds an "Account overview" recipe.

No action is required.

0.2.6

October 6, 2026

Built for API release 3.12.1. Backward compatible with 0.2.5: no command, flag, exit code, installation step, or update behavior was removed or changed. API release 3.12.1 is compatible with 3.12.0, and its document now describes what the API already returned. This release is generated from it.

Progress adjustments

  • In cademi users products progress adjustments list and cademi users products progress adjustments get, type lists the five values the API returns: reset, exam_result_deleted, exam_attempt_reopened, score_adjusted, and score_deleted. The list is extensible, so new types may appear. result documents the keys of each type.
  • In score_adjusted and score_deleted adjustments, result.score_id and result.product_id are public IDs (sco_, prd_) instead of internal numbers. result.product_id can be null.

Descriptions

  • The description of origin in point entries says that a balance is also corrected by deleting a manual entry with cademi users scores delete.
  • The example of the score.deleted event shows a manual deletion, with exam_id set to null.
  • The description of the comment list no longer mentions include_replies, which is not a parameter of cademi support comments list.
  • The permission catalog reports introduced_in as 3.12.0 for scores.delete, and its catalog_version is 3.12.0.
  • The cademi-cli agent skill inside the binary is version 0.1.7. It follows CLI 0.2.6 and API release 3.12.1.

If a script reads result.score_id or result.product_id of a score adjustment as a number, read it as a public ID string. No other action is required.

0.2.5

October 6, 2026

Built for API release 3.12.0. No command, flag, exit code, installation step, or update behavior of the CLI was removed or changed. One change in API release 3.12.0 may require action: the score.removed event is replaced by score.deleted. This release also adds a command that deletes manual point entries.

Changes that may require action

  • score.removed is replaced by score.deleted. API release 3.12.0 has no score.removed event type, so cademi listen --events score.removed is rejected with 422 validation_failed and exits with code 6. Pass --events score.deleted. score.deleted is published once per deleted point entry. Its data carries id, user_id, product_id, points, exam_id (null for a manual entry), and adjustment_id (null for an exam reversal). See the API changelog.

Points

  • cademi users scores delete <user_id> <score_id> deletes a manual point entry, such as one created by cademi users score-adjustments create or added in the dashboard. reason is required: pass it with -f reason=.... The command needs the scores.delete permission and asks for confirmation unless you pass --yes. Points earned automatically are refused with 422 score_not_removable, and the command exits with code 6.

Help

  • The help of cademi sandbox resets create cites the path of a test scenario run as POST /sandbox/test-scenarios/{scenario_id}/runs.
  • The cademi-cli agent skill inside the binary is version 0.1.6. It covers cademi users scores delete and the score.deleted event.

If a script passes score.removed to cademi listen --events, or handles that event type, switch to score.deleted. To delete manual point entries, grant scores.delete to the credential. No other action is required.

0.2.4

October 6, 2026

Built for API release 3.11.0. Backward compatible with 0.2.3: no command, flag, exit code, installation step, or update behavior was removed or changed. This release adds the flags and fields of the support and delivery operations, and lists in cademi commands --json the permissions of which any one is enough.

Support

  • cademi support tickets list --queue filters tickets by inbox queue: open awaits a staff reply, answered awaits the user, and closed is closed. --status still filters by lifecycle status, open or closed.
  • cademi support departments delete --unlink-tickets unlinks the department's tickets, including those in the trash, and deletes the department. The tickets are kept. Without the flag, a department with tickets is refused with state_conflict and the command exits with code 6.
  • cademi support departments create and cademi support departments update accept admin_id, the administrator responsible for the department. With update, -F admin_id=null clears it.
  • cademi support tickets replies create accepts a reply with attachments only: text can be omitted when file_ids is present.

Deliveries

  • In cademi sales deliveries create, no field of products is required. products.object and products.ignored_external_product_ids are accepted and ignored. Without products, the delivery starts without products.
  • The help of cademi sales deliveries products update and cademi sales deliveries rules update says that a delivery is live: the change applies to existing enrollments, except users with an individual override.
  • The help of cademi sales deliveries update describes deleted as an alias of status, which also needs deliveries.archive.

Permissions and deprecated fields

  • cademi commands --json adds permissions_any_of to the commands whose permissions are alternatives. Each group lists permissions of which any one is enough. In cademi reports rankings list, the group is reports.read and rankings.read, and the help shows Permission: reports.read or rankings.read. permissions still has one entry per permission. See The JSON catalog.
  • A body field that the API deprecated has deprecated: true in body_fields, and the help marks it deprecated. In this release, that is admin_two_factor_available in cademi settings authentication update, which the API accepts and ignores.

Help

  • The help of cademi sandbox resets create and cademi sandbox test-scenarios runs create says that sandbox_only and sandbox_required both mean the request must be made with a sandbox credential.
  • The help of cademi support comments list says that the moderation queue also lists pending replies, and the help of cademi support comments replies delete says that a student reply can be deleted with comments.delete.
  • The help of cademi users products access update says that duration set to null inherits the delivery duration again.
  • The cademi-cli agent skill inside the binary is version 0.1.5. Its exit code table says that, in a group of permissions_any_of, any one permission is enough.

If a script checks that a credential has every permission in permissions, read permissions_any_of too: one permission of each group is enough. To delete a department with tickets in one call, add --unlink-tickets. No other action is required.

0.2.3

October 6, 2026

Built for API release 3.10.1. Two changes may require action: a missing required query parameter, and an ID argument that is the name of a subcommand, exit with code 2 before any request. This release also adds --wait to the commands whose response carries an operation in operation_id, and corrects several help texts.

Waiting for operations

  • cademi files exports create, cademi users imports processing-attempts create, cademi sales events processing-attempts create, and cademi automations diamonds memberships processing-attempts create accept --wait and --wait-timeout. --wait waits for the operation in the response's operation_id: standard error shows the export or attempt ID, and standard output carries the final operation. When operation_id is null, --wait prints the response without waiting. See Asynchronous operations.

Required query parameters

  • cademi account usage --period, cademi reports activity list --from and --to, cademi reports lessons list --product-id, and cademi reports support get --from and --to are marked (required) in --help and have required: true in cademi commands --json. See Path and query parameters.

Help

  • cademi guide errors and cademi operations wait point to cademi operations items <operation_id>.
  • cademi auth logout --help points to cademi integrations credentials update to revoke the credential.
  • cademi config apply --help shows the flag as --plan file.
  • The Permission: line of the help groups the conditions of the same permission, such as deliveries.archive (if field:status or field:deleted).
  • The cademi-cli agent skill inside the binary is version 0.1.4, and points to cademi operations items <operation_id>.

Changes that may require action

  • Missing required query parameters exit with 2. A command run without a required query parameter exits with code 2 and sends nothing to the API, instead of exiting with 6 on the API's 422.
  • Subcommand names are not accepted as IDs. cademi operations items list, and any ID argument equal to list, get, create, update, or delete, exits with code 2 without calling the API, instead of being sent as an ID and exiting with 5.

If a script checks for exit code 6 when a required query parameter is missing, or for 5 after cademi operations items list, check for 2. To find the required parameters of a command, run cademi commands <command> --json --jq '.commands[0].flags[] | select(.required)'.

0.2.2

October 6, 2026

Built for API release 3.10.1. Backward compatible with 0.2.1: no command, flag, exit code, installation step, or update behavior was removed or changed. This release follows the API release and refreshes the agent skill that ships inside the binary.

  • The help of cademi account usage and cademi files uploads create follows API release 3.10.1: storage.used_bytes is a stored total recalculated daily, the storage quota is 50 GiB, and the attachment limit is set by the account.
  • The cademi-cli agent skill inside the binary is version 0.1.3, with version examples for this release. cademi skills install and the first run of this version refresh the copies already installed.
  • cademi skills install reports an error when it cannot remove the previous copy of the skill.

No action is required.

0.2.1

October 5, 2026

Built for API release 3.10.0. Backward compatible with 0.2.0: no command, flag, exit code, installation step, or update behavior was removed or changed. This release adds commands that set up AI assistants: one installs the Cademí MCP in a client, the other installs the cademi-cli agent skill.

Cademí MCP

  • cademi mcp install <client> adds the Cademí MCP server, https://mcp.cademi.dev/mcp, to an AI assistant as the remote server cademi. The clients are claude (Claude Code), codex, cursor, vscode, copilot (GitHub Copilot CLI), gemini (Gemini CLI), and opencode. Claude Code and Codex are configured through their own CLIs; the others get the entry merged into their configuration file, and other servers and settings are kept. A configuration file with comments is not changed: the command prints the entry to paste instead.
  • --project adds the server to the current project only, except in Codex and GitHub Copilot CLI, --url points to another server URL, and --force replaces a cademi entry that points elsewhere. Sign-in happens in the assistant, and the command prints the next step.
  • cademi mcp docs lists the Cademí MCP documentation pages. See Connect a client.

Agent skill

  • cademi skills install installs the cademi-cli skill, which teaches AI coding agents to use the CLI, into ~/.claude/skills and ~/.agents/skills. The skill ships inside the binary at the same version as the CLI. Without --agent or --dir, it installs only for agents whose directory already exists. cademi skills status shows where it is installed and whether it is current, and cademi skills uninstall removes it.
  • The first run of each new version of the CLI refreshes the copies already installed, and never installs anywhere new. The same skill is published at minhacademi/skills.
  • The CLI reads CLAUDE_CONFIG_DIR and XDG_CONFIG_HOME only to find where Claude Code and the other assistants keep their files.

No action is required. To use the Cademí MCP in a coding assistant, run cademi mcp install with its name; to give your agent the CLI skill, run cademi skills install.

0.2.0

October 4, 2026

Built for API release 3.10.0. The command paths of 0.1.11 still run, as aliases of the new ones. One change may require action: --all is accepted only on collections paginated with a cursor. This release organizes the commands in resource domains, adds built-in guides and schema inspection, and shows the Idempotency-Key of a write that failed after it was sent.

Command organization

  • Commands are organized in 11 resource domains: account, automations, content, files, gamification, integrations, reports, sales, settings, support, and users. For example, cademi products list is cademi content products list, and cademi credentials current is cademi integrations credentials current. operations and sandbox are listed with the core commands. The previous paths still run with the same arguments and flags, but --help and cademi commands show only the new ones. See Commands.
  • cademi content products publish-all and cademi content products modules publish-all publish a product or a module with all its content, including copies in replicated accounts.

Discovery

  • cademi commands --groups lists the groups directly below a prefix. cademi commands --groups --brief --json gives a compact index of the domains.
  • cademi commands <prefix> --schema adds the full request body schemas of the API contract, with field descriptions, enums, limits, and nested properties. It makes no API request and prints JSON by default.
  • The JSON catalog of cademi commands includes structured arguments, flag conflicts and allowed values, the settings related to each command, conditional permissions, the previous paths of each command, and group descriptions and examples.
  • cademi guide prints built-in guides for automation: errors, input, output, reordering, and retries. Read one with cademi guide <topic> --help.
  • Every help starts with USAGE, and operation commands list related commands.

Errors and retries

  • When a write fails after it was sent, including network errors and cancellations, the error shows the request and the Idempotency-Key the CLI used. With JSON output, the error has a request object with method, path, and idempotency_key. Pass the key with --idempotency-key to repeat the same write safely. Exit codes do not change.
  • Errors in flags and arguments print as JSON when you ask for JSON output.

Changes that may require action

  • --all only on cursor collections. --all is available only on collections paginated with a cursor, and it cannot be combined with --raw or --include: the command exits with code 2 before any request. Collections without a cursor return every entry in a single response.

Pagination

  • The content lists of products and modules accept --cursor, --limit, and --all.

If a script passes --all to a collection without a cursor, or together with --raw or --include, remove --all. Scripts that use the previous command paths keep working; to move them to the new paths, see Commands.

0.1.11

September 27, 2026

No command, flag, or environment variable was removed or changed. One change may require action: requests are validated against the API contract before they are sent. This release also changes how a 503 is retried.

  • Requests are validated against the API contract embedded in the CLI before they are sent. A query parameter or body field that the operation does not accept, including nested fields and fields passed with --data, exits with code 2 without calling the API. The message names the field or parameter, its JSON path, and what the operation accepts. This applies to cademi api, when the path matches a known operation, and to the resource commands.
  • cademi api --skip-validation sends the request as is, for endpoints newer than the embedded API release.
  • cademi api -H 'Idempotency-Key: ...' works like --idempotency-key. Operations that require an Idempotency-Key always get one.
  • A 503 from the API without a Retry-After header, such as storage_unavailable, is not retried: the command returns right away with exit code 8. A 503 with Retry-After, and a 503 without an API error envelope, are retried.

If a command exits with code 2 because of the validation, remove the parameter or field that the message names. To call an endpoint newer than the embedded API release, pass --skip-validation to cademi api.

0.1.10

September 26, 2026

Backward compatible with 0.1.9.

Internal improvements. No changes to commands, flags, exit codes, installation, or updates.

No action is required.

0.1.9

September 26, 2026

Backward compatible with 0.1.8.

Internal improvements. No changes to commands, flags, exit codes, installation, or updates.

No action is required.

0.1.8

September 26, 2026

Backward compatible with 0.1.7: no command, flag, exit code, or environment variable was removed or changed. This release completes what cademi env reports and the help of the text-first commands.

  • cademi env shows max_retries and max_retry_wait, and client_request_id when CADEMI_CLIENT_REQUEST_ID is set, each with where its value comes from.
  • The --output help of the commands that print text by default (auth status, env, profiles list, commands, doctor, config validate, and config plan) says so.

No action is required.

0.1.7

September 26, 2026

Backward compatible with 0.1.6: no command, flag, exit code, or environment variable was removed or changed. This release adds a client request identifier and settings for automatic retries.

  • CADEMI_CLIENT_REQUEST_ID sends your own identifier in the X-Client-Request-Id header of every request: up to 64 letters, digits, ., _, or -. The API returns it in the response and records it in the request log. An invalid value exits with code 2.
  • CADEMI_MAX_RETRIES (default 3; 0 turns retries off) and CADEMI_MAX_RETRY_WAIT (default 60s) control automatic retries. A 429 that asks for a longer wait than CADEMI_MAX_RETRY_WAIT fails right away.
  • cademi profiles list shows the API URL and your account's platform address in separate columns, API and PLATFORM, and --json includes platform.

No action is required.

0.1.6

September 26, 2026

Backward compatible with 0.1.5: no command, flag, or exit code was removed or changed. This release removes account details from the issue opened by cademi bug and clarifies the sign-in pages and two help texts.

  • cademi bug no longer puts your account's platform address, the credential ID, or the profile name in the public issue.
  • In cademi env, the operating system and architecture are reported as os_arch; platform is only your account's platform address.
  • The browser page after sign-in says "Cademí CLI authorized" only for a valid response. A rejected iss shows "Authorization rejected", and account_not_eligible has its own page.
  • cademi auth logout --help explains how to revoke the credential, and the --base-url help describes it as the Cademí API URL.

No action is required. If you read platform from cademi env --json, the operating system is now in os_arch.

0.1.5

September 26, 2026

Built for API release 3.4.7. Backward compatible with 0.1.4: no command, flag, or exit code was removed or changed. This release lets human login go straight to your platform and makes the login end right away when the platform refuses it.

  • cademi auth login --platform <address> goes straight to your account's platform instead of the platform selector in the browser. The address is saved in the profile, reused on the next login, and shown by cademi auth status and cademi env.
  • Human login checks the iss parameter returned by the authorization (RFC 9207). It rejects a response whose iss does not match the issuer, or that has no iss when the server announces support for it.
  • Choosing Deny in the browser ends the login right away, without saving anything.
  • When the platform refuses the administrator, the login ends right away with the reason: mfa_required (two-factor authentication is not turned on), account_not_eligible (the account cannot authorize the CLI), or platform_mismatch (the administrator belongs to another platform; the message suggests --platform).
  • The base URL prompt is now "Cademí API URL". Clearer messages while waiting for the browser and for credentials that require human mode.

No action is required.

0.1.4

September 25, 2026

Built for API release 3.4.5. Backward compatible with 0.1.3: no command or flag was removed or changed. This release adds the API bug report to cademi bug and moves issues to the minhacademi/developers repository.

  • cademi bug --api opens the API bug report instead of the CLI one, with --endpoint and --request-id filled in. --request-id also works for CLI bugs.
  • Issues now go to the minhacademi/developers repository, which takes reports for both the API and the CLI.
  • Mutually exclusive flags exit with code 2.

No action is required. If you link to the issue tracker of the CLI, point to github.com/minhacademi/developers.

0.1.3

September 25, 2026

Backward compatible with 0.1.2: no command, flag, or exit code was removed or changed. This release adds a catalog of every command.

  • cademi commands lists every command in one call, with the API route, permission, arguments, and flags. --json for scripts and AI agents, --brief for a small index, and a prefix narrows the list (cademi commands products).

No action is required.

0.1.2

September 25, 2026

Backward compatible with 0.1.1: no command or flag was removed or changed. This release adds cademi bug, extends --all to every paginated list, and fixes two behaviors.

  • cademi bug opens a new issue with your CLI version, platform, and settings filled in. Nothing is sent until you submit it in the browser. --print prints the URL instead.
  • --all now works on every paginated list, including users, enrollments, access schedules, comments, and questions.
  • cademi api keeps query parameter names as written, such as tag_id[].
  • A missing credential exits with code 3, like other authentication errors.

No action is required. If a script checks the exit code of a run without a credential, expect 3.

0.1.1

September 25, 2026

Backward compatible with 0.1.0: no command, flag, or exit code was removed or changed. This release adds cademi env.

  • cademi env shows the effective settings and where each value comes from (flag, environment variable, config file, profile, keychain, or default). cademi env <name> prints a single value.

No action is required.

0.1.0

September 25, 2026

First release of the cademi CLI, built for API release 3.4.4.

  • Every API v3 operation as a command, with the API route, permission, and body fields in --help.
  • Human sign-in (OAuth in the browser plus a credential) and autonomous mode (credential only), with profiles and secrets in the operating system keychain.
  • cademi api, cademi listen (with signed forwarding to a local endpoint), cademi config validate/plan/apply, cademi sandbox reset/run, cademi upload, cademi download, cademi operations wait, and cademi doctor.
  • Output as a table, JSON, YAML, or filtered with --jq, and stable exit codes.
  • Installers for macOS, Linux, and Windows, and signed automatic updates.

On this page