cURL
curl --request GET \
--url https://api.nohead.io/v1/collections/{collection_id}/migrations \
--header 'Authorization: Bearer <token>'import { Nohead } from "@nohead/sdk"
const nohead = new Nohead()
for await (const migration of nohead.migrations.list("posts")) {
console.log(migration)
}
from nohead import Nohead
nohead = Nohead()
for migration in nohead.migrations.list("posts"):
print(migration)
require "nohead"
nohead = Nohead::Client.new
nohead.migrations.list("posts").each do |migration|
puts migration
end
{
"data": [
{
"id": "mig_01J9ZQ3F8X5W2K7M4N6P0R1S2T",
"object": "field_migration",
"collection_id": "<string>",
"field_id": "<string>",
"status": "pending",
"from": {
"type": "text",
"configuration": {
"description": "<string>",
"searchable": true,
"filterable": true,
"sortable": true,
"min_length": 1,
"max_length": 1,
"format": "slug",
"unique": true
},
"multiple": true,
"required": true
},
"to": {
"type": "text",
"configuration": {
"description": "<string>",
"searchable": true,
"filterable": true,
"sortable": true,
"min_length": 1,
"max_length": 1,
"format": "slug",
"unique": true
},
"multiple": true,
"required": true
},
"backfill": {
"value": "<unknown>"
},
"on_invalid": "fail",
"time_zone": "<string>",
"records": {
"total": 123,
"unchanged": 123,
"converted": 123,
"backfilled": 123,
"cleared": 123,
"invalid": 123
},
"failure": {
"message": "<string>"
},
"schema_change_id": "<string>",
"cancel_requested_at": "2023-11-07T05:31:56Z",
"actor": {
"type": "user",
"id": "<string>",
"name": "<string>"
},
"via": "ui",
"note": "<string>",
"request_id": "<string>",
"created_at": "2026-09-27T12:00:00.000Z",
"started_at": "2023-11-07T05:31:56Z",
"completed_at": "2023-11-07T05:31:56Z"
}
],
"meta": {
"next_cursor": "<string>",
"has_more": true
}
}{
"error": {
"type": "invalid_request",
"message": "<string>",
"request_id": "req_01J9ZQ3F8X5W2K7M4N6P0R1S2T",
"details": [
{
"code": "<string>",
"message": "<string>",
"field": "<string>",
"usage": 123,
"limit": 123,
"current_revision": 123,
"record_id": "<string>",
"draft_id": "<string>"
}
]
}
}{
"error": {
"type": "invalid_request",
"message": "<string>",
"request_id": "req_01J9ZQ3F8X5W2K7M4N6P0R1S2T",
"details": [
{
"code": "<string>",
"message": "<string>",
"field": "<string>",
"usage": 123,
"limit": 123,
"current_revision": 123,
"record_id": "<string>",
"draft_id": "<string>"
}
]
}
}{
"error": {
"type": "invalid_request",
"message": "<string>",
"request_id": "req_01J9ZQ3F8X5W2K7M4N6P0R1S2T",
"details": [
{
"code": "<string>",
"message": "<string>",
"field": "<string>",
"usage": 123,
"limit": 123,
"current_revision": 123,
"record_id": "<string>",
"draft_id": "<string>"
}
]
}
}{
"error": {
"type": "invalid_request",
"message": "<string>",
"request_id": "req_01J9ZQ3F8X5W2K7M4N6P0R1S2T",
"details": [
{
"code": "<string>",
"message": "<string>",
"field": "<string>",
"usage": 123,
"limit": 123,
"current_revision": 123,
"record_id": "<string>",
"draft_id": "<string>"
}
]
}
}{
"error": {
"type": "invalid_request",
"message": "<string>",
"request_id": "req_01J9ZQ3F8X5W2K7M4N6P0R1S2T",
"details": [
{
"code": "<string>",
"message": "<string>",
"field": "<string>",
"usage": 123,
"limit": 123,
"current_revision": 123,
"record_id": "<string>",
"draft_id": "<string>"
}
]
}
}Field migrations
List field migrations
The collection’s field migrations, newest first. Published-only API keys get 403.
GET
/
v1
/
collections
/
{collection_id}
/
migrations
cURL
curl --request GET \
--url https://api.nohead.io/v1/collections/{collection_id}/migrations \
--header 'Authorization: Bearer <token>'import { Nohead } from "@nohead/sdk"
const nohead = new Nohead()
for await (const migration of nohead.migrations.list("posts")) {
console.log(migration)
}
from nohead import Nohead
nohead = Nohead()
for migration in nohead.migrations.list("posts"):
print(migration)
require "nohead"
nohead = Nohead::Client.new
nohead.migrations.list("posts").each do |migration|
puts migration
end
{
"data": [
{
"id": "mig_01J9ZQ3F8X5W2K7M4N6P0R1S2T",
"object": "field_migration",
"collection_id": "<string>",
"field_id": "<string>",
"status": "pending",
"from": {
"type": "text",
"configuration": {
"description": "<string>",
"searchable": true,
"filterable": true,
"sortable": true,
"min_length": 1,
"max_length": 1,
"format": "slug",
"unique": true
},
"multiple": true,
"required": true
},
"to": {
"type": "text",
"configuration": {
"description": "<string>",
"searchable": true,
"filterable": true,
"sortable": true,
"min_length": 1,
"max_length": 1,
"format": "slug",
"unique": true
},
"multiple": true,
"required": true
},
"backfill": {
"value": "<unknown>"
},
"on_invalid": "fail",
"time_zone": "<string>",
"records": {
"total": 123,
"unchanged": 123,
"converted": 123,
"backfilled": 123,
"cleared": 123,
"invalid": 123
},
"failure": {
"message": "<string>"
},
"schema_change_id": "<string>",
"cancel_requested_at": "2023-11-07T05:31:56Z",
"actor": {
"type": "user",
"id": "<string>",
"name": "<string>"
},
"via": "ui",
"note": "<string>",
"request_id": "<string>",
"created_at": "2026-09-27T12:00:00.000Z",
"started_at": "2023-11-07T05:31:56Z",
"completed_at": "2023-11-07T05:31:56Z"
}
],
"meta": {
"next_cursor": "<string>",
"has_more": true
}
}{
"error": {
"type": "invalid_request",
"message": "<string>",
"request_id": "req_01J9ZQ3F8X5W2K7M4N6P0R1S2T",
"details": [
{
"code": "<string>",
"message": "<string>",
"field": "<string>",
"usage": 123,
"limit": 123,
"current_revision": 123,
"record_id": "<string>",
"draft_id": "<string>"
}
]
}
}{
"error": {
"type": "invalid_request",
"message": "<string>",
"request_id": "req_01J9ZQ3F8X5W2K7M4N6P0R1S2T",
"details": [
{
"code": "<string>",
"message": "<string>",
"field": "<string>",
"usage": 123,
"limit": 123,
"current_revision": 123,
"record_id": "<string>",
"draft_id": "<string>"
}
]
}
}{
"error": {
"type": "invalid_request",
"message": "<string>",
"request_id": "req_01J9ZQ3F8X5W2K7M4N6P0R1S2T",
"details": [
{
"code": "<string>",
"message": "<string>",
"field": "<string>",
"usage": 123,
"limit": 123,
"current_revision": 123,
"record_id": "<string>",
"draft_id": "<string>"
}
]
}
}{
"error": {
"type": "invalid_request",
"message": "<string>",
"request_id": "req_01J9ZQ3F8X5W2K7M4N6P0R1S2T",
"details": [
{
"code": "<string>",
"message": "<string>",
"field": "<string>",
"usage": 123,
"limit": 123,
"current_revision": 123,
"record_id": "<string>",
"draft_id": "<string>"
}
]
}
}{
"error": {
"type": "invalid_request",
"message": "<string>",
"request_id": "req_01J9ZQ3F8X5W2K7M4N6P0R1S2T",
"details": [
{
"code": "<string>",
"message": "<string>",
"field": "<string>",
"usage": 123,
"limit": 123,
"current_revision": 123,
"record_id": "<string>",
"draft_id": "<string>"
}
]
}
}Authorizations
Project-scoped API key, e.g. nohead_sk_k7fz0a9c3m2q_<secret>, or
nohead_pk_… for a published-only key. Used by servers, CI, the CLI
and coding agents.
Path Parameters
Collection ID, or the collection slug when authenticating with an API key.
Query Parameters
Page size.
Required range:
1 <= x <= 100The next_cursor from the previous page.