> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dally.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# swipe_file.remove

> Access: public. Send a JSON body; unknown keys are rejected with 400 invalid_request (inputs are strict). Responses may gain fields additively — never remove or repurpose; ignore unknown response fields.



## OpenAPI

````yaml /api-reference/openapi.json post /v1/swipe_file.remove
openapi: 3.1.0
info:
  title: Dally API
  version: v1
  description: >-
    PRIVATE (posture 2026-09-01): the MCP connector is Dally's only supported
    surface; this REST surface serves internal harnesses only, and its keys are
    WorkOS-dashboard-issued, never product-issued (CONTEXT.md § Positions).
    Headless Dally v1 — Slack-shape RPC: every operation is POST
    /v1/<family.verb> with a JSON body. Cursor-only pagination ({items,
    has_more, next_cursor}; next_cursor null is the only end signal).
    Unversioned while private (Jim 2026-09-03): a retired name drops in the
    first migration after the deployed release stops naming it; inputs are
    strict, responses are tolerant.
servers:
  - url: https://dally.ai
    description: The production Headless Dally v1 API.
security: []
paths:
  /v1/swipe_file.remove:
    post:
      tags:
        - swipe_file
      summary: >-
        Take reels out of the creator's Swipe file, only when the creator asks,
        as a double tap on a kept reel does; a reel not there changes nothing,
        and swipe_file.add brings one back.
      description: >-
        Access: public. Send a JSON body; unknown keys are rejected with 400
        invalid_request (inputs are strict). Responses may gain fields
        additively — never remove or repurpose; ignore unknown response fields.
      operationId: swipe_file.remove
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                reels:
                  minItems: 1
                  maxItems: 60
                  type: array
                  items:
                    type: object
                    properties:
                      content_id:
                        type: string
                        format: uuid
                        pattern: >-
                          ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                        description: The reel's Content id, as every card carries it.
                      platform:
                        type: string
                        minLength: 1
                        description: >-
                          The reel's platform as the card carries it: instagram,
                          youtube or facebook.
                    required:
                      - content_id
                      - platform
                  description: >-
                    The reels this call is about, one to 60; the same reel twice
                    counts once.
                note:
                  description: >-
                    The creator's reason in their own words, verbatim, when they
                    gave one: from "keep the second one for the hook" the note
                    is "for the hook", never the instruction to keep. Recorded
                    on the fact for every reel in this call exactly as sent,
                    spaces included.
                  type: string
                  minLength: 1
                  maxLength: 500
                request_id:
                  description: >-
                    The Dally request id of the canvas the reels were shown on,
                    when known, so the Swipe file remembers where a reel came
                    from.
                  type: string
                  minLength: 1
                  maxLength: 200
                idempotency_key:
                  description: >-
                    The caller's key for this one call; a retry with the same
                    key replays the answer instead of acting twice. Absent, this
                    request's id serves.
                  type: string
                  minLength: 1
                  maxLength: 200
                source:
                  description: >-
                    frame when the person acted in a Dally player, chat when the
                    model did; chat when absent.
                  type: string
                  enum:
                    - frame
                    - chat
              required:
                - reels
              additionalProperties: false
            example:
              reels:
                - content_id: fd5c8284-4b1e-4d8a-9a9f-0e5a1c2b3d4e
                  platform: instagram
      responses:
        '200':
          description: Success. request_id is present on every response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  marks:
                    type: array
                    items:
                      type: object
                      properties:
                        content_id:
                          type: string
                          format: uuid
                          pattern: >-
                            ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                          description: The reel's Content id.
                        platform:
                          type: string
                          description: The reel's platform.
                        kept:
                          type: boolean
                          description: Whether the reel is in the creator's Swipe file now.
                        changed:
                          type: boolean
                          description: >-
                            Whether this call changed that or added a new note;
                            false when it already stood so.
                        kept_at:
                          anyOf:
                            - type: string
                            - type: 'null'
                          description: >-
                            When the current run of keeping began; null when the
                            reel is not there.
                        first_kept_at:
                          anyOf:
                            - type: string
                            - type: 'null'
                          description: >-
                            The first time the reel was ever kept, across every
                            let go since; null when never.
                        note:
                          anyOf:
                            - type: string
                            - type: 'null'
                          description: >-
                            The creator's words on the latest fact for this
                            reel, or null.
                      required:
                        - content_id
                        - platform
                        - kept
                        - changed
                        - kept_at
                        - first_kept_at
                        - note
                    description: One mark per reel sent, in the order sent.
                  show:
                    type: object
                    properties:
                      kind:
                        type: string
                        const: swipe_file
                        description: The dally_show kind that renders the whole Swipe file.
                    required:
                      - kind
                    description: >-
                      How it is shown: dally_write renders the Swipe file on
                      this very answer, so the creator already sees the kept
                      reel; do not render it again. The file reads itself and
                      takes no rows from you.
                  request_id:
                    type: string
                    minLength: 1
                    description: >-
                      Server-minted id for this request. Present on every
                      response, success and error — quote it when reporting a
                      problem.
                required:
                  - marks
                  - show
                  - request_id
              example:
                marks:
                  - content_id: fd5c8284-4b1e-4d8a-9a9f-0e5a1c2b3d4e
                    platform: instagram
                    kept: false
                    changed: true
                    kept_at: null
                    first_kept_at: '2026-09-09T17:19:39Z'
                    note: null
                show:
                  kind: swipe_file
                request_id: req_01j8zkq
        default:
          description: >-
            Error — the real HTTP status carries the class; the body is always
            the one error envelope. Codes: invalid_request, stale_cursor,
            query_too_broad, unauthorized, forbidden, no_connected_accounts,
            stale_authority, not_found, precondition_failed, method_not_allowed,
            stale_snapshot, stale_revision, execution_payload_erased,
            exhaustiveness_unavailable, rate_limited, internal_error,
            unavailable, search_unavailable.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
      security:
        - bearerAuth: []
        - apiKeyAuth: []
components:
  schemas:
    ErrorEnvelope:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              enum:
                - invalid_request
                - stale_cursor
                - query_too_broad
                - unauthorized
                - forbidden
                - no_connected_accounts
                - stale_authority
                - not_found
                - precondition_failed
                - method_not_allowed
                - stale_snapshot
                - stale_revision
                - execution_payload_erased
                - exhaustiveness_unavailable
                - rate_limited
                - internal_error
                - unavailable
                - search_unavailable
              description: >-
                The machine-readable error code. The set only grows — treat
                unknown codes by falling back to the HTTP status class.
            message:
              type: string
              description: >-
                A human-readable teaching message: what failed and the exact
                fix, never just the symptom.
            details:
              description: >-
                Optional structured context for this code — e.g.
                estimated_matches and ceiling on query_too_broad.
              type: object
              propertyNames:
                type: string
              additionalProperties: {}
          required:
            - code
            - message
          description: The error object — the one shape every failure wears.
        request_id:
          type: string
          minLength: 1
          description: >-
            Server-minted id for this request. Present on every response,
            success and error — quote it when reporting a problem.
      required:
        - error
        - request_id
      description: The ONE error envelope (API-ERR-001).
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: 'A WorkOS-dashboard-issued internal API key on Authorization: Bearer.'
    apiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: The same internal API key, accepted on x-api-key.

````