---
title: "Save a dataset description as a private draft."
method: PUT
path: "/api/bases/{base_id}/dataset"
---

# Save a dataset description as a private draft.

`PUT /api/bases/{base_id}/dataset`

## Request

- Base URL: `https://okfindex.com`
- URL: `https://okfindex.com/api/bases/{base_id}/dataset`
- Auth: none declared

Store a dataset description in your own base. The server does not fetch the source or import its data. Saving creates a managed dataset.md version for base search, collections and OKF export. Existing publication stays unchanged until publish_base. The normal base and document limits apply; extra base capacity uses the existing subscription. Metadata and public discovery have no separate fee.
Returns: { base{id,name,visibility,dataset,created_at,updated_at,documents,bytes,api,export_url,okf_url,public_url,embed_url,publication} }

## Path parameters

- `base_id` string, required

## Request body

- object
  - `description` string, required: Dataset description, 1–2000 characters.
  - `fields` DatasetField[], required: 1–30 fields, each with a name and description.
    - `name` string, required: Field name, 1–80 characters.
    - `description` string, required: Meaning, 1–200 characters.
  - `coverage` string, required: Geographic, temporal or subject coverage, 1–300 characters.
  - `format` string, required: Source format, for example CSV or JSON, 1–40 characters.
  - `update_frequency` string, required: Declared update schedule, 1–200 characters. No automatic check is performed.
  - `license` string, required: Declared license or access terms, 1–300 characters. Not independently verified.
  - `source_url` string, required: HTTPS origin URL, at most 1000 characters, without credentials.

## Response `200`

{ base{id,name,visibility,dataset,created_at,updated_at,documents,bytes,api,export_url,okf_url,public_url,embed_url,publication} }

- object
  - `base` Base, required
    - `id` string, required: The 64-character ID returned by the API.
    - `name` string, required: Base name.
    - `visibility` string, required: private or public; only explicit publication makes a base public.
    - `dataset` Dataset, required
      - `description` string, required: Dataset description, 1–2000 characters.
      - `fields` DatasetField[], required: 1–30 fields, each with a name and description.
        - `name` string, required: Field name, 1–80 characters.
        - `description` string, required: Meaning, 1–200 characters.
      - `coverage` string, required: Geographic, temporal or subject coverage, 1–300 characters.
      - `format` string, required: Source format, for example CSV or JSON, 1–40 characters.
      - `update_frequency` string, required: Declared update schedule, 1–200 characters. No automatic check is performed.
      - `license` string, required: Declared license or access terms, 1–300 characters. Not independently verified.
      - `source_url` string, required: HTTPS origin URL, at most 1000 characters, without credentials.
    - `created_at` string, required: Creation date, ISO 8601.
    - `updated_at` string, required: Last change, ISO 8601.
    - `documents` integer, nullable, required: Document count when returned by the base list; null otherwise.
    - `bytes` integer, nullable, required: Current original bytes in the owner's base list; null in other private responses. Omitted from public responses.
    - `api` string, required: Metadata URL.
    - `export_url` string, required: ZIP download URL.
    - `okf_url` string, required: OKF root index URL.
    - `public_url` string, nullable, required: Public page URL while published; null when private.
    - `embed_url` string, nullable, required: Public search iframe URL while published; null when private. Uses the same public API and limits. No account controls inside the iframe.
    - `publication` BasePublication, required
      - `author` string, required: Author or attribution declared by the publisher.
      - `source_url` string, nullable, required: Declared HTTPS source, or null for uploaded files.
      - `terms` string, required: Terms declared by the publisher. This is not an independent license verification.
      - `published_at` string, required: Date of the last explicit publication, ISO 8601.

## Other responses

- `400`: Invalid metadata.
- `401`: Personal account required.
- `402`: Base capacity expired.
- `404`: Base unavailable.
- `409`: Document limit reached.

---

[API](https://skmtc.dev/okfindex/apis/okf-index.md) · [All operations](https://skmtc.dev/okfindex/apis/okf-index/llms.txt) · [OpenAPI document](https://skmtc.dev/okfindex/apis/okf-index/revisions/4b13ca3c739f?raw)
