Stacker Records API

CRUD operations on records within an object

OpenAPI Specification

stacker-records-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Stacker Accounts Records API
  description: The Stacker API provides programmatic access to objects, records, accounts, and stacks within the Stacker no-code platform. It enables external integrations, automation workflows, and data operations across Stacker applications. Authentication uses an integration key passed via the X-Integration-Key request header.
  version: 1.0.0
  contact:
    url: https://stacker.ai/
  termsOfService: https://stacker.ai/terms
servers:
- url: https://api.go.stackerhq.com
  description: Stacker API
security:
- IntegrationKey: []
tags:
- name: Records
  description: CRUD operations on records within an object
paths:
  /api/external/objects/{object_sid}/search/:
    post:
      operationId: searchRecords
      summary: Search Records
      description: 'Returns a paginated list of records within the specified object. Supports filtering, sorting, field selection, and full-text search. Returns JSON by default; set Accept: text/csv to receive CSV output.'
      tags:
      - Records
      security:
      - IntegrationKey: []
      parameters:
      - name: object_sid
        in: path
        required: true
        schema:
          type: string
        description: The object SID
      - name: X-Account-Id
        in: header
        required: true
        schema:
          type: string
      - name: X-Stack-Id
        in: header
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SearchRequest'
      responses:
        '200':
          description: List of records
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RecordListResponse'
            text/csv:
              schema:
                type: string
  /api/external/objects/{object_sid}/records/:
    post:
      operationId: createRecord
      summary: Create Record
      description: Creates a new record in the specified object.
      tags:
      - Records
      security:
      - IntegrationKey: []
      parameters:
      - name: object_sid
        in: path
        required: true
        schema:
          type: string
        description: The object SID
      - name: X-Account-Id
        in: header
        required: true
        schema:
          type: string
      - name: X-Stack-Id
        in: header
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RecordCreateRequest'
      responses:
        '201':
          description: Created record
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Record'
  /api/external/objects/{object_sid}/records/{record_sid}/:
    get:
      operationId: getRecord
      summary: Get Record
      description: Returns a single record by its SID.
      tags:
      - Records
      security:
      - IntegrationKey: []
      parameters:
      - name: object_sid
        in: path
        required: true
        schema:
          type: string
      - name: record_sid
        in: path
        required: true
        schema:
          type: string
      - name: include_fields
        in: query
        required: false
        schema:
          type: string
        description: JSON array string of field API names to include in response
      - name: X-Account-Id
        in: header
        required: true
        schema:
          type: string
      - name: X-Stack-Id
        in: header
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Record object
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Record'
    patch:
      operationId: updateRecord
      summary: Update Record
      description: Partially updates a record. Only provided fields are updated.
      tags:
      - Records
      security:
      - IntegrationKey: []
      parameters:
      - name: object_sid
        in: path
        required: true
        schema:
          type: string
      - name: record_sid
        in: path
        required: true
        schema:
          type: string
      - name: X-Account-Id
        in: header
        required: true
        schema:
          type: string
      - name: X-Stack-Id
        in: header
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RecordUpdateRequest'
      responses:
        '200':
          description: Updated record
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Record'
    delete:
      operationId: deleteRecord
      summary: Delete Record
      description: Deletes a record by its SID.
      tags:
      - Records
      security:
      - IntegrationKey: []
      parameters:
      - name: object_sid
        in: path
        required: true
        schema:
          type: string
      - name: record_sid
        in: path
        required: true
        schema:
          type: string
      - name: X-Account-Id
        in: header
        required: true
        schema:
          type: string
      - name: X-Stack-Id
        in: header
        required: true
        schema:
          type: string
      responses:
        '204':
          description: Record deleted
  /api/external/objects/{object_sid}/bulk-records/:
    post:
      operationId: bulkUpsertRecords
      summary: Bulk Upsert Records
      description: Creates and updates up to 1000 records in a single request. Each record is provided as a JSON object with field API names as keys.
      tags:
      - Records
      security:
      - IntegrationKey: []
      parameters:
      - name: object_sid
        in: path
        required: true
        schema:
          type: string
      - name: X-Account-Id
        in: header
        required: true
        schema:
          type: string
      - name: X-Stack-Id
        in: header
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
                additionalProperties: true
              maxItems: 1000
      responses:
        '200':
          description: Bulk operation result
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkUpsertResponse'
components:
  schemas:
    Record:
      type: object
      properties:
        sid:
          type: string
          description: Record system identifier
      additionalProperties: true
    SearchRequest:
      type: object
      properties:
        search:
          type: string
          description: String to filter records by across specified search fields
        search_fields:
          type: array
          items:
            type: string
          description: Field API names to run the search against
        include_fields:
          type: array
          items:
            type: string
          description: Field API names to include in the response
        count:
          type: integer
          default: 1000
          description: Number of records to return
        start:
          type: integer
          default: 0
          description: Offset for pagination
        order_by:
          type: string
          description: Field API name to order results by
        filters:
          type: array
          items:
            $ref: '#/components/schemas/SearchFilter'
    BulkUpsertResponse:
      type: object
      properties:
        created:
          type: array
          items:
            type: string
          description: SIDs of created records
        updated:
          type: array
          items:
            type: string
          description: SIDs of updated records
    RecordCreateRequest:
      type: object
      description: Key-value pairs where keys are field API names and values are the field values. Optionally include include_fields to filter the response.
      additionalProperties: true
    SearchFilter:
      type: object
      properties:
        target:
          type: string
          description: Field API name to filter on
        operation:
          type: string
          description: Comparison operator (e.g., eq, neq, contains, gt, lt)
        value:
          description: Value to compare against
    RecordUpdateRequest:
      type: object
      description: Key-value pairs for fields to update. Only specified fields are modified.
      additionalProperties: true
    RecordListResponse:
      type: object
      properties:
        records:
          type: array
          items:
            $ref: '#/components/schemas/Record'
        total:
          type: integer
        count:
          type: integer
        start:
          type: integer
  securitySchemes:
    IntegrationKey:
      type: apiKey
      in: header
      name: X-Integration-Key
      description: Personal integration key from Account Settings > Integrations