API Documentation

Schema endpoints

List, get, create, update, and delete schemas in your account with the same API key used for extraction.

Schemas · Update

Update a schema via API

Endpoint

PUThttps://claix.dev/api/update-schema/{schema_id}

Replaces the full configuration of an existing schema (same body as POST /api/create-schema). The schema_id goes in the URL; the body carries name, type, schema_definition, and options.

Always call https://claix.dev/api/update-schema/{schema_id}. POST is also accepted.

Intended for server-to-server integrations. This call is free: it is not billed and does not consume your extraction quota.

1. Authentication

Every request must include your API key. It is a personal server credential, distinct from any session token.

Option A — Dedicated header (recommended):

x-api-key: <YOUR_API_KEY>

Option B — Standard Authorization header:

Authorization: Bearer <YOUR_API_KEY>

Either one is sufficient. If you send both, x-api-key takes priority.

The system checks that the key exists, is active, and the account is not suspended. On failure it returns 401.

2. Request format

Method: PUT (POST also accepted) · Content-Type: application/json · Path: schema_id (UUID)

FieldTypeRequiredDescription
schema_iduuidYes (URL)Identifier of the schema to update.
namestringYesVisible schema name (max 200).
typestringYesexcel-json, json-excel, pdf-json, doc-json, img-json, txt-json, or audio-json.
schema_definitionobjectYesFields to extract. Each key is the output JSON name.
is_agent_modebooleanNoEnables Agent mode. If omitted but agent_definition is sent, true is assumed.
agent_definitionobjectIf agent modeParameters to reason over. Required when is_agent_mode is true.
resumen_agentstringNoExtra instruction for the agent phase (max 500).
window_contextbooleanNoEnables Save Data. When true, JSON extractions can insert the mapped row into the connected database (connection and mapping rules required). Defaults to false.
cita_por_campobooleanNoEnables source verification: links each extracted field to its location in the original document and checks the value appears in the content. Default false.

Each field in schema_definition must look like:

{
  "nombre_dni": {
    "type": "string",
    "description": "nombre de la persona del dni"
  }
}

Allowed extraction types: string, integer, number, boolean. description is required.

Each agent_definition parameter uses boolean, string, closed, or integer. If type is closed, options must be a non-empty array.

The json-excel type does not support Agent mode.

3. How to build the call

  1. Get the schema_id from GET /api/schemas or GET /api/get-schema/{schema_id}.
  2. Build a PUT JSON request to https://claix.dev/api/update-schema/{schema_id}.
  3. Include name, type, and schema_definition (full replacement).
  4. For Agent mode, add is_agent_mode: true and agent_definition.
  5. Check the HTTP status: 200 means it was updated.

4. Request examples

See the right-hand panel for cURL, JavaScript, Node.js, Python, PHP, and n8n examples.

5. Successful response

200 OK · Content-Type: application/json

{
  "success": true,
  "schema": {
    "id": "b980cfe7-61ef-4a5a-9724-881c8a5541e2",
    "name": "DNI cliente",
    "type": "img-json",
    "schema_definition": {
      "nombre_dni": {
        "type": "string",
        "description": "nombre de la persona del dni"
      },
      "numero_dni": {
        "type": "string",
        "description": "numero de dni"
      },
      "fecha_caducidad": {
        "type": "string",
        "description": "fecha de caducidad del dni"
      }
    },
    "is_agent_mode": true,
    "agent_definition": {
      "edad": {
        "type": "integer",
        "description": "Edad exacta de la persona pero restale 3"
      },
      "calidad_foto": {
        "type": "closed",
        "options": ["buena calidad", "mala calidad", "ilegible", "perfecta"],
        "description": "La calidad de la imagen y la legibilidad de sus datos"
      },
      "es_mayor_edad": {
        "type": "boolean",
        "description": "Es mayor de edad actualmente la persona del dni?"
      },
      "fecha_vencimiento": {
        "type": "string",
        "description": "Cuado le vence el dni y cuanto tiempo queda para ello"
      }
    },
    "resumen_agent": null,
    "window_context": false,
    "window_time": null,
    "cita_por_campo": false,
    "created_at": "2026-08-17T13:10:00.000Z"
  }
}
FieldTypeDescription
successbooleanAlways true when HTTP is 200.
schemaobjectUpdated schema, including its UUID id.
schema.iduuidMatches the schema_id in the URL.
schema.schema_definitionobjectNormalized definition.
schema.agent_definitionobject | nullNull when is_agent_mode is false.
schema.window_contextbooleanWhether Save Data is on: JSON extractions insert the mapped row into the connected database.
schema.cita_por_campobooleanWhether source verification is enabled on the schema.

6. Error codes

{
  "error": "Descripción legible del problema.",
  "detalle": "Información técnica adicional (solo presente en algunos casos).",
  "log_id": "7c2e1a90-4b3d-4f8a-9e21-6d5c8b0a1f34"
}

400 — Invalid payload: missing name/type/definition, unknown type, empty description, closed without options, json-excel with Agent mode, or invalid schema_id in the URL.

401 — Auth failed: missing, unknown, or inactive key, or suspended account.

404 — The schema does not exist or is not yours.

405 — Method other than PUT or POST. · 500 — Internal error.

7. Status code summary

CodeCategoryRetry?
200Success—
400Client error (malformed data)No — fix the request first
401Authentication errorNo — fix credentials first
404Resource not foundNo — fix schema_id first
405Incorrect HTTP methodNo — fix the method first
500Internal server errorYes, with caution

8. Best practices

  • Use https://claix.dev/api/update-schema/{schema_id}.
  • The body replaces the whole configuration: send the full desired state, not a partial patch.
  • type must match the extraction endpoint you will call later.
  • Never put your API key in frontend code or public repos.

Request examples

curl -X PUT "https://claix.dev/api/update-schema/b980cfe7-61ef-4a5a-9724-881c8a5541e2" \
  -H "x-api-key: <TU_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{  "name": "DNI cliente",  "type": "img-json",  "schema_definition": {    "nombre_dni": {      "type": "string",      "description": "nombre de la persona del dni"    },    "numero_dni": {      "type": "string",      "description": "numero de dni"    },    "fecha_caducidad": {      "type": "string",      "description": "fecha de caducidad del dni"    }  },  "is_agent_mode": true,  "agent_definition": {    "edad": {      "type": "integer",      "description": "Edad exacta de la persona pero restale 3"    },    "calidad_foto": {      "type": "closed",      "options": ["buena calidad", "mala calidad", "ilegible", "perfecta"],      "description": "La calidad de la imagen y la legibilidad de sus datos"    },    "es_mayor_edad": {      "type": "boolean",      "description": "Es mayor de edad actualmente la persona del dni?"    },    "fecha_vencimiento": {      "type": "string",      "description": "Cuado le vence el dni y cuanto tiempo queda para ello"    }  }}'