cURL
curl --request GET \
--url https://api.nohead.io/v1/collections/{collection_id}/schema-changes \
--header 'Authorization: Bearer <token>'import { Nohead } from "@nohead/sdk"
const nohead = new Nohead()
for await (const change of nohead.collections.schemaChanges.list("posts")) {
console.log(change)
}
from nohead import Nohead
nohead = Nohead()
for change in nohead.collections.schema_changes.list("posts"):
print(change)
require "nohead"
nohead = Nohead::Client.new
nohead.collections.schema_changes.list("posts").each do |change|
puts change
end
{
"data": [
{
"id": "sch_01J9ZQ3F8X5W2K7M4N6P0R1S2T",
"object": "schema_change",
"collection_id": "<string>",
"from_version": 123,
"to_version": 123,
"operation": "create_collection",
"payload": {},
"actor": {
"type": "user",
"id": "<string>",
"name": "<string>"
},
"via": "ui",
"note": "<string>",
"request_id": "<string>",
"created_at": "2026-09-27T12:00:00.000Z"
}
],
"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>"
}
]
}
}Schema changes
List schema changes
The collection’s schema history, newest first. Published-only API keys get 403.
GET
/
v1
/
collections
/
{collection_id}
/
schema-changes
cURL
curl --request GET \
--url https://api.nohead.io/v1/collections/{collection_id}/schema-changes \
--header 'Authorization: Bearer <token>'import { Nohead } from "@nohead/sdk"
const nohead = new Nohead()
for await (const change of nohead.collections.schemaChanges.list("posts")) {
console.log(change)
}
from nohead import Nohead
nohead = Nohead()
for change in nohead.collections.schema_changes.list("posts"):
print(change)
require "nohead"
nohead = Nohead::Client.new
nohead.collections.schema_changes.list("posts").each do |change|
puts change
end
{
"data": [
{
"id": "sch_01J9ZQ3F8X5W2K7M4N6P0R1S2T",
"object": "schema_change",
"collection_id": "<string>",
"from_version": 123,
"to_version": 123,
"operation": "create_collection",
"payload": {},
"actor": {
"type": "user",
"id": "<string>",
"name": "<string>"
},
"via": "ui",
"note": "<string>",
"request_id": "<string>",
"created_at": "2026-09-27T12:00:00.000Z"
}
],
"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.