{
  "openapi": "3.0.1",
  "info": {
    "title": "X/Twitter Post Cleaner - Bulk Delete Tweets",
    "description": "Bulk delete tweets from your X/Twitter account. Filter by date range, keywords, media type, or retweets. Supports archive upload to delete tweets older than the API returns (~3,200 limit).",
    "version": "1.1",
    "x-build-id": "MFoWNa9OF0pHkc3kS"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/alizarin_refrigerator-owner~social-post-cleaner-twitter/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-alizarin_refrigerator-owner-social-post-cleaner-twitter",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/alizarin_refrigerator-owner~social-post-cleaner-twitter/runs": {
      "post": {
        "operationId": "runs-sync-alizarin_refrigerator-owner-social-post-cleaner-twitter",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/alizarin_refrigerator-owner~social-post-cleaner-twitter/run-sync": {
      "post": {
        "operationId": "run-sync-alizarin_refrigerator-owner-social-post-cleaner-twitter",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "apiKey": {
            "title": "API Key (Consumer Key)",
            "type": "string",
            "description": "Your X/Twitter API Key (also called Consumer Key). Get one at developer.x.com. If any of the four credentials is missing, the actor returns labeled sample data, deletes nothing, and charges no task events."
          },
          "apiKeySecret": {
            "title": "API Key Secret (Consumer Secret)",
            "type": "string",
            "description": "Your X/Twitter API Key Secret (also called Consumer Secret)"
          },
          "accessToken": {
            "title": "Access Token",
            "type": "string",
            "description": "Your user-level Access Token (from developer.x.com app settings > Keys and Tokens)"
          },
          "accessTokenSecret": {
            "title": "Access Token Secret",
            "type": "string",
            "description": "Your user-level Access Token Secret"
          },
          "deleteMode": {
            "title": "Delete Mode",
            "enum": [
              "tweets",
              "retweets",
              "likes",
              "all"
            ],
            "type": "string",
            "description": "What to delete: 'tweets' (your original tweets), 'retweets' (retweets only), 'likes' (unlike all), or 'all' (tweets + retweets + unlikes everything)",
            "default": "all"
          },
          "beforeDate": {
            "title": "Delete Before Date",
            "type": "string",
            "description": "Only delete tweets posted BEFORE this date (YYYY-MM-DD). Example: '2024-01-01' deletes everything before 2024."
          },
          "afterDate": {
            "title": "Delete After Date",
            "type": "string",
            "description": "Only delete tweets posted AFTER this date (YYYY-MM-DD). Use with beforeDate for a range."
          },
          "keywordFilter": {
            "title": "Keyword Filter",
            "type": "string",
            "description": "Only delete tweets containing this keyword or phrase (case-insensitive). Leave empty to skip keyword filtering."
          },
          "preserveKeyword": {
            "title": "Preserve Keyword",
            "type": "string",
            "description": "KEEP tweets containing this keyword or phrase (case-insensitive). These tweets will NOT be deleted even if they match other filters."
          },
          "mediaTweetsOnly": {
            "title": "Media Tweets Only",
            "type": "boolean",
            "description": "Only delete tweets that contain images or videos",
            "default": false
          },
          "maxDeletions": {
            "title": "Max Deletions",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Maximum number of tweets to delete in this run. Use this for safety -- start small (e.g., 50) to verify before going all-in. Set to 0 for unlimited.",
            "default": 100
          },
          "tweetArchiveJson": {
            "title": "Tweet Archive (tweets.js content)",
            "type": "string",
            "description": "Paste the contents of your tweets.js file from your Twitter data archive. This lets the actor delete tweets older than the API's ~3,200 tweet limit. To get your archive: Settings > Your Account > Download an archive of your data."
          },
          "dryRun": {
            "title": "Dry Run",
            "type": "boolean",
            "description": "Preview what would be deleted without actually deleting anything. Outputs the list of matched tweets.",
            "default": false
          },
          "demoMode": {
            "title": "Demo Mode",
            "type": "boolean",
            "description": "Run with labeled sample data, no API credentials needed. Demo mode also activates automatically when any credential is missing. Nothing is deleted and no task events are charged.",
            "default": false
          },
          "webhookUrl": {
            "title": "Webhook URL",
            "type": "string",
            "description": "URL to receive a POST request when the run finishes with a summary of deletions."
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}