Softr Records API

Create, read, update, delete, and search records.

Operations 6

GET /databases/{databaseId}/tables/{tableId}/records List records #
POST /databases/{databaseId}/tables/{tableId}/records Create a record #
GET /databases/{databaseId}/tables/{tableId}/records/{recordId} Get a single record #
PATCH /databases/{databaseId}/tables/{tableId}/records/{recordId} Update a record #
DELETE /databases/{databaseId}/tables/{tableId}/records/{recordId} Delete a record #
POST /databases/{databaseId}/tables/{tableId}/records/search Search records #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • 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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/softr-records-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

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 Specification

softr-records-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Softr Databases Records API
  description: Public REST APIs for Softr - the no-code app and client-portal builder. Covers the Users Management API (studio-api.softr.io) for managing the end users of a published Softr app, and the Softr Database API (tables-api.softr.io) for reading and writing records in the native Softr Database. Both APIs authenticate with a Softr-Api-Key header; the Users Management API additionally requires a Softr-Domain header identifying the target app.
  termsOfService: https://www.softr.io/terms
  contact:
    name: Softr Support
    url: https://docs.softr.io
  version: '1.0'
servers:
- url: https://studio-api.softr.io/v1/api
  description: Users Management API
- url: https://tables-api.softr.io/api/v1
  description: Softr Database API
security:
- SoftrApiKey: []
tags:
- name: Records
  description: Create, read, update, delete, and search records.
paths:
  /databases/{databaseId}/tables/{tableId}/records:
    get:
      operationId: listRecords
      tags:
      - Records
      summary: List records
      description: Retrieves records from a table with pagination. Use fieldNames=true to return human-readable field names instead of field IDs.
      servers:
      - url: https://tables-api.softr.io/api/v1
      parameters:
      - $ref: '#/components/parameters/DatabaseId'
      - $ref: '#/components/parameters/TableId'
      - name: limit
        in: query
        description: Maximum number of records to return (max 200, default 20).
        schema:
          type: integer
          default: 20
          maximum: 200
      - name: offset
        in: query
        description: Number of records to skip for pagination.
        schema:
          type: integer
      - $ref: '#/components/parameters/FieldNames'
      responses:
        '200':
          description: A page of records.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Record'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/TooManyRequests'
    post:
      operationId: createRecord
      tags:
      - Records
      summary: Create a record
      description: Creates a record in the specified table.
      servers:
      - url: https://tables-api.softr.io/api/v1
      parameters:
      - $ref: '#/components/parameters/DatabaseId'
      - $ref: '#/components/parameters/TableId'
      - $ref: '#/components/parameters/FieldNames'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateRecordRequest'
      responses:
        '200':
          description: Record created.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/Record'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /databases/{databaseId}/tables/{tableId}/records/{recordId}:
    get:
      operationId: getRecord
      tags:
      - Records
      summary: Get a single record
      servers:
      - url: https://tables-api.softr.io/api/v1
      parameters:
      - $ref: '#/components/parameters/DatabaseId'
      - $ref: '#/components/parameters/TableId'
      - $ref: '#/components/parameters/RecordId'
      - $ref: '#/components/parameters/FieldNames'
      responses:
        '200':
          description: The requested record.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/Record'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/TooManyRequests'
    patch:
      operationId: updateRecord
      tags:
      - Records
      summary: Update a record
      servers:
      - url: https://tables-api.softr.io/api/v1
      parameters:
      - $ref: '#/components/parameters/DatabaseId'
      - $ref: '#/components/parameters/TableId'
      - $ref: '#/components/parameters/RecordId'
      - $ref: '#/components/parameters/FieldNames'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateRecordRequest'
      responses:
        '200':
          description: Record updated.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/Record'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/TooManyRequests'
    delete:
      operationId: deleteRecord
      tags:
      - Records
      summary: Delete a record
      servers:
      - url: https://tables-api.softr.io/api/v1
      parameters:
      - $ref: '#/components/parameters/DatabaseId'
      - $ref: '#/components/parameters/TableId'
      - $ref: '#/components/parameters/RecordId'
      responses:
        '200':
          description: Record deleted.
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /databases/{databaseId}/tables/{tableId}/records/search:
    post:
      operationId: searchRecords
      tags:
      - Records
      summary: Search records
      description: Searches and filters records in a table.
      servers:
      - url: https://tables-api.softr.io/api/v1
      parameters:
      - $ref: '#/components/parameters/DatabaseId'
      - $ref: '#/components/parameters/TableId'
      - $ref: '#/components/parameters/FieldNames'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              description: Filter criteria for the search.
      responses:
        '200':
          description: Matching records.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Record'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/TooManyRequests'
components:
  parameters:
    RecordId:
      name: recordId
      in: path
      required: true
      schema:
        type: string
    TableId:
      name: tableId
      in: path
      required: true
      schema:
        type: string
    DatabaseId:
      name: databaseId
      in: path
      required: true
      schema:
        type: string
    FieldNames:
      name: fieldNames
      in: query
      description: When true, uses human-readable field names instead of field IDs.
      schema:
        type: boolean
  schemas:
    Record:
      type: object
      properties:
        id:
          type: string
        tableId:
          type: string
        fields:
          type: object
          additionalProperties: true
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
    CreateRecordRequest:
      type: object
      required:
      - fields
      properties:
        fields:
          type: object
          description: Map of field ID (or field name when fieldNames=true) to value.
          additionalProperties: true
  responses:
    TooManyRequests:
      description: Rate limit exceeded. Reads are capped at 40 requests/second and writes at 30 requests/second per token.
    Unauthorized:
      description: Missing or invalid Softr-Api-Key (or Softr-Domain).
  securitySchemes:
    SoftrApiKey:
      type: apiKey
      in: header
      name: Softr-Api-Key
      description: Personal access token generated from the Softr workspace settings.