Iterable Metadata API

Store and retrieve key-value metadata tables for use in personalization and campaign logic.

Operations 11

GET /api/metadata List available tables #
DELETE /api/metadata/{table} Delete a table #
GET /api/metadata/{table} List keys in a table #
DELETE /api/metadata/{table}/{key} Delete a single metadata key/value #
GET /api/metadata/{table}/{key} Get the metadata value of a single key #
PUT /api/metadata/{table}/{key} Create or replace metadata #
GET /metadata/{table} Get metadata table keys #
DELETE /metadata/{table} Delete a metadata table #
GET /metadata/{table}/{key} Get a metadata entry #
PUT /metadata/{table}/{key} Create or update a metadata entry #
DELETE /metadata/{table}/{key} Delete a metadata entry #

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/iterable-metadata-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

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

OpenAPI Specification

iterable-metadata-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Iterable Metadata API
  version: '1.0'
  description: 'Operations tagged metadata across 2 of this provider''s published API definitions: iterable-api-openapi.json, iterable-rest-api-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.iterable.com/
- url: https://api.iterable.com/api
  description: US Data Center (USDC)
- url: https://api.eu.iterable.com/api
  description: European Data Center (EDC)
tags:
- name: metadata
paths:
  /api/metadata:
    get:
      description: ''
      operationId: list tables
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListMetadataTablesResponse'
        '401':
          description: Invalid API key
      summary: List available tables
      tags:
      - metadata
      security:
      - api_key: []
    servers:
    - url: https://api.iterable.com/
  /api/metadata/{table}:
    delete:
      description: Asynchronous. Deletes the table. 200 response indicates a valid request that will be processed; table may not be deleted immediately. Use GET /api/metadata/{table} to verify completion.
      operationId: delete
      parameters:
      - description: Table name [Alphanumeric, case insensitive]
        in: path
        name: table
        required: true
        schema:
          type: string
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IterableApiResponse'
        '400':
          description: Invalid parameters
        '401':
          description: Invalid API key
      summary: Delete a table
      tags:
      - metadata
      security:
      - api_key: []
    get:
      description: ''
      operationId: list
      parameters:
      - description: Table name [Alphanumeric, case insensitive]
        in: path
        name: table
        required: true
        schema:
          type: string
      - description: next result set id; returned by previous search if more hits exist
        in: query
        name: nextMarker
        required: false
        schema:
          type: string
          default: None
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Listing'
        '400':
          description: Invalid parameters
        '401':
          description: Invalid API key
      summary: List keys in a table
      tags:
      - metadata
      security:
      - api_key: []
    servers:
    - url: https://api.iterable.com/
  /api/metadata/{table}/{key}:
    delete:
      description: Asynchronous. Deletes the specified item from the table. 200 response indicates a valid request that will be processed; data may not be deleted immediately. Use GET /api/metadata/{table}/{key} to verify completion.
      operationId: delete
      parameters:
      - description: Table name [Alphanumeric, case insensitive]
        in: path
        name: table
        required: true
        schema:
          type: string
      - description: Metadata key [Alphanumeric, case sensitive]
        in: path
        name: key
        required: true
        schema:
          type: string
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IterableApiResponse'
        '400':
          description: Invalid parameters
        '401':
          description: Invalid API key
      summary: Delete a single metadata key/value
      tags:
      - metadata
      security:
      - api_key: []
    get:
      description: ''
      operationId: get
      parameters:
      - description: Table name [Alphanumeric, case insensitive]
        in: path
        name: table
        required: true
        schema:
          type: string
      - description: Metadata key [Alphanumeric, case sensitive]
        in: path
        name: key
        required: true
        schema:
          type: string
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MetadataWithProperties'
        '400':
          description: Invalid parameters
        '401':
          description: Invalid API key
        '404':
          description: No metadata at specified location
      summary: Get the metadata value of a single key
      tags:
      - metadata
      security:
      - api_key: []
    put:
      description: Asynchronous. Creates or replaces the item associated with the specified key. 200 response indicates a valid request that will be processed; updates may not be made immediately. Use GET /api/metadata/{table}/{key} to verify completion.
      operationId: put
      parameters:
      - description: Table name [Alphanumeric, case insensitive]
        in: path
        name: table
        required: true
        schema:
          type: string
      - description: Metadata key [Alphanumeric, case sensitive]
        in: path
        name: key
        required: true
        schema:
          type: string
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IterableApiResponse'
        '400':
          description: Invalid parameters
        '401':
          description: Invalid API key
      summary: Create or replace metadata
      tags:
      - metadata
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PutMetadataRequest'
        description: Metadata properties
        required: true
      security:
      - api_key: []
    servers:
    - url: https://api.iterable.com/
  /metadata/{table}:
    get:
      operationId: getMetadataTable
      summary: Get metadata table keys
      description: Retrieves all keys in a metadata table.
      tags:
      - metadata
      parameters:
      - name: table
        in: path
        required: true
        description: The name of the metadata table
        schema:
          type: string
      responses:
        '200':
          description: Metadata table keys
          content:
            application/json:
              schema:
                type: object
                properties:
                  results:
                    type: array
                    items:
                      type: object
                      properties:
                        key:
                          type: string
                        value:
                          type: object
                          additionalProperties: true
        '401':
          description: Unauthorized
        '404':
          description: Table not found
      security:
      - apiKeyAuth: []
    delete:
      operationId: deleteMetadataTable
      summary: Delete a metadata table
      description: Deletes a metadata table and all its entries.
      tags:
      - metadata
      parameters:
      - name: table
        in: path
        required: true
        description: The name of the metadata table
        schema:
          type: string
      responses:
        '200':
          description: Metadata table deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IterableResponse'
        '401':
          description: Unauthorized
      security:
      - apiKeyAuth: []
    servers:
    - url: https://api.iterable.com/api
      description: US Data Center (USDC)
    - url: https://api.eu.iterable.com/api
      description: European Data Center (EDC)
  /metadata/{table}/{key}:
    get:
      operationId: getMetadataEntry
      summary: Get a metadata entry
      description: Retrieves a single metadata entry by table name and key.
      tags:
      - metadata
      parameters:
      - name: table
        in: path
        required: true
        description: The name of the metadata table
        schema:
          type: string
      - name: key
        in: path
        required: true
        description: The key of the metadata entry
        schema:
          type: string
      responses:
        '200':
          description: Metadata entry
          content:
            application/json:
              schema:
                type: object
                properties:
                  value:
                    type: object
                    additionalProperties: true
        '401':
          description: Unauthorized
        '404':
          description: Entry not found
      security:
      - apiKeyAuth: []
    put:
      operationId: putMetadataEntry
      summary: Create or update a metadata entry
      description: Creates or updates a metadata entry for the specified table and key.
      tags:
      - metadata
      parameters:
      - name: table
        in: path
        required: true
        description: The name of the metadata table
        schema:
          type: string
      - name: key
        in: path
        required: true
        description: The key of the metadata entry
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - value
              properties:
                value:
                  type: object
                  description: The value to store
                  additionalProperties: true
      responses:
        '200':
          description: Metadata entry saved
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IterableResponse'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
      security:
      - apiKeyAuth: []
    delete:
      operationId: deleteMetadataEntry
      summary: Delete a metadata entry
      description: Deletes a metadata entry by table name and key.
      tags:
      - metadata
      parameters:
      - name: table
        in: path
        required: true
        description: The name of the metadata table
        schema:
          type: string
      - name: key
        in: path
        required: true
        description: The key of the metadata entry
        schema:
          type: string
      responses:
        '200':
          description: Metadata entry deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IterableResponse'
        '401':
          description: Unauthorized
      security:
      - apiKeyAuth: []
    servers:
    - url: https://api.iterable.com/api
      description: US Data Center (USDC)
    - url: https://api.eu.iterable.com/api
      description: European Data Center (EDC)
