API changelog
Dated changes to the endpoints an API key or OAuth token can reach, their fields, webhooks, and authentication.
Changes to the public API: the endpoints an API key or OAuth token can reach, their request and response fields, webhooks, and authentication. Newest first.
- Paths are relative to
https://<subdomain>.corteksa.info/api/v1. - Dates are when a change was completed. It reaches your workspace with the release that follows; see Release notes.
- Labels: Added is new, Changed alters existing behaviour, and Breaking removes, renames or reshapes something a working integration can depend on. See API versions and changes.
2026-09-13
- Added Workspace tag endpoints:
GET /object/field/tag,POST /object/field/tag,PUT /object/field/tag/order,PATCH /object/field/tag/:tagSlug,DELETE /object/field/tag/:tagSlugandGET /object/field/tag/:tagSlug/usage. Deleting a tag that records still use retires it instead and returnsarchived: true. - Added
POST /object/field/tag/unit/:objectSlugcreates a tag with theupdate.{objectSlug}scope instead ofobject.update.
2026-09-12
- Changed
GET /files/download,GET /files/signed-urlandPOST /files/signed-urlsserve a record's file under the file name and content type saved with the record, instead of the storage name andapplication/octet-stream.
2026-09-11
- Changed A webhook delivery that gets a
4xxresponse is no longer retried, except for408and429.
2026-09-02
- Added
POST /object/data/:objectSlug/bulk-actions/:jobId/cancelstops a background bulk job. Records it already changed stay changed. Only the user who started the job can cancel it.
2026-09-01
- Added
POST /object/data/:objectSlug/bulk-actionsandPOST /object/data/:objectSlug/bulk-duplicateacceptselect_all: truewith an optionalscope(search, filters, filter tree, assignees) instead ofrecord_slugs, andexcluded_record_slugsto leave records out.
2026-08-30
- Changed
POST /oauth/tokenandPOST /oauth/revokeare limited to 30 requests per minute and answer429above that.
2026-08-26
- Added Records include
position, their manual board order, as a decimal string. - Changed The create response and the
record.createdwebhook include fields left blank, with the valuenull.
2026-08-23
- Added Records include
capabilities(can_edit,can_delete,can_assign) on reads and in create, update and assignee responses. - Added Records include
linked_record, the record this one was created from, ornull. Create, update and bulk update acceptlinked_object_slugnext tolinked_data_slug. - Changed Relation cells in record responses hold at most 10 linked records
unless the request sends
pageandlimit. Followpagination.nextPagefor the rest. - Changed
GET /objectreturns only the objects the caller can read and no longer needs theobject.readscope. - Changed
GET /object/:objectSlug,GET /object/:objectSlug/other-objects,GET /object/field/:objectSlug,GET /object/field/select/:objectSlug,GET /object/field/trigger-fields/:objectSlugandGET /object/field/show/:objectSlug/:fieldSlugneedread.{objectSlug}instead ofobject.read.
2026-08-20
- Changed
PUT /object/data/:objectSlug/:dataSlugreturns the whole record, including calculated fields._meta.pending_fieldsnames fields that a background recalculation will still update.
2026-08-18
- Breaking Each relation cell in a record's
relationsis{ items, pagination }instead of{ items, total, has_more }. - Added
GET /object/data/:objectSlug/:dataSlugacceptspageandlimitto page its relation cells.
2026-08-17
- Added
POST /object/data/:objectSlug/signalsreturnsopen_tasks,overdue,mentionsandunread_incomingfor up to 500 record slugs.
2026-08-16
- Breaking
POST /object/data/:objectSlug,POST /object/data/:objectSlug/:recordSlug/duplicate,POST /object/data/:objectSlug/inlineandPUT /object/data/:objectSlug/:dataSlugreturn the record itself indatainstead of{ fields, data }.parent_recordis the record itself as well. - Breaking
POST /object/field/duplicate/:objectSlugreturnsdata: { created, skipped_relation_fields, failed_targets, conditional_stripped }, wherecreatedmaps each target object slug to its new fields.
2026-08-14
- Added
GET /object/data/:objectSlug/:dataSlug/activityreturns a record's activity trail a page at a time, whenrecord_activity_tabis true inGET /object/features. - Added
POST /object/data/:objectSlug/column-values/:fieldSluglists the values a field holds across records, most common first. - Added
POST /object/data/:objectSlug/bulk-duplicatecopies a selection of records and accepts anIdempotency-Keyheader. It needscreate.{objectSlug}and works whenrecord_duplicateis true inGET /object/features.
2026-08-11
- Breaking Relation values are only in
record.relations[relationSlug]. The copy atrecord[relationSlug]is gone. - Changed Date fields (
date,start_date,due_date) are returned asYYYY-MM-DD. - Added
GET /object/activeacceptssearch.
2026-08-10
- Changed
PUT /object/data/:objectSlug/:dataSlugreturns{ fields, data }, like create. Reverted on 2026-08-16. - Breaking
field_groupon field responses is the field's section,{ slug, name }ornull, instead of"system"or"custom". Useis_systemfor that. - Added
GET /object/field/typesincludescan_column_relationfor each field type.
2026-08-09
- Added
GET /files/downloadstreams a stored file by itskey. - Added Linked records in
relationscan carrycolumns, the relation's display fields keyed by field slug. The key is absent when none are set.
2026-08-06
- Added Linked records in
relationsincludelabel,object_nameandobject_icon. A linked record with no name uses itsrandom_idasname. - Added Relation options include
random_id,labelandicon, and each option group includesobject_nameandobject_icon. - Changed Changing, deactivating or deleting a field that a board groups by
can answer
409. Send?force=trueto go ahead.
2026-08-05
- Added
PATCH /object/data/:objectSlug/:recordSlug/positionsets a record's manual board order from its neighbours,before_slugandafter_slug. - Added
GET /object/field/file-formatslists the formats a file field can accept.
2026-08-04
- Added Records include
relations, every relation cell keyed by relation slug. - Added
GET /object/featuresreports which optional record features are on. - Added Create, update, inline create and bulk update responses include
dropped_fieldswhen read-only fields were removed from the request. - Added
GET /object/field/:objectSlugacceptsis_active. - Changed Deleted options no longer appear in a field's
optionsor inGET /object/data/:objectSlug/field-options/:fieldSlug. A record that still holds one returns it withis_deleted. - Changed Update responses return select-type values as option objects, the same as reads.
2026-08-03
- Added
POST /object/data/:objectSlug/bulk-actionsrunsupdate,assignordeleteon a list of records. It answers202with ajob_idwhen the work runs in the background, andGET /object/data/:objectSlug/bulk-actions/:jobIdreports on it. - Added
POST /object/data/:objectSlug/inlinecreates a record from a board column or table row. - Added
GET /object/data/duplicates/:objectSlug/:fieldSluglists records that share a value in one field. It needs read access to every record of the object.
2026-08-02
- Added
POST /object/data/:objectSlug/:recordSlug/duplicatecopies a record. It works whenrecord_duplicateis true inGET /object/features.
2026-07-30
- Added Date and datetime fields set to show the Hijri calendar also return
<fieldSlug>_hijri.
2026-07-29
- Added
POST /object/data/:objectSlug/bulk-assignacceptsassignees, a full list of user slugs.admin_slugstill works; sending both answers400. - Added Field details include
group_slugandgroup_ineligible.
2026-07-27
- Breaking Records no longer include
assignee.assigneesis the only owner field, with the primary owner first.
2026-07-26
- Added Fields can be marked
api_only. The value of an API-only field is saved only when the write comes from an API key or OAuth token; other writes drop it. Field create and update acceptapi_only, and field responses include it. - Added Field responses include
field_group,"system"or"custom". Replaced on 2026-08-10.
2026-07-24
- Added
PATCH /object/data/:objectSlug/:recordSlug/assigneessets a record's assignees, up to 20. Records includeassignees. - Changed
POST /object/data/:objectSlug/bulk-assignneedsassign.{objectSlug}instead ofupdate.{objectSlug}.
2026-07-22
- Added
GET /files/signed-urlandPOST /files/signed-urls(up to 100 keys) accept API keys and OAuth tokens. - Added
POST /object/field/option/:objectSlug/:fieldSlugadds one option to a select-type field. - Added
GET /object/overviewreturns workspace totals for records, saved views and objects.
2026-07-21
- Breaking Select, status, priority, multi-select, tag and source values are
returned as an array of option objects (
id,value,label,color,icon). A single-select field returns an array of zero or one item. Writes accept one option id or an array of option ids.
2026-07-19
- Changed Datetime values are returned in the acting user's saved timezone,
with its offset, for example
2026-03-01T14:00:00+03:00.
2026-07-14
- Added OAuth tokens can create and manage webhook subscriptions. Changes an OAuth app makes are not sent to that app's own subscriptions.
- Added
GET /object/field/trigger-fields/:objectSlugacceptsexclude.
2026-07-13
- Added Webhooks:
GET /webhooks/events,POST /webhooks/subscriptions,GET /webhooks/subscriptions,GET /webhooks/subscriptions/:slugandDELETE /webhooks/subscriptions/:slug, with therecord.created,record.updatedandrecord.deletedevents and signed deliveries. Creating a subscription needsread.{object_slug}. Changes an API key makes are not sent to that key's own subscriptions. See Webhook events. - Added Object and field endpoints under
/objectand/object/fieldaccept API keys and OAuth tokens. - Added Scopes accept a
{verb}.*wildcard, such asread.*, covering every object the credential's user can reach with that verb. - Added
GET /object/field/managerlists every field in the workspace. Field details includeis_shared,shared_withandis_visible. - Changed Presenting a refresh token that was already used revokes every token that app holds for that user.
- Changed
POST /object/field/duplicate/:objectSlugaccepts at most 50 target objects and 200 field slugs.
2026-07-12
- Added API keys (
crtk_live_…), sent asX-Api-KeyorAuthorization: Bearer. Record endpoints under/object/dataaccept them. - Added OAuth 2.0 authorization code flow for partner apps, with
POST /oauth/token(authorization_codeandrefresh_tokengrants) andPOST /oauth/revoke. Access tokens start withcrtk_oauth_. - Added
GET /mereturns the credential's workspace and scopes.