curl --request POST \
--url https://dally.ai/v1/swipe_file.remove \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"reels": [
{
"content_id": "fd5c8284-4b1e-4d8a-9a9f-0e5a1c2b3d4e",
"platform": "instagram"
}
]
}
'import requests
url = "https://dally.ai/v1/swipe_file.remove"
payload = { "reels": [
{
"content_id": "fd5c8284-4b1e-4d8a-9a9f-0e5a1c2b3d4e",
"platform": "instagram"
}
] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
reels: [{content_id: 'fd5c8284-4b1e-4d8a-9a9f-0e5a1c2b3d4e', platform: 'instagram'}]
})
};
fetch('https://dally.ai/v1/swipe_file.remove', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://dally.ai/v1/swipe_file.remove",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'reels' => [
[
'content_id' => 'fd5c8284-4b1e-4d8a-9a9f-0e5a1c2b3d4e',
'platform' => 'instagram'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://dally.ai/v1/swipe_file.remove"
payload := strings.NewReader("{\n \"reels\": [\n {\n \"content_id\": \"fd5c8284-4b1e-4d8a-9a9f-0e5a1c2b3d4e\",\n \"platform\": \"instagram\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://dally.ai/v1/swipe_file.remove")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"reels\": [\n {\n \"content_id\": \"fd5c8284-4b1e-4d8a-9a9f-0e5a1c2b3d4e\",\n \"platform\": \"instagram\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://dally.ai/v1/swipe_file.remove")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"reels\": [\n {\n \"content_id\": \"fd5c8284-4b1e-4d8a-9a9f-0e5a1c2b3d4e\",\n \"platform\": \"instagram\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"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"
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"details": {}
},
"request_id": "<string>"
}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.
curl --request POST \
--url https://dally.ai/v1/swipe_file.remove \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"reels": [
{
"content_id": "fd5c8284-4b1e-4d8a-9a9f-0e5a1c2b3d4e",
"platform": "instagram"
}
]
}
'import requests
url = "https://dally.ai/v1/swipe_file.remove"
payload = { "reels": [
{
"content_id": "fd5c8284-4b1e-4d8a-9a9f-0e5a1c2b3d4e",
"platform": "instagram"
}
] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
reels: [{content_id: 'fd5c8284-4b1e-4d8a-9a9f-0e5a1c2b3d4e', platform: 'instagram'}]
})
};
fetch('https://dally.ai/v1/swipe_file.remove', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://dally.ai/v1/swipe_file.remove",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'reels' => [
[
'content_id' => 'fd5c8284-4b1e-4d8a-9a9f-0e5a1c2b3d4e',
'platform' => 'instagram'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://dally.ai/v1/swipe_file.remove"
payload := strings.NewReader("{\n \"reels\": [\n {\n \"content_id\": \"fd5c8284-4b1e-4d8a-9a9f-0e5a1c2b3d4e\",\n \"platform\": \"instagram\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://dally.ai/v1/swipe_file.remove")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"reels\": [\n {\n \"content_id\": \"fd5c8284-4b1e-4d8a-9a9f-0e5a1c2b3d4e\",\n \"platform\": \"instagram\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://dally.ai/v1/swipe_file.remove")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"reels\": [\n {\n \"content_id\": \"fd5c8284-4b1e-4d8a-9a9f-0e5a1c2b3d4e\",\n \"platform\": \"instagram\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"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"
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"details": {}
},
"request_id": "<string>"
}Authorizations
A WorkOS-dashboard-issued internal API key on Authorization: Bearer.
Body
The reels this call is about, one to 60; the same reel twice counts once.
1 - 60 elementsShow child attributes
Show child attributes
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.
1 - 500The Dally request id of the canvas the reels were shown on, when known, so the Swipe file remembers where a reel came from.
1 - 200The 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.
1 - 200frame when the person acted in a Dally player, chat when the model did; chat when absent.
frame, chat Response
Success. request_id is present on every response.
One mark per reel sent, in the order sent.
Show child attributes
Show child attributes
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.
Show child attributes
Show child attributes
Server-minted id for this request. Present on every response, success and error — quote it when reporting a problem.
1