Macrows API
Read and write Macrows Cloud project tables, append rows, update records, and call MCP tools with organization API keys.
Create a key on the API keys page and send it as a bearer token on every request.
Authentication
Add your API key as a bearer token.
Required header
Authorization: Bearer <api-key>Request body
Content-Type: application/jsonKeys created from Macrows Cloud are prefixed with mcr_. Public project write calls require readwrite keys.
- Only projects listed on a key are accessible for that key.
- Project IDs and table IDs are required UUIDs.
REST response envelope
Endpoint payload. The response field tables below describe the contents of this object.
metaobjectResponse metadata returned by REST endpoints.
Response metadata returned by REST endpoints.
Current REST API version. Today this is v1.
Request identifier. Matches the X-Request-ID response header.
List projects
/api/v1/public/projectsList all projects that this API key can read.
data fields
projectsobject[]Projects the API key can read.
Projects the API key can read.
Cloud project UUID.
Display name of the project.
curl -H "Authorization: Bearer $MACROWS_API_KEY" \
https://www.macrows.app/api/v1/public/projectsList tables
/api/v1/public/projects/{projectId}/tablesList all tables for one project.
data fields
Cloud project UUID used in the request.
Project version number. Reuse in write calls.
tablesobject[]Available tables in the project.
Available tables in the project.
Table UUID.
Display name.
Number of fields.
Number of rows currently saved.
curl -H "Authorization: Bearer $MACROWS_API_KEY" \
https://www.macrows.app/api/v1/public/projects/$PROJECT_ID/tablesGet table
/api/v1/public/projects/{projectId}/tables/{tableId}Read table rows and table definition with optional pagination.
Query params
Rows per page. Defaults to 100, maximum 500.
Offset inside the result set. Defaults to 0.
data fields
Cloud project UUID used in request.
Project version number.
tableobjectTable structure and metadata.
Table structure and metadata.
Table UUID.
Display name.
Rows in the table.
Number of fields.
Field definitions for the table.
pageobjectPagination block for rows.
Pagination block for rows.
Current offset.
Page size.
Next offset if more rows exist.
Total row count in table.
Returned rows in this page.
curl -H "Authorization: Bearer $MACROWS_API_KEY" \
"https://www.macrows.app/api/v1/public/projects/$PROJECT_ID/tables/$TABLE_ID?limit=10&offset=0"Append rows
/api/v1/public/projects/{projectId}/tables/{tableId}/rowsAppend one or more rows. Always send latestVersion from read response inexpectedVersion.
Request body
Latest project version from data.latestVersion in a read response. Required for all writes.
rowsobject[]requiredRows to append. Send 1 to 500 rows per request. Keys are table field IDs.
Rows to append. Send 1 to 500 rows per request. Keys are table field IDs.
Map of fieldId to string, number, boolean, null, or string[] value.
Writable values
text, number, boolean, singleSelect, multiSelect, date, email, and url can be written.
linkedRecord, lookup, button, formula, createdAt, and updatedAt cannot be written through the public API.
Use null or an empty string to clear a cell. string[] is accepted for select values.
Values starting with = are rejected by public write endpoints.
Single-select and multi-select values must match existing option labels.
data fields
New project version after write.
Updated project metadata including id, name, rowCount, tableCount, latestVersion, role, and edit capability flags.
curl -X POST 'https://www.macrows.app/api/v1/public/projects/$PROJECT_ID/tables/$TABLE_ID/rows' \
-H "Authorization: Bearer $MACROWS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"expectedVersion": 1,
"rows": [
{
"cells": {
"FIELD_ID": "value"
}
}
]
}'Update rows
/api/v1/public/projects/{projectId}/tables/{tableId}/rowsUpdate existing records. IDs in the project are required in the body.
Request body
Latest project version from data.latestVersion in a read response. Required for all writes.
updatesobject[]requiredExisting cells to update. Send 1 to 1000 updates per request.
Existing cells to update. Send 1 to 1000 updates per request.
UUID of target field.
UUID of row to edit.
New value to write.
Writable values
text, number, boolean, singleSelect, multiSelect, date, email, and url can be written.
linkedRecord, lookup, button, formula, createdAt, and updatedAt cannot be written through the public API.
Use null or an empty string to clear a cell. string[] is accepted for select values.
Values starting with = are rejected by public write endpoints.
Single-select and multi-select values must match existing option labels.
data fields
New project version after write.
Updated project metadata including id, name, rowCount, tableCount, latestVersion, role, and edit capability flags.
curl -X PATCH 'https://www.macrows.app/api/v1/public/projects/$PROJECT_ID/tables/$TABLE_ID/rows' \
-H "Authorization: Bearer $MACROWS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"expectedVersion": 1,
"updates": [{
"fieldId": "FIELD_ID",
"recordId": "RECORD_ID",
"value": "updated text"
}]
}'MCP endpoint
/api/v1/mcpJSON-RPC endpoint for MCP-compatible tooling. Browser calls must use the same origin as the request URL.
Available tools
Read table summaries for a project.
Read one table's fields and paginated records. Supports limit up to 500 and offset.
Append 1 to 500 rows. Requires a readwrite key and expectedVersion.
Update 1 to 1000 existing cells. Requires a readwrite key and expectedVersion.
tools/list response fields
Protocol version.
Request id.
Returned tools and table-access capabilities.
curl -X POST 'https://www.macrows.app/api/v1/mcp' \
-H "Authorization: Bearer $MACROWS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'Try it now
Paste one of your API keys to send real requests. Use a read key first with list projects and list tables. Use write keys for append/update.
Request path
/api/v1/public/projectsExample command
curl -X GET 'https://www.macrows.app/api/v1/public/projects'
Rate limits
Current limits
120 requests per minute per API key in one shared bucket.
Reads, writes, and MCP calls all increment the same per-key counter.
Errors
Common responses
Invalid request, invalid UUID, invalid JSON, invalid cell value, read-only field, duplicate cell update, or missing record.
Missing or invalid API key (`missing_api_key`, `invalid_api_key`).
Wrong key scope, missing project scope, inactive key owner, or invalid MCP browser origin.
Table or project resource not found.
Project version changed; refresh latestVersion before retrying writes.
Generated change payload is too large.
Rate-limited by key bucket; retry after delay.