{"info":{"_postman_id":"2408d7d1-34cf-49dd-85fe-0677b6469baf","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><em><strong>Please note:</strong></em> <em>The old versions - betav1 and v0 will be deprecated by</em> <em><strong>June 30th, 2025.</strong></em> <em>Please move to the latest endpoint - v1.</em></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><strong>You can use Stackby API to -</strong></p>\n<ul>\n<li><p>List rows from a table</p>\n</li>\n<li><p>Bring new row from a viw</p>\n</li>\n<li><p>Get view lists</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<li><p>Upload files</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<p><strong>Use this as a {{base_url}}</strong> <strong>-</strong> <a href=\"https://stackby.com/api\">https://stackby.com/api</a></p>\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":"2408d7d1-34cf-49dd-85fe-0677b6469baf","publishedId":"2sAYkGLz1i","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"publishDate":"2025-03-21T12:18:57.000Z"},"item":[{"name":"List Rows from Table","id":"c7401df3-f53b-437f-87bf-b3a3ab1fac09","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"api-key","value":"{{apiKey}}"},{"key":"Content-Type","value":"application/json"}],"url":"{{base_url}}/v1/rowlist/{{stackId}}/{{tablename}}?latest=true","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>Row</td>\n<td>Row List</td>\n<td>Get Specify Row</td>\n<td>rowIds[]=rw17054017479362efee7</td>\n</tr>\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  <br />- Use \"&amp;\" when there is more than one sort Ex :- <code>sort[0][field]=firstName&amp;sort[0][direction]=desc&amp;sort[1][field]=lastName&amp;sort[1][direction]=desc</code>  <br />- firstName is the field name</td>\n<td>sort[0][field]=firstName&amp;sort[0][direction]=desc&amp;sort[1][field]=lastName&amp;sort[1][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":["v1","rowlist","{{stackId}}","{{tablename}}"],"host":["{{base_url}}"],"query":[{"key":"latest","value":"true"}],"variable":[]}},"response":[],"_postman_id":"c7401df3-f53b-437f-87bf-b3a3ab1fac09"},{"name":"New Row in View","id":"44269b4a-3317-4f74-8d2b-c0ae8c41b6a7","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"api-key","value":"3eDeFlpAAVVe5OMH","type":"text"}],"url":"{{base_url}}/v1/newrows/stqYn5AvM8wJP1pfjw/tbmtIz6IUXZ1ogNJeB/vw1693302001816506de2?maxRecord=1","description":"<p><strong>New row in View</strong></p>\n<ul>\n<li><p>Endpoint: {{base_url}}/v1/newrows/{StackID}/{TableID}/{ViewID}</p>\n</li>\n<li><p>Find {ViewID} From View List API</p>\n</li>\n<li><p>This is a dynamic URL where {{base_url}} should be replaced with the base URL of the Stackby API, and {StackID}, {TableID}, and {ViewID} should be replaced with specific identifiers corresponding to a Stack, Table, and View in Stackby.</p>\n</li>\n<li><p>Behavior:</p>\n<ul>\n<li><p>When users access this endpoint with a query parameter maxRecord, they can specify a limit for the number of records returned in the API response.</p>\n</li>\n<li><p>Example 1: maxRecord=5 - This limits the response to a maximum of 5 records.</p>\n</li>\n<li><p>There's a predefined maximum limit of 15 records when users do not specify a maxRecord value.</p>\n</li>\n</ul>\n</li>\n</ul>\n<p>This API allows users to interact with Stackby by fetching data from a specific Stack, Table, and View, and they have the flexibility to control the number of records returned using the maxRecord parameter.</p>\n","urlObject":{"path":["v1","newrows","stqYn5AvM8wJP1pfjw","tbmtIz6IUXZ1ogNJeB","vw1693302001816506de2"],"host":["{{base_url}}"],"query":[{"key":"maxRecord","value":"1"}],"variable":[]}},"response":[],"_postman_id":"44269b4a-3317-4f74-8d2b-c0ae8c41b6a7"},{"name":"Retrieve a Particular Row","id":"cab48a5a-5b89-4b6b-8de9-04d9902f5326","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"api-key","value":"{{apiKey}}"},{"key":"Content-Type","value":"application/json"}],"url":"{{base_url}}/v1/rowlist/{{stackId}}/{{tablename}}?rowIds[]=rw17054017479362efee7","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":["v1","rowlist","{{stackId}}","{{tablename}}"],"host":["{{base_url}}"],"query":[{"key":"rowIds[]","value":"rw17054017479362efee7"},{"disabled":true,"key":"rowIds[]","value":"rw158108273052769fbf5"},{"disabled":true,"key":"rowIds[]","value":"rw1581082815519928e93y"}],"variable":[]}},"response":[],"_postman_id":"cab48a5a-5b89-4b6b-8de9-04d9902f5326"},{"name":"View List","id":"fab09ace-42b1-4290-88ba-0ab857bc4871","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"api-key","value":"vuOnHILNr16LCJer","type":"text"}],"url":"{{base_url}}/v1/viewlist/stqYn5AvM8wJP1pfjw/tbmtIz6IUXZ1ogNJeB","description":"<p><strong>View list:</strong></p>\n<p><strong>Endpoint:</strong> <a href=\"https://stackby.com/api/v2/public/viewlist/%7BstackID%7D/%7BtableID%7D\"><b>https://stackby.com/api/v1/viewlist/{stackID}/{tableID}</b></a></p>\n<p><strong>This is the URL endpoint for Stackby's API.</strong></p>\n<p>Headers:</p>\n<p>Header Name: api-key</p>\n<p>This header is required and should contain your API key for authentication.</p>\n<p>Header Name: url</p>\n<p>This header should contain the values for stackID and tableID in the format stackID/tableID.</p>\n<p>When making a request to this endpoint, you need to include these headers for authentication and specify the stackID and tableID in the url header to access the specified Stackby stack and table you want to interact with.</p>\n","urlObject":{"path":["v1","viewlist","stqYn5AvM8wJP1pfjw","tbmtIz6IUXZ1ogNJeB"],"host":["{{base_url}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"fab09ace-42b1-4290-88ba-0ab857bc4871"},{"name":"Create Rows","id":"4a91669b-d19a-4c8f-b15e-482f2649e6ea","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\":\"test0505896\",\n\t\t\t\t\"Notes\":\"4\",\n                \"Table 2\": \"New Test Row\"\n\t\t\t\t}\n\t\t}\n\t]\n}"},"url":"{{base_url}}/v1/rowcreate/{{stackId}}/{{tablename}}","description":"<p><strong>Endpoint Details:</strong></p>\n<p><strong>{{base_url}}: Replace this placeholder with the base URL of the Stackby API.</strong></p>\n<p><strong>{StackID}: Replace this with the identifier of the Stack where the table is located.</strong></p>\n<p><strong>{Table Name}: Replace this with the name or identifier of the specific table you want to add new rows to.</strong></p>\n<p><strong>Creating New Rows via POST Request:</strong></p>\n<p><strong>When issuing a POST request to this endpoint, you can create new rows in Stackby.</strong></p>\n<p>**Request Body:<br />**</p>\n<p>**The request body should consist of an array containing up to 10 row objects. Each row object should have the following properties:<br />**</p>\n<p><strong>field: This property contains all the cell values for that row, organized by column name. You can specify as many column values as needed to populate the new row.</strong></p>\n<p><strong>Creating a Single Row at the Top:</strong></p>\n<p><strong>If you wish to create a single row that is specifically positioned at the top of the table, you can include that row's information in the request body.</strong></p>\n<p><strong>Response:</strong></p>\n<p><strong>Upon a successful creation of the rows, the API will return an array of row objects that uniquely identify the newly created rows.</strong></p>\n","urlObject":{"path":["v1","rowcreate","{{stackId}}","{{tablename}}"],"host":["{{base_url}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"4a91669b-d19a-4c8f-b15e-482f2649e6ea"},{"name":"Update rows","id":"b8b7e5ce-5238-4464-8aca-31ff39c9cef2","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\": \"rw17054017479362efee7\",\r\n\"field\": {\r\n\t\"Name\":\"Aiyazkhan\",\r\n\t\"Attachments\": \"https://tazlink.com/i/QpPkNa+,https://tazlink.com/i/uQSpSL+\"\r\n\t}\r\n}]\r\n}"},"url":"{{base_url}}/v1/rowupdate/{{stackId}}/{{tablename}}","description":"<p><strong>Endpoint Details:</strong></p>\n<p><strong>{{base_url}}/api/betav1/rowupdate/{StackID}/{Table Name}</strong></p>\n<p><strong>{{base_url}}: Replace this placeholder with the base URL of the Stackby API.</strong></p>\n<p><strong>{StackID}: Replace this with the identifier of the Stack where the table is located.</strong></p>\n<p><strong>{Table Name}: Replace this with the name or identifier of the specific table you want to update rows in.</strong></p>\n<p>**Updating Rows via PATCH Request:<br />**</p>\n<p><strong>When issuing a PATCH request to this endpoint, it will update only the fields that you specify. This provides granular control over the updates you want to perform.</strong></p>\n<p><strong>Request Body:</strong></p>\n<p>**The request body should consist of an array containing up to 10 row objects. Each row object should have the following properties:<br />**</p>\n<p><strong>ID: This property represents the rowID of the row you want to update.</strong></p>\n<p>**field: This property contains all the cell values for that row, organized by column name. You can specify which columns you want to update and provide the new values accordingly.<br />**</p>\n<p><strong>Updating a Single Row at the Top:</strong></p>\n<p><strong>If you wish to update a single row specifically positioned at the top of the table, you can include that row's information in the request body.</strong></p>\n<p><strong>This document outlines the process for updating rows in Stackby using the PATCH request, specifying the fields you want to modify, and provides guidance on structuring the request body for updates, including updating a single row at the top.</strong></p>\n","urlObject":{"path":["v1","rowupdate","{{stackId}}","{{tablename}}"],"host":["{{base_url}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"b8b7e5ce-5238-4464-8aca-31ff39c9cef2"},{"name":"Delete rows","id":"4837d4a4-ecf6-46f0-8de7-e8197f5a8d42","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}}/v1/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":["v1","rowdelete","{{stackId}}","{{tablename}}"],"host":["{{base_url}}"],"query":[{"key":"rowIds[]","value":"rw15628240845663015b8"},{"key":"rowIds[]","value":"rw158108273052769fbf5"},{"key":"rowIds[]","value":"rw1581082815519928e93"}],"variable":[]}},"response":[],"_postman_id":"4837d4a4-ecf6-46f0-8de7-e8197f5a8d42"},{"name":"File Upload","id":"7815ed05-f728-4801-9a4d-ea7760d4cfbf","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"api-key","value":"wNYy6qWh2MMAFyRz","type":"text"}],"body":{"mode":"formdata","formdata":[{"key":"image","type":"file","src":["XvFFOYxaf/IMG-20240812-WA0003.jpg","7ohxz3EeE/download.png"]}]},"url":"{{base_url}}/v1/uploads","description":"<p>If you want to upload a file, then you have to run the file upload API</p>\n<p>Note: limit per call is max 5 mb.</p>\n","urlObject":{"path":["v1","uploads"],"host":["{{base_url}}"],"query":[],"variable":[]}},"response":[{"id":"8f135e19-99f1-47d0-9969-15851663fa65","name":"File Upload","originalRequest":{"method":"POST","header":[{"key":"api-key","value":"wNYy6qWh2MMAFyRz","type":"text"},{"key":"Content-Type","value":"","type":"text","disabled":true}],"body":{"mode":"formdata","formdata":[{"key":"image","type":"file","src":["XvFFOYxaf/IMG-20240812-WA0003.jpg","7ohxz3EeE/download.png"]}]},"url":"https://stackby.com/api/v1/uploads"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Tue, 01 Oct 2024 11:23:46 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"Server","value":"nginx/1.14.0 (Ubuntu)"},{"key":"Vary","value":"Accept-Encoding"},{"key":"Vary","value":"Accept-Encoding"},{"key":"X-Powered-By","value":"Express"},{"key":"Access-Control-Allow-Methods","value":"DELETE,GET,OPTIONS,PATCH,POST,PUT"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Credentials","value":"true"},{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept, x-api-key, api-key,csrf-token"},{"key":"ETag","value":"W/\"19e-AiwpLXLaL0dMYFuVAk/Zw+YS06k\""},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"Referrer-Policy","value":"no-referrer"},{"key":"Content-Encoding","value":"gzip"}],"cookie":[],"responseTime":null,"body":"[\n    {\n        \"container\": \"stackbybucketprod\",\n        \"url\": \"https://cdn.filestackcontent.com/OXv8GisSLeS3p1S8vKOQ\",\n        \"filename\": \"IMG-20240812-WA0003.jpg\",\n        \"key\": \"2LBPTOJNTTaGsoayeebW_IMG-20240812-WA0003.jpg\",\n        \"type\": \"image/jpeg\",\n        \"size\": 8841\n    },\n    {\n        \"container\": \"stackbybucketprod\",\n        \"url\": \"https://cdn.filestackcontent.com/ogqCglClShicD2Jkp8gL\",\n        \"filename\": \"download.png\",\n        \"key\": \"5tfb4vcCQMuPNpaLHGIJ_download.png\",\n        \"type\": \"image/png\",\n        \"size\": 4928\n    }\n]"}],"_postman_id":"7815ed05-f728-4801-9a4d-ea7760d4cfbf"},{"name":"Column Create","id":"429b18ce-5fb4-4740-8a96-e2c41254aa48","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"api-key","value":"{{api-key}}","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"name\": \"Column Name\",\r\n    \"stackId\": \"STACK_ID\",\r\n    \"tableId\": \"TABLE_ID\",\r\n    \"viewId\": \"VIEW_ID\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{base_url}}/api/v1/columnCreate/{{type}}","description":"<h1 id=\"authentication\"><strong>Authentication</strong></h1>\n<p>All APIs require a Stackby API Key.</p>\n<h6 id=\"header\"><strong>Header</strong></h6>\n<p><strong>api-key: YOUR_API_KEY</strong></p>\n<h1 id=\"base-configuration\"><strong>Base Configuration</strong></h1>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>FIeld</strong></th>\n<th><strong>Value</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Base URL</td>\n<td><a href=\"https://stackby.com\">https://stackby.com</a></td>\n</tr>\n<tr>\n<td>Endpoint</td>\n<td>/api/v1/columnCreate/:type</td>\n</tr>\n<tr>\n<td>Method</td>\n<td>POST</td>\n</tr>\n<tr>\n<td>Content-Type</td>\n<td>application/json</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"common-request-body-required-for-all-column-types\"><strong>Common Request Body (Required for All Column Types)</strong></h2>\n<p><strong>{</strong></p>\n<p>\"name\": \"Column Name\",</p>\n<p>\"stackId\": \"STACK_ID\",</p>\n<p><strong>\"tableId\": \"TABLE_ID\",</strong></p>\n<p><strong>\"viewId\": \"VIEW_ID\"</strong></p>\n<p><strong>}</strong></p>\n<h2 id=\"how-to-get-ids\"><strong>How to get IDs</strong></h2>\n<ul>\n<li><p><strong>stackId → From Stack List API</strong></p>\n</li>\n<li><p><strong>tableId → From Table List API</strong></p>\n</li>\n<li><p><strong>viewId → From View List API</strong></p>\n</li>\n</ul>\n<h3 id=\"basic-text-columns\"><strong>Basic Text Columns</strong></h3>\n<h5 id=\"short-text\"><strong>Short Text</strong></h5>\n<ul>\n<li><strong>type: shortText</strong></li>\n</ul>\n<h5 id=\"long-text\"><strong>Long Text</strong></h5>\n<ul>\n<li><strong>type: longText</strong></li>\n</ul>\n<h3 id=\"collaborator-columns\"><strong>Collaborator Columns</strong></h3>\n<h5 id=\"single-collaborator\"><strong>Single Collaborator</strong></h5>\n<ul>\n<li><strong>type: singleCollaborator</strong></li>\n</ul>\n<h5 id=\"multiple-collaborator\"><strong>Multiple Collaborator</strong></h5>\n<ul>\n<li><strong>type: multipleCollaborator</strong></li>\n</ul>\n<h3 id=\"option-columns\"><strong>Option Columns</strong></h3>\n<h5 id=\"single-option\"><strong>Single Option</strong></h5>\n<ul>\n<li>type: singleOption</li>\n</ul>\n<p>body: {</p>\n<p><strong>\"options\": [\"Option A\", \"Option B\", \"Option C\"]</strong></p>\n<p><strong>}</strong></p>\n<h5 id=\"multiple-options\"><strong>Multiple Options</strong></h5>\n<ul>\n<li>type: multipleOptions</li>\n</ul>\n<p>body: {</p>\n<p><strong>\"options\": [\"Option A\", \"Option B\", \"Option C\"]</strong></p>\n<p><strong>}</strong></p>\n<h3 id=\"file--boolean\"><strong>File &amp; Boolean</strong></h3>\n<h5 id=\"attachment\"><strong>Attachment</strong></h5>\n<ul>\n<li><strong>type: attachment</strong></li>\n</ul>\n<h5 id=\"checkbox\"><strong>Checkbox</strong></h5>\n<ul>\n<li><em>type: checkbox</em></li>\n</ul>\n<h3 id=\"date--time\"><strong>Date &amp; Time</strong></h3>\n<h5 id=\"date-and-time\"><strong>Date and Time</strong></h5>\n<ul>\n<li><strong>type: dateAndTime</strong></li>\n</ul>\n<p><strong>body: {</strong></p>\n<p><strong>\"isTimeInclude\": true,</strong></p>\n<p><strong>\"timeFormat\": \"24\"</strong></p>\n<p>}<br />Note: timeFormat values: \"12\" or \"24\"</p>\n<h3 id=\"numeric--contact-fields\"><strong>Numeric &amp; Contact Fields</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Column</strong></th>\n<th><strong>Type</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Number</td>\n<td>number</td>\n</tr>\n<tr>\n<td>Phone Number</td>\n<td>phoneNumber</td>\n</tr>\n<tr>\n<td>Duration</td>\n<td>duration</td>\n</tr>\n<tr>\n<td>Time</td>\n<td>time</td>\n</tr>\n<tr>\n<td>Rating</td>\n<td>rating</td>\n</tr>\n<tr>\n<td>Email</td>\n<td>email</td>\n</tr>\n<tr>\n<td>URL</td>\n<td>url</td>\n</tr>\n<tr>\n<td>Barcode</td>\n<td>barcode</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"system--auto-fields\"><strong>System &amp; Auto Fields</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Column</strong></th>\n<th><strong>Type</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Formula</td>\n<td>formula</td>\n</tr>\n<tr>\n<td>Created Time</td>\n<td>createdTime</td>\n</tr>\n<tr>\n<td>Updated Time</td>\n<td>updatedTime</td>\n</tr>\n<tr>\n<td>Created By</td>\n<td>createdBy</td>\n</tr>\n<tr>\n<td>Updated By</td>\n<td>updatedBy</td>\n</tr>\n<tr>\n<td>Auto Number</td>\n<td>autoNumber</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"advanced-field-types\"><strong>Advanced Field Types</strong></h3>\n<h5 id=\"check-list\"><strong>Check List</strong></h5>\n<ul>\n<li><strong>type: checkList</strong></li>\n</ul>\n<h5 id=\"location\"><strong>Location</strong></h5>\n<ul>\n<li><strong>type: location</strong></li>\n</ul>\n<h3 id=\"signature\"><strong>Signature</strong></h3>\n<ul>\n<li><strong>type: signature</strong>EndFragment</li>\n</ul>\n<h3 id=\"link-columns\"><strong>Link Columns</strong></h3>\n<h5 id=\"link-to-another-table\"><strong>Link to Another Table</strong></h5>\n<ul>\n<li>type: link</li>\n</ul>\n<p>body: {</p>\n<p><strong>\"name\": \"Linked Table\",</strong></p>\n<p><strong>\"stackId\": \"STACK_ID\",</strong></p>\n<p><strong>\"tableId\": \"CURRENT_TABLE_ID\",</strong></p>\n<p><strong>\"viewId\": \"VIEW_ID\",</strong></p>\n<p><strong>\"linkToTableId\": \"FOREIGN_TABLE_ID\",</strong></p>\n<p><strong>\"linkToTableViewId\": \"FOREIGN_VIEW_ID\"</strong></p>\n<p><strong>}</strong></p>\n<h3 id=\"🔍-lookup-column\"><strong>🔍 Lookup Column</strong></h3>\n<ul>\n<li>type: lookup</li>\n</ul>\n<p>body: {</p>\n<p><strong>\"name\": \"Lookup Column\",</strong></p>\n<p><strong>\"stackId\": \"STACK_ID\",</strong></p>\n<p><strong>\"tableId\": \"TABLE_ID\",</strong></p>\n<p><strong>\"viewId\": \"VIEW_ID\",</strong></p>\n<p><strong>\"linkToTableId\": \"FOREIGN_TABLE_ID\",</strong></p>\n<p><strong>\"linkColumnId\": \"LINK_COLUMN_ID\",</strong></p>\n<p><strong>\"linkedColumnId\": \"FOREIGN_COLUMN_ID\"</strong></p>\n<p><strong>}</strong></p>\n<h3 id=\"lookup-count\"><strong>Lookup Count</strong></h3>\n<ul>\n<li>type: lookupCount</li>\n</ul>\n<p>body: {</p>\n<p><strong>\"name\": \"Lookup Count\",</strong></p>\n<p><strong>\"stackId\": \"STACK_ID\",</strong></p>\n<p><strong>\"tableId\": \"TABLE_ID\",</strong></p>\n<p><strong>\"viewId\": \"VIEW_ID\",</strong></p>\n<p><strong>\"linkColumnId\": \"LINK_COLUMN_ID\",</strong></p>\n<p><strong>\"linkToTableId\": \"FOREIGN_TABLE_ID\"</strong></p>\n<p><strong>}</strong></p>\n<h3 id=\"aggregation-column\"><strong>Aggregation Column</strong></h3>\n<ul>\n<li>type: aggregation</li>\n</ul>\n<p>body: {</p>\n<p><strong>\"name\": \"Aggregation Column\",</strong></p>\n<p><strong>\"stackId\": \"STACK_ID\",</strong></p>\n<p><strong>\"tableId\": \"TABLE_ID\",</strong></p>\n<p><strong>\"viewId\": \"VIEW_ID\",</strong></p>\n<p><strong>\"linkColumnId\": \"LINK_COLUMN_ID\",</strong></p>\n<p><strong>\"linkToTableId\": \"FOREIGN_TABLE_ID\",</strong></p>\n<p><strong>\"linkedColumnId\": \"FOREIGN_COLUMN_ID\",</strong></p>\n<p><strong>\"linkToTableViewId\": \"FOREIGN_VIEW_ID\"</strong></p>\n<p><em>}</em></p>\n","urlObject":{"path":["api","v1","columnCreate","{{type}}"],"host":["{{base_url}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"429b18ce-5fb4-4740-8a96-e2c41254aa48"},{"name":"Column list","id":"45ee61ff-32fa-458a-86a9-947386a21269","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{base_url}}/api/v1/columnList/{{stackId}}/{{tableId}}","description":"<ul>\n<li>Returns all columns of a table.</li>\n</ul>\n<h3 id=\"authentication\"><strong>Authentication</strong></h3>\n<ul>\n<li>All requests must include an API key.</li>\n</ul>\n<h3 id=\"headers\"><strong>Headers</strong></h3>\n<ul>\n<li><p><strong>api-key:</strong> YOUR_API_KEY</p>\n</li>\n<li><p><strong>Content-Type: application/json</strong></p>\n</li>\n</ul>\n<p><strong>Method:</strong> GET<br /><strong>Endpoint:</strong> {{base_url}}/api/v1/columnList/{{stackId}}/{{tableId}}</p>\n","urlObject":{"path":["api","v1","columnList","{{stackId}}","{{tableId}}"],"host":["{{base_url}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"45ee61ff-32fa-458a-86a9-947386a21269"},{"name":"Column delete","id":"49172f3b-8473-4b1e-b654-082ac6cf99eb","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"body":{"mode":"raw","raw":"{\r\n    \"tableId\": \"TABLE_ID\",\r\n    \"viewId\": \"VIEW_ID\",\r\n    \"columnId\": \"COLUMN_ID\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{base_url}}/api/v1/columnDelete/{{stackId}}","description":"<ul>\n<li>Deletes a column from a table.</li>\n</ul>\n<h3 id=\"authentication\"><strong>Authentication</strong></h3>\n<ul>\n<li>All requests must include an API key.</li>\n</ul>\n<h3 id=\"headers\"><strong>Headers</strong></h3>\n<ul>\n<li><p><strong>api-key:</strong> YOUR_API_KEY</p>\n</li>\n<li><p><strong>Content-Type: application/json</strong></p>\n</li>\n</ul>\n<p><strong>Method:</strong> DELETE<br /><strong>Endpoint:</strong> {{base_url}}/api/v1/columnDelete/{{stackId}}</p>\n<p>Request body<br />{</p>\n<p>\"tableId\": \"TABLE_ID\",</p>\n<p>\"viewId\": \"VIEW_ID\",</p>\n<p>\"columnId\": \"COLUMN_ID\"</p>\n<p>}</p>\n","urlObject":{"path":["api","v1","columnDelete","{{stackId}}"],"host":["{{base_url}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"49172f3b-8473-4b1e-b654-082ac6cf99eb"},{"name":"Stack create","id":"d146570d-88b5-4ac6-bc38-334b49b0db2f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"api-key","value":"{{api-key}}","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"name\": \"My Stack\",\r\n    \"color\": \"#4F46E5\",\r\n    \"icon\": \"📊\",\r\n    \"workspaceId\": \"WORKSPACE_ID\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{base_url}}/api/v1/stack/create","description":"<ul>\n<li><p><strong>These API allow developers to create Stacks in Stackby.</strong></p>\n</li>\n<li><p>Creates a new stack inside a workspace.</p>\n</li>\n</ul>\n<h2 id=\"authentication\"><strong>Authentication</strong></h2>\n<ul>\n<li><strong>All requests must include an API key.</strong></li>\n</ul>\n<h3 id=\"headers\"><strong>Headers</strong></h3>\n<ul>\n<li><p><strong>api-key: YOUR_API_KEY</strong></p>\n</li>\n<li><p><strong>Content-Type: application/json</strong></p>\n</li>\n</ul>\n<p><strong>Method:</strong> POST<br /><strong>Endpoint:</strong> {{base_url}}/api/v1/stack/create</p>\n<h3 id=\"request-body\"><strong>Request Body</strong></h3>\n<p>{</p>\n<p>\"name\": \"My Stack\",</p>\n<p>\"color\": \"#4F46E5\",</p>\n<p>\"icon\": \"📊\",</p>\n<p>\"workspaceId\": \"WORKSPACE_ID\"</p>\n<p>}</p>\n<h3 id=\"field-description\">Field Description</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Field</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>name</td>\n<td>Stack Name</td>\n</tr>\n<tr>\n<td>color</td>\n<td>Stack color hex code</td>\n</tr>\n<tr>\n<td>icon</td>\n<td>Emoji or icon identifier</td>\n</tr>\n<tr>\n<td>workspaceId</td>\n<td>Workspace ID</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["api","v1","stack","create"],"host":["{{base_url}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"d146570d-88b5-4ac6-bc38-334b49b0db2f"},{"name":"Stack list","id":"873bb75c-52ca-4d9b-b57b-06469a4d8378","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"workspaceId\": \"WORKSPACE_ID\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{base_url}}/api/v1/stackList","description":"<ul>\n<li>Return all stacks in a workspace.</li>\n</ul>\n<h2 id=\"authentication\"><strong>Authentication</strong></h2>\n<ul>\n<li><strong>All requests must include an API key.</strong></li>\n</ul>\n<h3 id=\"headers\"><strong>Headers</strong></h3>\n<ul>\n<li><p><strong>api-key: YOUR_API_KEY</strong></p>\n</li>\n<li><p><strong>Content-Type: application/json</strong></p>\n</li>\n</ul>\n<p><strong>Method:</strong> POST<br /><strong>Endpoint:</strong> {{base_url}}/api/v1/stackList</p>\n<h3 id=\"request-body\"><strong>Request Body</strong></h3>\n<p>{</p>\n<p>\"workspaceId\": \"WORKSPACE_ID\"</p>\n<p>}</p>\n","urlObject":{"path":["api","v1","stackList"],"host":["{{base_url}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"873bb75c-52ca-4d9b-b57b-06469a4d8378"},{"name":"Stack delete","id":"1fe14f60-c2a5-4532-9d3f-035cd0d65093","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"url":"{{base_url}}/api/v1/stackDelete/{{stackId}}","description":"<ul>\n<li>Deletes a stack permanently.</li>\n</ul>\n<h2 id=\"authentication\"><strong>Authentication</strong></h2>\n<ul>\n<li><strong>All requests must include an API key.</strong></li>\n</ul>\n<h3 id=\"headers\"><strong>Headers</strong></h3>\n<ul>\n<li><p><strong>api-key: YOUR_API_KEY</strong></p>\n</li>\n<li><p><strong>Content-Type: application/json</strong></p>\n</li>\n</ul>\n<p><strong>Method:</strong> POST<br /><strong>Endpoint:</strong> <strong>{{base_url}}/api/v1/stackDelete/{{stackId}}</strong></p>\n","urlObject":{"path":["api","v1","stackDelete","{{stackId}}"],"host":["{{base_url}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"1fe14f60-c2a5-4532-9d3f-035cd0d65093"},{"name":"Table create","id":"2e9cb78b-01e8-4b16-9d57-28598b0e0af7","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"api-key","value":"{{api-key}}","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"name\": \"Tasks\",\r\n    \"type\": \"default\",\r\n    \"data\": \"\",\r\n    \"copyTableData\": false,\r\n    \"copyTable\": false\r\n}","options":{"raw":{"language":"json"}}},"url":"{{base_url}}/api/v1/tableCreate/{stackId}","description":"<ul>\n<li>Creates a new table inside a stack.</li>\n</ul>\n<h2 id=\"authentication\"><strong>Authentication</strong></h2>\n<ul>\n<li>All requests must include an API key.</li>\n</ul>\n<h3 id=\"headers\"><strong>Headers</strong></h3>\n<ul>\n<li><p><strong>api-key:</strong> YOUR_API_KEY</p>\n</li>\n<li><p><strong>Content-Type: application/json</strong></p>\n</li>\n</ul>\n<p><strong>Method:</strong> POST<br /><strong>Endpoint:</strong> {{base_url}}/api/v1/tableCreate/{{stackId}}</p>\n<h3 id=\"request-body\">Request body</h3>\n<p><strong>{</strong></p>\n<p><strong>\"name\": \"Tasks\",</strong></p>\n<p><strong>\"type\": \"default\",</strong></p>\n<p><strong>\"data\": \"\",</strong></p>\n<p><strong>\"copyTableData\": false,</strong></p>\n<p><strong>\"copyTable\": false</strong></p>\n<p><strong>}</strong></p>\n<p>Field Description</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Field</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>name</td>\n<td>Table Name</td>\n</tr>\n<tr>\n<td>type</td>\n<td>Table type</td>\n</tr>\n<tr>\n<td>data</td>\n<td>Initial data (optional)</td>\n</tr>\n<tr>\n<td>copyTableData</td>\n<td>Copy data from another table</td>\n</tr>\n<tr>\n<td>copyTable</td>\n<td>Copy table structure</td>\n</tr>\n<tr>\n<td></td>\n<td></td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["api","v1","tableCreate","{stackId}"],"host":["{{base_url}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"2e9cb78b-01e8-4b16-9d57-28598b0e0af7"},{"name":"Table list","id":"191b3c0a-04c5-4cb3-9212-e4b730bf5684","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"api-key","value":"{{api-key}}","type":"text"}],"url":"{{base_url}}/api/v1/tableList/{{stackId}}","description":"<ul>\n<li>Returns all tables within stacks.</li>\n</ul>\n<h2 id=\"authentication\"><strong>Authentication</strong></h2>\n<ul>\n<li>All requests must include an API key.</li>\n</ul>\n<h3 id=\"headers\"><strong>Headers</strong></h3>\n<ul>\n<li><p><strong>api-key:</strong> YOUR_API_KEY</p>\n</li>\n<li><p><strong>Content-Type: application/json</strong></p>\n</li>\n</ul>\n<p><strong>Method:</strong> GET<br /><strong>Endpoint:</strong> {{base_url}}/api/v1/tableList/{{stackId}}</p>\n","urlObject":{"path":["api","v1","tableList","{{stackId}}"],"host":["{{base_url}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"191b3c0a-04c5-4cb3-9212-e4b730bf5684"},{"name":"Table delete","id":"7d6122f4-199b-4588-b6c6-8c2a36ff9555","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[{"key":"api-key","value":"{{api-key}}","type":"text"}],"url":"{{base_url}}/api/v1/tableDelete/{{stackId}}/{{tableId}}","description":"<ul>\n<li>Deteles a table from a stack.</li>\n</ul>\n<h2 id=\"authentication\"><strong>Authentication</strong></h2>\n<ul>\n<li>All requests must include an API key.</li>\n</ul>\n<h3 id=\"headers\"><strong>Headers</strong></h3>\n<ul>\n<li><p><strong>api-key:</strong> YOUR_API_KEY</p>\n</li>\n<li><p><strong>Content-Type: application/json</strong></p>\n</li>\n</ul>\n<p><strong>Method:</strong> DELETE<br /><strong>Endpoint:</strong> {{base_url}}/api/v1/tableDelete/{{stackId}}/{{tableId}}</p>\n","urlObject":{"path":["api","v1","tableDelete","{{stackId}}","{{tableId}}"],"host":["{{base_url}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"7d6122f4-199b-4588-b6c6-8c2a36ff9555"}]}