What's new in the Minikai API.
Each release also ships as a versioned minikai SDK for Python and TypeScript, so the version numbers below match the
SDK you install. We keep things backwards-compatible wherever we can, so pinning to a version is safe.
Numeric fields declare their type
v1.19.2 Counts, page sizes and totals now declare a type in the spec (the number, or the same value as a string)
instead of carrying only a validation pattern, so a generated client describes them rather than falling back to an
untyped value. The fields that can come back null, status on 400 responses and totalCount on paginated lists, are
described as nullable for the first time. Behaviour is unchanged and upgrading is safe, though a strict type checker may
now ask you to narrow one of these fields before doing arithmetic on it.
The API key instructions name the right screen
v1.19.1 Creating an API key is described correctly here and in the Getting started and Authentication guides: open
Settings → Security in the Minikai app and create the key under API Keys. The old instructions named a
Workspace Admin → Security & access screen that the app does not have. Behaviour is unchanged, so upgrading is safe.
Pick your data region
v1.19.0 Point a client at the region your workspace lives in, either Australia on
https://api.minikai.com/minikai-public or the United Kingdom on https://api.minikai.co.uk/minikai-public. Both SDKs
take the region as an environment argument, the API Reference lets you pick one before sending a request, and
Australia stays the default.
The Python and TypeScript SDKs build again
v1.17.1 Fixes the nullable model fields, LabelDto.rename and UpsertRecordDto.authorization among them, that made
both generated SDKs invalid code, so minikai publishes again for Python and TypeScript. Behaviour is unchanged, so
upgrading is safe.
Download a Mini's profile picture or a skill's asset
v1.18.0 Download the image behind a Mini's profilePictureUrl, or the file behind a skill asset's url. Both
fields always held a path, and now GET /Minis/{id}/profile-picture/{pictureId} and GET /Skills/{id}/assets/{assetId}
are in the API and the SDKs so you can call it. These and the record attachment download now hand you the file itself in
the SDKs, rather than a response with no type on it.
Deleting a label in use is refused instead of stranding it
v1.17.0 DELETE /Labels/{id} now returns a 409 while any record or Mini still carries the label, telling you how
many do. Records and Minis reference a label by name, so deleting one in use used to leave that name on them while
destroying the access grants attached to it. Clear the label off them first. A call that succeeds still returns 204
and the label disappears at once, but its grants are torn down in the background, so creating a label with the same name
straight after can be refused until that finishes.
Identify a Mini by NHS number
v1.16.0 Handles nhs as an identity kind so the NHS number a UK care provider knows a client by is stored and
searchable alongside the Australian schemes. It reads back on the Mini like any other identity.
Record filters reject a blank miniId with a 400
v1.15.0 Call GET /Records/filters/created-by, /updated-by or /states with a blank miniId and you get a 400
naming the field, where a blank value previously came back as a 500. All four /Records/filters/* operations now
document that 400, so it is typed in the SDKs.
Profile pictures are served from the API, and accept four image types
v1.13.0 POST /Minis/{id}/profile-picture returns the application path the picture is served from rather than an
internal storage location, and MiniDto.profilePictureUrl and SkillAssetDto.url carry the same style of path. Uploads
now accept image/jpeg, image/png, image/gif and image/webp only; SVG and TIFF are rejected with a 400, because
no browser paints either in an avatar.
Renaming a label moves its records and Minis
v1.14.0 Change a label's name with PUT /api/v1/Labels/{id} and every record and Mini carrying it moves to the
new name, so nothing is left holding a name the label no longer answers to. The move runs in the background, so the
response carries a new rename field naming the previousName still being swept; it disappears once the move is done,
and GET /api/v1/Labels reports the same field while you wait. Its presence is the whole signal, so poll until it goes.
The processing record state is gone
v1.12.0 RecordState no longer has processing; a record is now active, draft, archived, or deleted, and
new records come back active straight away. If you branch on or filter by state, drop the processing case (it is
removed from RecordDto.state, the GET /Records states filter, and GET /Records/filters/states). Records created
under the old state come back as active, so nothing is left unreadable.
Export Records across multiple Minis
v1.11.0 New POST /api/v1/Records/export returns one CSV covering the Records of one or more Minis in a single
request. Send the Mini ids in the body (miniIds), with the same optional labels, states, startDate, endDate,
and sortDescending filters as before. Each row leads with Mini Name, Mini ID, and Record ID so you can tell
whose record is whose and feed the ids back into the API, and any Mini id outside your organisation or access is left
out.
Attachments no longer return uri
v1.10.0 Download an attachment with GET /api/v1/Records/{recordId}/attachments/{attachmentId}. The uri field on
each attachment is removed: it held a storage-relative filename you could not fetch. It was a required field, so
regenerate your SDK before upgrading.
See who authored a skill
v1.9.0 Read who created a skill from createdBy on the skill listing and detail responses, and who last changed it
from updatedBy on the detail response. Both carry a user id, and are null for skills written before authorship was
tracked.
Nullable schema representation updated
v1.8.1 Nullable properties that reference another schema now express null via an explicit enum: [null] branch in
their oneOf list, instead of a top-level nullable: true flag, from an OpenAPI generator upgrade. Behaviour is
unchanged and this is a safe upgrade.
Skill assets report their size
v1.8.0 Each skill asset now carries a size field (in bytes), so you can display or budget storage without
downloading the file first.
Explicit type on nullable enum fields
v1.6.1 Nullable enum fields now declare "type": "string" next to their oneOf reference in the spec, from an
OpenAPI generator upgrade. Behaviour is unchanged and this is a safe upgrade.
Restore an archived workspace skill
v1.7.0 Return an archived skill to active with POST /Skills/{id}/restore. The skill becomes available to the
workspace again and regains standard retention. Only archived skills can be restored.
Manage workspace skills
v1.6.0 Create, list, update and delete workspace skills via the new /Skills endpoints. Skills start as drafts,
activate on POST /Skills/drafts/{id}/submit, and carry assets uploaded through POST /Skills/{id}/assets. Listing
returns summaries of active skills (fetch a skill by id for its content and assets); workspace admins also see drafts
and archived skills.
Filter records by a content field
v1.5.4 Pass contentFilters=Key=Value on GET /Records to return only records whose content has that key set to
that value, and repeat the parameter to require several at once. The key matches exactly, the value case-insensitively.