components:
  schemas:
    IterableApiResponse:
      properties:
        code:
          enum:
          - Success
          - BadApiKey
          - BadAuthorizationHeader
          - BadJsonBody
          - BadParams
          - BatchTooLarge
          - DatabaseError
          - EmailAlreadyExists
          - ExternalKeyConflict
          - Forbidden
          - ForbiddenParamsError
          - ForgottenUserError
          - GenericError
          - InvalidEmailAddressError
          - InvalidJwtPayload
          - InvalidUserIdError
          - JwtUserIdentifiersMismatched
          - NotFound
          - QueueEmailError
          - RateLimitExceeded
          - RequestFieldsTypesMismatched
          - Unauthorized
          - UniqueFieldsLimitExceeded
          - UnknownEmailError
          - UnknownUserIdError
          - UserIdAlreadyExists
          type: string
        msg:
          description: Response description
          type: string
        params:
          description: Additional info
          type: object
      required:
      - code
      - msg
      type: object
    ListMetadataTablesResponse:
      properties:
        results:
          items:
            $ref: '#/components/schemas/Table'
          type: array
      required:
      - results
      type: object
    Table:
      properties:
        name:
          type: string
      required:
      - name
      type: object
    MetadataProperties:
      properties:
        key:
          type: string
        lastModified:
          format: int64
          type: integer
        size:
          format: int64
          type: integer
        table:
          type: string
      required:
      - key
      - lastModified
      - size
      - table
      type: object
    MetadataWithProperties:
      properties:
        key:
          type: string
        lastModified:
          format: int64
          type: integer
        size:
          format: int64
          type: integer
        table:
          type: string
        value:
          type: object
      required:
      - key
      - lastModified
      - size
      - table
      - value
      type: object
    PutMetadataRequest:
      properties:
        value:
          description: The JSON metadata value.  Max size is is 30kb.
          type: object
      required:
      - value
      type: object
    Listing:
      properties:
        nextMarker:
          type: string
        results:
          items:
            $ref: '#/components/schemas/MetadataProperties'
          type: array
      required:
      - results
      type: object
    IterableResponse:
      type: object
      description: Standard Iterable API response indicating success or failure
      properties:
        msg:
          type: string
          description: Human-readable response message
        code:
          type: string
          description: Response code indicating success or error type
        params:
          type: object
          description: Additional response parameters
          additionalProperties: true
  securitySchemes:
    api_key:
      in: header
      name: Api-Key
      type: apiKey
    apiKeyAuth:
      type: apiKey
      in: header
      name: Api-Key
      description: Iterable API key passed in the Api-Key header. API keys can be created and managed in the Iterable project settings.
externalDocs:
  description: Iterable API Documentation
  url: https://api.iterable.com/api/docs
x-refined-from:
- iterable-api-openapi.json
- iterable-rest-api-openapi.yml