Insight Genius Metadata API

Extract variable metadata from SPSS files

GitHub OpenAPI

Operations 6

POST /v1/metadata Extract SPSS file metadata #
GET /v1/projects/{project_id}/metadata/overrides Get Overrides #
PUT /v1/projects/{project_id}/metadata/overrides Update Overrides #
PUT /v1/projects/{project_id}/metadata/overrides/{var_name} Update Single Override #
POST /v1/projects/{project_id}/metadata/import-codebook Import Codebook #
GET /v1/projects/{project_id}/metadata/dossier Get Dossier #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/insightgenius-io:insightgenius-io-metadata-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

insightgenius-io-metadata-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: SPSS InsightGenius Metadata API
  description: '**SPSS InsightGenius API** — REST API for processing SPSS (.sav) files.


    Powered by QuantipyMRX for market research analysis: crosstabs with significance testing, auto-detection of question types, NPS, Top/Bottom Box, nets, and AI-powered Reporting Ticket parsing via Claude Haiku.


    ## Authentication

    All endpoints require `Authorization: Bearer sk_live_...` or `sk_test_...`


    ## Rate Limits

    | Plan | Requests/min | Max file size |

    |------|-------------|---------------|

    | Free (sk_test_) | 10 | 5 MB |

    | Pro | 60 | 50 MB |

    | Business | 200 | 200 MB |'
  version: 1.0.0
tags:
- name: Metadata
  description: Extract variable metadata from SPSS files
