Skip to main content

Metadata API documentation

Read and change solutions, tables, fields, members and comments through the Metadata API with your API key.

Written by Peter Novosel

The Metadata API reads and changes the structure of your workspace: solutions, tables, fields, members and comments. It uses the same API key and Workspace ID as the record endpoints.

Use it when a script needs to know or build the structure, not just the data.

Example: a GRC team sets up the same vendor risk solution in a new workspace. A script creates the solution, adds a Vendors table with no default fields, then adds the Vendor Tier and Contract Renewal Date fields.

Plan Availability

All plan types. Every request counts toward the monthly API allowance: 25,000 on Team, 100,000 on Professional, 500,000 on Enterprise, custom on Signature.

Permissions

Any member with an API key. Changing structure needs the Solution Manager permission or the Administrator role, as in the app.

Platform

API

Related Reading


Authorization

Every metadata request sends your API key and your Workspace ID as headers.

Authorization: Token API_KEY_HERE
Account-Id: WORKSPACE_ID_HERE

Your Workspace ID is in the address bar after you sign in, as in https://app.smartsuite.com/sv25cxf2/.


Pagination

Most metadata endpoints return results in pages. Use limit for the number of items per page and offset to skip items you already have. The response looks like this:

{
"total": 5000,
"offset": 0,
"limit": 100,
"items": [
...
]
}

Solutions

  • List Solutions: GET /api/v1/solutions/ returns every solution in the workspace.

  • Return Specific Solution: GET /api/v1/solutions/[Solution_Id]/ returns one solution.

  • Create a Solution: POST /api/v1/solutions/ creates a solution.

  • Duplicate a Solution: POST /api/v1/solutions/duplicate/ copies a solution to a new workspace.

A new solution comes with one default table, "Table 1". To create a solution with no tables, add "create_default_application": false to the body.

{
"name": "My New Solution",
"logo_icon": "overline",
"logo_color": "#3A86FF"
}

Tables

  • List Tables: GET /api/v1/applications/ returns every table.

  • Return Specific Table: GET /api/v1/applications/[App_Id]/ returns one table.

  • Filter Tables by Solution: GET /api/v1/applications/?solution=solution_id returns the tables of one solution.

  • Create a Table: POST /api/v1/applications/ creates a table.

{ "name": "[App Name]", "solution": "[Solution_Id]", "structure": [] }

A new table includes the default fields Priority, Due Date, Status, Assigned To and Description. To skip them, add "create_default_fields": false to the body. The table then has only its system fields: Title, First Created, Last Updated, Followed by, Comments Count and Autonumber. It also has any fields you define in structure. Left out, the parameter is true.


Fields

  • Add Field: POST /api/v1/applications/[App_Id]/add_field/ adds one field to a table.

  • Bulk Add Fields: POST /api/v1/applications/[App_Id]/bulk-add-fields/ adds several fields at once.

Note: Some field types cannot be added in bulk, for example Formula, Count and Time Tracking.


Members

  • List Workspace Members: POST /api/v1/applications/members/records/list/ returns the members and their profiles.

  • Update Member Profile: PATCH /api/v1/applications/members/records/[Id]/ updates one member's profile.


Comments

  • List Record Comments: GET /api/v1/comments/?record=[Record_Id] returns the comments on one record.

  • Add Comment: POST /api/v1/comments/ adds a comment to a record.

{
"assigned_to": null,
"message": {
"data": {
"type": "doc",
"content": [
{
"type": "paragraph",
"content": [
{
"type": "text",
"text": "[Comment Text]"
}
]
}
]
}
},
"application": "[App_Id]",
"record": "[Record_Id]"
}

In the vendor example, a script adds a comment to each vendor whose review is overdue.


Frequently asked questions

Do I need extra credentials for the Metadata API?

No. It uses your API key and Workspace ID, the same as the record endpoints.

Why does my new table have fields I did not ask for?

New tables get the default fields Priority, Due Date, Status, Assigned To and Description. Send "create_default_fields": false to leave them out.

Can I add a Formula field in bulk?

No. Formula, Count and Time Tracking fields cannot be added through Bulk Add Fields. Add them one at a time with Add Field.

Where is the full endpoint reference?

In the SmartSuite developer documentation, with every parameter and response.

Need more help? Ask the SmartSuite Community, where builders, administrators and the SmartSuite team answer questions about building on SmartSuite. For your account, billing or data, select the chat button in the lower-right corner of SmartSuite to reach support.

Last verified 1 Nov 2026.

Did this answer your question?