{"info":{"_postman_id":"66dd5220-254f-4f88-958f-d2f7ac2dc3a4","name":"Stackby Developer API -v1","description":"<html><head></head><body><h1 id=\"overview\">OVERVIEW</h1>\n<p>The Stackby API is a RESTful API.</p>\n<p>It provides you an easy way to access your stack's data programmatically. You can integrate your stack data with any external system.</p>\n<p>It works on REST semantics, uses JSON as an object response and standard HTTP codes to signal operation status.</p>\n<p>You can use Stackby API to -</p>\n<ul>\n<li><p>List rows</p>\n</li>\n<li><p>Create, Update and Delete rows</p>\n</li>\n<li><p>Get specific rows by it's ID</p>\n</li>\n</ul>\n<p><strong>Note:</strong> The Stackby API is now live and functioning. As we update and release newer versions of the API, we reserve the right to remove older APIs and functionality with a 4-week deprecation notice.</p>\n<p>While we continue to build this API and give our users and community better leverage to access Stackby data and connect to third party sources, we've also integrated with <a href=\"https://zapier.com/apps/stackby/integrations\">Zapier</a>, Make.com, Pabbly Connect, Integrately, Albato, SyncSpider, n8n.io and others.</p>\n<p>If you have any question, suggestion or use-case to share related to the API, please reach out to us on <a href=\"https://mailto:developers@stackby.com\">developers@stackby.com</a>. We really appreciate your feedback.</p>\n<h4 id=\"use-this-as-a-base_url---httpsstackbycomapi\">Use this as a {{base_url}} - <a href=\"https://stackby.com/api\">https://stackby.com/api</a></h4>\n<h1 id=\"rate-limits\">RATE LIMITS</h1>\n<p>The Stackby API is limited to <strong>5 requests per second per stack</strong>. If you exceed this rate limit, you will get 429 status code and need to wait for 30 seconds before subsequent requests will go through.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>PI Endpoint</strong></th>\n<th><strong>Limitation</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>List Records (GET)</td>\n<td>Results are paginated for calls that return more than 100 records. You can use <em><strong>offset</strong></em> parameter for fetching more records, multiple times.</td>\n</tr>\n<tr>\n<td>Update Rows (PATCH &amp; PUT)</td>\n<td>A maximum of 10 record objects to update can be passed in the records array in the request.</td>\n</tr>\n<tr>\n<td>Create Rows (POST)</td>\n<td>An array of up to 10 record objects can be passed.</td>\n</tr>\n<tr>\n<td>Delete Rows (DELETE)</td>\n<td>An array of up to 10 record IDs can be passed at a time.</td>\n</tr>\n</tbody>\n</table>\n</div><h1 id=\"authentication\">AUTHENTICATION</h1>\n<p>Stackby uses simple token based authentication system. To generate your API key, please visit your <a href=\"https://www.stackby.com/account\">Account settings</a> in Stackby. <strong>Please make sure to keep this API key safe</strong>, it carries all the information of your user account and it's underlying data.</p>\n<p>You have to provide the API key in the HTTP bearer token header by adding a new header key with x-api-key and adding your API key from your Stackby account. You'll then be able to call the data from your stack.</p>\n<p>All API requests must be authenticated and made over HTTPS.</p>\n<h1 id=\"error-codes\">ERROR CODES</h1>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Code</th>\n<th>Type</th>\n<th>Status</th>\n<th>Comment</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>200</td>\n<td>Success code</td>\n<td>OK</td>\n<td>Request completed successfully.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>User Error code</td>\n<td>Bad Request</td>\n<td>The request encoding is invalid; the request can't be parsed as a valid JSON.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>User Error code</td>\n<td>Unauthorized</td>\n<td>Accessing a protected resource without authorization or with invalid credentials.</td>\n</tr>\n<tr>\n<td>500</td>\n<td>Server Error code</td>\n<td>Internal Server error</td>\n<td>The server encountered an unexpected condition.</td>\n</tr>\n<tr>\n<td>502</td>\n<td>Server Error code</td>\n<td>Bad Gateway</td>\n<td>Stackby's servers are restarting or an unexpected outage is in progress. You should generally not receive this error, and requests are safe to retry.</td>\n</tr>\n<tr>\n<td>503</td>\n<td>Server Error code</td>\n<td>Service Unavailable</td>\n<td>The server could not process your request in time. The server could be temporarily unavailable, or it could have timed out processing your request. You should retry the request with backoffs.</td>\n</tr>\n</tbody>\n</table>\n</div></body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[{"content":"OVERVIEW","slug":"overview"},{"content":"RATE LIMITS","slug":"rate-limits"},{"content":"AUTHENTICATION","slug":"authentication"},{"content":"ERROR CODES","slug":"error-codes"}],"owner":"7317658","collectionId":"66dd5220-254f-4f88-958f-d2f7ac2dc3a4","publishedId":"SzmZbfQP","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"publishDate":"2026-01-27T12:26:03.000Z"},"item":[{"name":"List rows from table","id":"5d63ae05-501a-4f7a-9f26-18ed9b9fda24","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"api-key","value":"{{apiKey}}"},{"key":"Content-Type","value":"application/json"}],"url":"{{base_url}}/betav1/rowlist/{{stackId}}/{{tablename}}","description":"<p>You can bring your stack ID and Table ID from the URL of the stack. </p>\n<p>Returned rows do not bring any 'empty' values from the table. Eg. <strong>\" \", [ ] or false.</strong> </p>\n<p>You can filter, sort, and format the results with the following query parameters.</p>\n<p><strong>To use multiple filters, use the following format with and/or:</strong> </p>\n<p>toContains({Column Name 1},value) and/or toContains({Column Name2}, value)</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Action</th>\n<th>What it will do</th>\n<th>Details</th>\n<th>Example</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Filter</td>\n<td>Filter the records</td>\n<td>toContains,doesNotContain,equal,notEqual,isEmpty,isNotEmpty,greaterThan,greaterThanEqual,lessThan,lessThanEqual,isExactly,isAnyOf,fileName,fileType</td>\n<td>filter=toContains({Name},APP)</td>\n</tr>\n<tr>\n<td>Sort</td>\n<td>Sort the records</td>\n<td>Sort based on column types</td>\n<td>[{field: \"Name\", direction: \"desc\"}]</td>\n</tr>\n<tr>\n<td>View</td>\n<td>Get particular view</td>\n<td>Specify view name</td>\n<td>[view=Grid 2]</td>\n</tr>\n<tr>\n<td>maxrecord</td>\n<td>Maximum rows returned in the request</td>\n<td>100</td>\n<td>If maxRows is greater than pageSize (100 by default), you have to load multiple pages to reach this total.</td>\n</tr>\n<tr>\n<td>pageSize</td>\n<td>Number of rows returned in the request</td>\n<td>100</td>\n<td>Default is 100.</td>\n</tr>\n<tr>\n<td>offset</td>\n<td>Change the starting point</td>\n<td>Offset will help you to change starting point while reading the data</td>\n<td>For Example, If you want to read from row 5, use \"5\" as an offset</td>\n</tr>\n<tr>\n<td>latest</td>\n<td>Will give us rows sorted by latest changes</td>\n<td>Give value \"true\" and it will sort your data according to recent changes</td>\n<td></td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["betav1","rowlist","{{stackId}}","{{tablename}}"],"host":["{{base_url}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"5d63ae05-501a-4f7a-9f26-18ed9b9fda24"},{"name":"Update rows","id":"71d8163e-9fc6-4e5e-b0dc-60bbda1ce7fb","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PATCH","header":[{"key":"api-key","value":"{{apiKey}}"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\r\n\"records\":[{\r\n\"id\": \"rw1588158082070fb8b57\",\r\n\"field\": {\r\n\t\"Name\":\"Aiyazkhan\",\r\n\t\"Note\": \"Test the big test\",\r\n\t\"Phone\":\"9022114477\"\r\n\t}\r\n}]\r\n} "},"url":"{{base_url}}/betav1/rowupdate/{{stackId}}/{{tablename}}","description":"<p>To update rows in Stackby, issue a PATCH request to the endpoint. It will only update the fields you specify. </p>\n<p>You can request body should only include an array of 10 row objects. </p>\n<p>Each of these objects will have an ID property representing rowID and a field property, which contains all of the rows cell values by the column name.</p>\n<p>You can also update a single row at top. </p>\n","urlObject":{"path":["betav1","rowupdate","{{stackId}}","{{tablename}}"],"host":["{{base_url}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"71d8163e-9fc6-4e5e-b0dc-60bbda1ce7fb"},{"name":"Create Rows","id":"6042367b-9066-4812-90eb-1fe68d1af75a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"api-key","value":"{{apiKey}}"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n\"records\":[\n\t\t{\n\t\t\t\"field\": {\n\t\t\t\t\"Name\":\"test0505895\",\n\t\t\t\t\"Table 2\":\"4\"\n\t\t\t\t}\n\t\t}\n\t]\n}"},"url":"{{base_url}}/betav1/rowcreate/{{stackId}}/{{tablename}}","description":"<p>To create new rows in Stackby, issue a POST request to the endpoint. </p>\n<p>You can request body should only include an array of 10 row objects. </p>\n<p>Each of this request has a field, which contains all of the rows cell values by the column name. You can include as many field values. </p>\n<p>If there's a success, it will return an array of row objects which will uniquely identify the rows. </p>\n<p>You can also create a single row at top. </p>\n","urlObject":{"path":["betav1","rowcreate","{{stackId}}","{{tablename}}"],"host":["{{base_url}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"6042367b-9066-4812-90eb-1fe68d1af75a"},{"name":"Delete rows","id":"d5bbfd7d-7cfb-4ce7-842e-f769ea7884df","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[{"key":"api-key","value":"{{apiKey}}"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n\t\"records\":[\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\":\"rw158765476420559bb54\",\n\t\t\t\t\t\t\"field\": {\n\t\t\t\t\t\t\t\"Name\":\"test0505895\",\n\t\t\t\t\t\t\t\"Phone\":\"9999999999\",\n\t\t\t\t\t\t\t\"link\":[\"rw1562824087136c5b34e\"]\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\":\"rw15876547642202e2a4e\",\n\t\t\t\t\t\t\"field\": {\n\t\t\t\t\t\t\t\"Name\":\"test05055\",\n\t\t\t\t\t\t\t\"Notes\":\"long text test\",\n\t\t\t\t\t\t\t\"Phone\":\"9999999999\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t]\n}"},"url":"{{base_url}}/betav1/rowdelete/{{stackId}}/{{tablename}}?rowIds[]=rw15628240845663015b8&rowIds[]=rw158108273052769fbf5&rowIds[]=rw1581082815519928e93","description":"<p>To delete rows for your table, you can issue a DELETE request to the specified endpoint. </p>\n<p>You can delete up to 10 rows at a time, please make sure to include a URL encoded array. </p>\n<p>You can also delete a single row. </p>\n","urlObject":{"path":["betav1","rowdelete","{{stackId}}","{{tablename}}"],"host":["{{base_url}}"],"query":[{"key":"rowIds[]","value":"rw15628240845663015b8"},{"key":"rowIds[]","value":"rw158108273052769fbf5"},{"key":"rowIds[]","value":"rw1581082815519928e93"}],"variable":[]}},"response":[],"_postman_id":"d5bbfd7d-7cfb-4ce7-842e-f769ea7884df"},{"name":"Retrieve a particular row","id":"7014e11c-6854-42f3-8632-2e9c8fcf1910","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"api-key","value":"{{apiKey}}"},{"key":"Content-Type","value":"application/json"}],"url":"{{base_url}}/betav1/rowlist/{{stackId}}/{{tablename}}?rowIds[]=rw15628240845663015b8&rowIds[]=rw158108273052769fbf5&rowIds[]=rw1581082815519928e93y","description":"<p>To retrieve an existing row in the table, you can issue a GET request to the specified endpoint.</p>\n<p>Returned rows do not bring any 'empty' values from the table. Eg. <strong>\" \", [ ] or false.</strong></p>\n","urlObject":{"path":["betav1","rowlist","{{stackId}}","{{tablename}}"],"host":["{{base_url}}"],"query":[{"key":"rowIds[]","value":"rw15628240845663015b8"},{"key":"rowIds[]","value":"rw158108273052769fbf5"},{"key":"rowIds[]","value":"rw1581082815519928e93y"}],"variable":[]}},"response":[],"_postman_id":"7014e11c-6854-42f3-8632-2e9c8fcf1910"}]}