paths:
  /v1/metadata:
    post:
      tags:
      - Metadata
      summary: Extract SPSS file metadata
      description: Returns variable names, labels, types, value labels, and auto-detected question types. No analysis is performed. Optionally accepts label_overrides JSON to substitute broken/missing value labels.
      operationId: metadata_v1_metadata_post
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Body_metadata_v1_metadata_post'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/projects/{project_id}/metadata/overrides:
    get:
      tags:
      - Metadata
      summary: Get Overrides
      description: 'Full variable list with overrides applied — the SPA metadata panel contract.


        Response: {variables: [{name, auto_label, label, is_overridden, type,

        auto_value_labels, value_labels, has_value_label_overrides, missing_values}],

        total, overridden_count} (useVariableMetadata.ts expects exactly this shape).'
      operationId: get_overrides_v1_projects__project_id__metadata_overrides_get
      parameters:
      - name: project_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Project Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    put:
      tags:
      - Metadata
      summary: Update Overrides
      description: 'Bulk update metadata overrides. Fully replaces the stored override dict.


        Payload shape:

        {

        "variables": {

        "income": {"semantic_type": "nominal"},

        "q5_recommend": {"label": "...", "semantic_type": "ordinal"}

        }

        }


        Invalid `semantic_type` values are rejected with HTTP 422.'
      operationId: update_overrides_v1_projects__project_id__metadata_overrides_put
      parameters:
      - name: project_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Project Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MetadataOverridesPayload'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/projects/{project_id}/metadata/overrides/{var_name}:
    put:
      tags:
      - Metadata
      summary: Update Single Override
      description: Merge one variable's override without clobbering the rest (SPA rename/labels).
      operationId: update_single_override_v1_projects__project_id__metadata_overrides__var_name__put
      parameters:
      - name: project_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Project Id
      - name: var_name
        in: path
        required: true
        schema:
          type: string
          title: Var Name
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VariableOverride'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/projects/{project_id}/metadata/import-codebook:
    post:
      tags:
      - Metadata
      summary: Import Codebook
      description: Bulk-import variable labels/value labels from an .xlsx/.csv codebook.
      operationId: import_codebook_v1_projects__project_id__metadata_import_codebook_post
      parameters:
      - name: project_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Project Id
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Body_import_codebook_v1_projects__project_id__metadata_import_codebook_post'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/projects/{project_id}/metadata/dossier:
    get:
      tags:
      - Metadata
      summary: Get Dossier
      description: 'The semantic dossier for this project''s dataset.


        One entry per FAMILY, not per variable — that distinction is the point.

        Consumed by the SPA metadata panel and, from F3, by /export instead of

        its own `detectScaleVars()`.


        Read-only. Writing overrides already has a home in PUT /overrides;

        wiring the dossier into it is F3 work. `overrides` here are read from

        `user_metadata_overrides["families"]` — a separate namespace from the

        per-variable overrides `PUT /overrides` writes to

        `user_metadata_overrides` directly, keyed by family key (or, for a

        singleton family, by the variable name it holds — see `build_dossier`).'
      operationId: get_dossier_v1_projects__project_id__metadata_dossier_get
      parameters:
      - name: project_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Project Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    Body_import_codebook_v1_projects__project_id__metadata_import_codebook_post:
      properties:
        file:
          type: string
          contentMediaType: application/octet-stream
          title: File
      type: object
      required:
      - file
      title: Body_import_codebook_v1_projects__project_id__metadata_import_codebook_post
    VariableOverride:
      properties:
        label:
          anyOf:
          - type: string
            maxLength: 500
          - type: 'null'
          title: Label
        value_labels:
          anyOf:
          - additionalProperties:
              type: string
            type: object
          - type: 'null'
          title: Value Labels
        semantic_type:
          anyOf:
          - type: string
          - type: 'null'
          title: Semantic Type
      type: object
      title: VariableOverride
      description: Per-variable override. All fields optional — only the set keys are applied.
    Body_metadata_v1_metadata_post:
      properties:
        file:
          type: string
          contentMediaType: application/octet-stream
          title: File
          description: SPSS .sav file (or use file_id)
        file_id:
          anyOf:
          - type: string
          - type: 'null'
          title: File Id
          description: File session ID from /v1/library/upload
        label_overrides:
          anyOf:
          - type: string
          - type: 'null'
          title: Label Overrides
          description: 'Optional JSON: {"P5D": {"1": "Pantene", "2": "Sedal"}}'
        include_families:
          type: boolean
          title: Include Families
          description: Incluye el tipo de familia (dossier semántico) por columna — I334
          default: false
        preparation:
          anyOf:
          - type: string
          - type: 'null'
          title: Preparation
          description: Source-bound preparation used by the tabulation engine
        include_reading:
          type: boolean
          title: Include Reading
          description: 'Incluye la lectura del archivo para revisarla antes de tabular: escalas, códigos especiales, títulos y «Otro» (24-oct-2026). Exige include_families.'
          default: false
        reading_flags:
          anyOf:
          - type: string
          - type: 'null'
          title: Reading Flags
          description: 'JSON con las banderas del libro que cambian la lectura: {"correctness_fixes_v1": true, "special_codes_in_base": true, "platform_labels_v1": true, "platform_titles_v1": true, "blank_text_empty_v1": true, "special_codes_by_analyst_v1": true, "scale_rungs_v2": true}'
        book_language:
          anyOf:
          - type: string
          - type: 'null'
          title: Book Language
          description: Idioma del libro (es/en/pt/fr/de/nl/it) para las palabras que escribe el motor
        declared_families:
          anyOf:
          - type: string
          - type: 'null'
          title: Declared Families
          description: 'JSON con las familias del diseño: {"code_frame_groups": {...}, "mrs_groups": {...}, "grid_groups": {...}} (mismo formato que /v1/tabulate). Con él, las familias y la lectura del archivo se arman sobre lo declarado, igual que el libro con declared_families_v1 (29-oct-2026). Exige include_families.'
      type: object
      title: Body_metadata_v1_metadata_post
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
            - type: string
            - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
      - loc
      - msg
      - type
      title: ValidationError
    MetadataOverridesPayload:
      properties:
        variables:
          additionalProperties:
            $ref: '#/components/schemas/VariableOverride'
          type: object
          title: Variables
      type: object
      title: MetadataOverridesPayload
      description: Request body for PUT /v1/projects/{id}/metadata/overrides.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError