Materials Zone Tables API
Tables are organized in folders, and contain Items.
Tables are organized in folders, and contain Items.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/materials-zone-tables-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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: 3.2.0
info:
title: Materials Zone Tables API
version: 2.0.0
description: MaterialsZone's RESTful API is designed to facilitate seamless integration with your existing systems, enabling you to automate workflows, connect diverse data sources, and perform domain-specific analysis.
servers:
- url: https://api.materials.zone/v2beta1
security:
- ApiKey: []
tags:
- name: Tables
description: Tables are organized in folders, and contain Items.
paths:
/tables:
get:
tags:
- Tables
summary: Get all tables
description: This operation retrieves all tables that are accessible to the user.
responses:
'200':
description: Success
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Table'
'401':
$ref: '#/components/responses/Unauthorized'
operationId: getTables
x-operation-id-source: derived
post:
tags:
- Tables
summary: Create a new table
description: Create a new table within a specified folder or within the root folder.
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
title:
type: string
description: Title of the table.
example: Material Properties
description:
type: string
description: Description of the table.
example: This table contains items with material properties.
nullable: true
folderId:
type: string
format: uuid
description: UUID of the parent folder.
nullable: true
required:
- title
responses:
'201':
description: Success
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/Table'
'400':
description: Bad Request
'401':
$ref: '#/components/responses/Unauthorized'
operationId: postTables
x-operation-id-source: derived
/tables/{tableId}:
get:
tags:
- Tables
summary: Get a single table
description: This operation retrieves a single table.
parameters:
- name: tableId
in: path
required: true
description: The UUID of the table to return.
example: eb1aa7b4-0e21-46de-b448-0c4eabdd32b7
schema:
type: string
format: uuid
minLength: 1
responses:
'200':
description: Success
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/Table'
'400':
description: Bad Request
'401':
$ref: '#/components/responses/Unauthorized'
operationId: getTablesByTableId
x-operation-id-source: derived
patch:
tags:
- Tables
summary: Update a table
description: Update a table's title, description, parent folder, etc.
parameters:
- name: tableId
in: path
required: true
description: The UUID of the table to update.
example: eb1aa7b4-0e21-46de-b448-0c4eabdd32b7
schema:
type: string
format: uuid
minLength: 1
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
title:
type: string
description: New title for the table.
nullable: true
description:
type: string
description: New description for the table.
nullable: true
folderId:
type: string
format: uuid
description: UUID of the new parent folder.
nullable: true
tableProtocolIds:
type: array
description: UUIDs of the table protocols to be rearranged in the table.
items:
type: string
format: uuid
hash:
type: string
description: Hash for optimistic concurrency control. Get this from a previous GET request to the table.
required:
- hash
responses:
'200':
description: Success
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/Table'
'400':
description: Bad Request
'401':
$ref: '#/components/responses/Unauthorized'
'409':
description: Conflict - The table has been modified since you last retrieved it
operationId: patchTablesByTableId
x-operation-id-source: derived
delete:
tags:
- Tables
summary: Delete a table
description: Delete a table and all its contents.
parameters:
- name: tableId
in: path
required: true
description: The UUID of the table to delete.
example: eb1aa7b4-0e21-46de-b448-0c4eabdd32b7
schema:
type: string
format: uuid
minLength: 1
responses:
'204':
description: Success
'400':
description: Bad Request
'401':
$ref: '#/components/responses/Unauthorized'
operationId: deleteTablesByTableId
x-operation-id-source: derived
/tables/{tableId}/items:
get:
tags:
- Tables
summary: Get all items from a table
description: This operation retrieves all items from a single table. See Pagination example.
parameters:
- name: tableId
in: path
required: true
description: The UUID of the table to fetch the items from.
example: eb1aa7b4-0e21-46de-b448-0c4eabdd32b7
schema:
type: string
format: uuid
minLength: 1
- name: cursor
in: query
required: false
description: Cursor for pagination to fetch the next set of results.
example: eyJpbnNlcnRPcmRlciI6IjEyMyIsInBhcmFtIjoiZGFnX21hbHVhY2giLCJ2YWx1ZSI6IjEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4In0=
schema:
type: string
- name: pageSize
in: query
required: false
description: The number of items to return in a single page.
example: 100
schema:
type: integer
format: int32
default: 100
responses:
'200':
description: Success
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/ItemsList'
'400':
description: Bad Request
'401':
$ref: '#/components/responses/Unauthorized'
operationId: getTablesByTableIdItems
x-operation-id-source: derived
post:
tags:
- Tables
summary: Create a new item in a table
description: This operation creates a new item in a table.
parameters:
- name: tableId
in: path
required: true
description: The UUID of the table to create the item in.
example: eb1aa7b4-0e21-46de-b448-0c4eabdd32b7
schema:
type: string
format: uuid
minLength: 1
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateItem'
responses:
'201':
description: Success
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/Item'
'400':
description: Bad Request
'401':
$ref: '#/components/responses/Unauthorized'
operationId: postTablesByTableIdItems
x-operation-id-source: derived
/tables/{tableId}/items/batch:
post:
tags:
- Tables
summary: Create multiple items in a table
description: This operation creates multiple items in a single table.
parameters:
- name: tableId
in: path
required: true
description: The UUID of the table to create the items in.
example: eb1aa7b4-0e21-46de-b448-0c4eabdd32b7
schema:
type: string
format: uuid
minLength: 1
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/BatchCreateItemsRequest'
responses:
'201':
description: Success
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/BatchIngestTableItemOutput'
'400':
description: Bad Request
'401':
$ref: '#/components/responses/Unauthorized'
operationId: postTablesByTableIdItemsBatch
x-operation-id-source: derived
patch:
tags:
- Tables
summary: Update multiple items in a table
description: This operation updates multiple items in a single table.
parameters:
- name: tableId
in: path
required: true
description: The UUID of the table that owns the items.
example: eb1aa7b4-0e21-46de-b448-0c4eabdd32b7
schema:
type: string
format: uuid
minLength: 1
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/BatchUpdateItemsRequest'
responses:
'200':
description: Success
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/BatchIngestTableItemOutput'
'400':
description: Bad Request
'401':
$ref: '#/components/responses/Unauthorized'
operationId: patchTablesByTableIdItemsBatch
x-operation-id-source: derived
components:
schemas:
BatchIngestTableItemOutput:
properties:
id:
type: string
format: uuid
code:
type: string
action:
type: string
enum:
- CREATED
- UPDATED
- NOT_CHANGED
required:
- id
- code
- action
PageInfo:
properties:
endCursor:
type: string
description: Last cursor on the page.
nullable: true
startCursor:
type: string
description: First cursor on the page.
nullable: true
hasNextPage:
type: boolean
description: Whether there is a next page available.
required:
- endCursor
- startCursor
- hasNextPage
Item:
properties:
code:
type: string
example: AA-123
description: Short code that uniquely defines an item within an organization. Consists by default of the user's code and an alphanumerical counter, separated by a dash.
dateCreated:
type: string
format: date-time
description: Immutable timestamp of when the item was created.
dateTime:
type: string
format: date-time
description: User-configurable timestamp. For example, if the item represents a measurement, then this timestamp can be used to indicate when the measurement was taken.
nullable: true
dateUpdated:
type: string
format: date-time
description: Timestamp that updates whenever the user makes adjustments to the item.
description:
type: string
description: Description of this item.
example: This item contains the chemical properties of Aluminum.
nullable: true
id:
type: string
format: uuid
description: UUID of this item.
tableId:
type: string
format: uuid
description: UUID of the table that this item belongs to.
title:
type: string
description: Title of this item.
example: Aluminum
values:
type: array
description: Values in this item, each value is an object that contains the parameter (column) UUID. This array is sparse, meaning, it only contains non-null values.
items:
$ref: '#/components/schemas/TableValue'
nullable: true
measurements:
type: array
description: Measurements in this item.
items:
$ref: '#/components/schemas/Measurement'
nullable: true
required:
- code
- dateCreated
- dateUpdated
- dateTime
- id
- tableId
- title
- description
- values
- measurements
Protocol:
allOf:
- $ref: '#/components/schemas/BaseProtocol'
- type: object
properties:
type:
type: string
description: The type of the protocol, will always be PROTOCOL here.
enum:
- PROTOCOL
example: PROTOCOL
unit:
type: 'null'
description: Only relevant for formulation protocols. Will always return null here.
example: null
titleTableIds:
type: array
description: Only relevant for formulation protocols. Will always return an empty list here.
items: {}
example: []
parameters:
type: array
description: The list of parameters (columns) in this protocol.
items:
$ref: '#/components/schemas/Parameter'
required:
- type
- unit
- titleTableIds
- parameters
Parameter:
properties:
id:
type: string
format: uuid
description: UUID of this parameter.
title:
type: string
description: Title of this parameter.
example: Boiling Point
nullable: true
description:
type: string
description: Description of this parameter.
nullable: true
titleItemId:
type: string
format: uuid
description: In some cases, the title of a parameter is another item, in this case this field is the UUID of that item, otherwise it's null.
nullable: true
type:
type: string
enum:
- QUANTITY
- TEXT
- BOOLEAN
- LINK
- CALCULATION
- ENUM
- PREDICTION
example: QUANTITY
description: The type of the parameter.
unit:
type: string
description: This is the unit of the parameter.
example: kg
nullable: true
hash:
type: string
description: Hash for optimistic concurrency control.
calculation:
type: object
description: Calculation formula (only applicable for calculation type parameters).
nullable: true
significantFiguresNum:
type: integer
description: Number of significant figures to use for the parameter (only applicable for calculation type parameters).
nullable: true
inputParameterIds:
type: array
description: IDs of input parameters (only applicable for calculation type parameters).
items:
type: string
format: uuid
nullable: true
enumValueOptions:
type: array
description: List of enum value options (only applicable for enum type parameters).
items:
type: object
properties:
id:
type: string
format: uuid
title:
type: string
nullable: true
linkTables:
type: array
description: List of link source table IDs from which items can be linked (only applicable for link type parameters).
items:
type: string
format: uuid
required:
- id
- title
- description
- titleItemId
- type
- unit
- hash
- calculation
- significantFiguresNum
- inputParameterIds
- enumValueOptions
- linkTables
CreateItem:
properties:
dateTime:
type: string
format: date-time
description: User-configurable timestamp. For example, if the item represents a measurement, then this timestamp can be used to indicate when the measurement was taken.
nullable: true
description:
type: string
description: Description of this item.
example: This item contains the chemical properties of Aluminum.
nullable: true
title:
type: string
description: Title of this item.
example: Aluminum
values:
type: array
description: Values in this item, each value is an object that contains the parameter (column) UUID. Only values that the user wishes to be non-null need to be provided.
items:
$ref: '#/components/schemas/CreateTableValue'
maxItems: 10000
nullable: true
required:
- title
BaseProtocol:
properties:
id:
type: string
format: uuid
description: UUID of this protocol.
title:
type: string
description: Title of this protocol.
example: Measured properties
description:
type: string
description: Description of this protocol (column group).
example: This protocol contains parameters representing the measurement conditions.
nullable: true
hash:
type: string
description: Hash for optimistic concurrency control.
required:
- id
- title
- description
- hash
Table:
properties:
description:
type: string
description: Description of this table.
example: This table contains items with material properties.
nullable: true
folderId:
type: string
format: uuid
description: UUID of the parent folder.
nullable: true
id:
type: string
format: uuid
description: UUID of this table.
protocols:
type: array
description: The list of protocols (column groups) in this table. Each item is either a Protocol or a FormulationProtocol.
items:
oneOf:
- $ref: '#/components/schemas/Protocol'
- $ref: '#/components/schemas/FormulationProtocol'
nullable: true
title:
type: string
description: Title of this table.
example: Material Properties
hash:
type: string
description: Hash for optimistic concurrency control.
required:
- id
- title
- description
- folderId
- protocols
- hash
TableValueParameterId:
type: string
format: uuid
description: The parameterId represents the 'column' that this value is in.
nullable: true
BatchCreateItemsRequest:
properties:
items:
type: array
items:
$ref: '#/components/schemas/CreateItem'
required:
- items
UpdateTableValue:
properties:
value:
$ref: '#/components/schemas/TableValueValue'
parameterId:
$ref: '#/components/schemas/TableValueParameterId'
formulationProtocolId:
type: string
format: uuid
description: In case the value is created in a formulation protocol, you supply the protocol UUID instead of the parameter UUID.
nullable: true
formulationItemId:
type: string
format: uuid
description: In case the value is created in a formulation protocol, you supply the item UUID instead of the parameter UUID.
nullable: true
required:
- value
ItemsList:
properties:
pagination:
$ref: '#/components/schemas/PageInfo'
data:
type: array
items:
$ref: '#/components/schemas/Item'
BatchUpdateItemsRequest:
properties:
items:
type: array
items:
$ref: '#/components/schemas/BatchUpdateItem'
required:
- items
BatchUpdateItem:
allOf:
- $ref: '#/components/schemas/UpdateItem'
- type: object
properties:
id:
type: string
format: uuid
description: UUID of the item to update.
required:
- id
FormulationProtocol:
allOf:
- $ref: '#/components/schemas/BaseProtocol'
- type: object
properties:
type:
type: string
description: The type of the protocol, will always be FORMULATION here.
enum:
- FORMULATION
example: FORMULATION
unit:
type: string
description: The unit this formulation protocol's components are measured in.
example: '%'
nullable: true
titleTableIds:
type: array
description: The list of tables (UUIDs) from which the user may choose items for the formulation.
items:
type: string
format: uuid
parameters:
type: array
description: Only relevant for non-formulation protocols. Will always return an empty list here.
items: {}
example: []
required:
- type
- unit
- titleTableIds
- parameters
UpdateItem:
properties:
dateTime:
type: string
format: date-time
description: User-configurable timestamp. For example, if the item represents a measurement, then this timestamp can be used to indicate when the measurement was taken.
nullable: true
description:
type: string
description: Description of this item.
example: This item contains the chemical properties of Aluminum.
nullable: true
title:
type: string
description: Title of this item.
example: Aluminum
nullable: true
values:
type: array
description: Values in this item, each value is an object that contains the parameter (column) UUID. Only values that the user wishes to update need to be provided.
items:
$ref: '#/components/schemas/UpdateTableValue'
maxItems: 10000
nullable: true
TableValueFormulationItemId:
type: string
format: uuid
description: The formulationItemId represents the item that this value is linked to.
nullable: true
TableValueFormulationProtocolId:
type: string
format: uuid
description: The formulationProtocolId represents the 'column group' that this value is in.
nullable: true
TableValue:
properties:
value:
$ref: '#/components/schemas/TableValueValue'
parameterId:
$ref: '#/components/schemas/TableValueParameterId'
formulationProtocolId:
$ref: '#/components/schemas/TableValueFormulationProtocolId'
formulationItemId:
$ref: '#/components/schemas/TableValueFormulationItemId'
required:
- value
- parameterId
- formulationProtocolId
- formulationItemId
TableValueValue:
type: string
description: The value in the table. This string is guaranteed to be parsable to the parameter type.
example: '1'
nullable: true
Measurement:
properties:
id:
type: string
description: The id of the measurement.
dateCreated:
type: string
format: date-time
description: Immutable timestamp of when the measurement was created.
dateUpdated:
type: string
format: date-time
description: Timestamp that updates whenever the user makes adjustments to the measurement.
title:
type: string
description: The title of the measurement.
description:
type: string
description: Description of this measurement.
parserCode:
type: string
description: The parser code of the measurement.
rawFilename:
type: string
description: The raw filename of the measurement.
rawFilDownloadURL:
type: string
description: The raw file download URL of the measurement.
required:
- id
- dateCreated
- dateUpdated
- title
- description
- parserCode
- rawFilename
- rawFileDownloadURL
CreateTableValue:
properties:
value:
$ref: '#/components/schemas/TableValueValue'
parameterId:
$ref: '#/components/schemas/TableValueParameterId'
formulationProtocolId:
type: string
format: uuid
description: In case the value is created in a formulation protocol, you supply the protocol UUID instead of the parameter UUID.
nullable: true
formulationItemId:
type: string
format: uuid
description: In case the value is created in a formulation protocol, you supply the item UUID instead of the parameter UUID.
nullable: true
required:
- value
Error:
type: object
properties:
code:
type: string
message:
type: string
required:
- code
- message
responses:
Unauthorized:
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
securitySchemes:
ApiKey:
type: apiKey
in: header
name: Authorization