{
  "openapi": "3.0.1",
  "info": {
    "title": "Malt Freelance Automation · Auto-Apply to Project Offers",
    "description": "Stop losing time on repetitive Malt applications: this Actor logs in (2FA via Gmail or cookies), opens Messages, and submits the next pending project offer with your pitch, daily rate, and Calendly link. Built for freelancers drowning in inbound leads.",
    "version": "0.5",
    "x-build-id": "QPp7MOYpGHCdyUjTt"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/corent1robert~malt-messages-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-corent1robert-malt-messages-scraper",
        "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/corent1robert~malt-messages-scraper/runs": {
      "post": {
        "operationId": "runs-sync-corent1robert-malt-messages-scraper",
        "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/corent1robert~malt-messages-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-corent1robert-malt-messages-scraper",
        "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": {
          "loginMethod": {
            "title": "Login method",
            "enum": [
              "form",
              "cookies"
            ],
            "type": "string",
            "description": "`form` (default) or `cookies` to skip the login form.",
            "default": "form"
          },
          "email": {
            "title": "Malt email",
            "type": "string",
            "description": "Malt login email. Optional if `MALT_EMAIL` is set in environment (recommended). Leave empty when using env-only secrets."
          },
          "password": {
            "title": "Malt password",
            "type": "string",
            "description": "Malt password. Or set `MALT_PASSWORD` in Actor environment variables (recommended for shared Actors)."
          },
          "imapUser": {
            "title": "IMAP email (Gmail)",
            "type": "string",
            "description": "Gmail address for reading the 2FA email. Optional if `MALT_IMAP_USER` is set in environment. Leave empty when using env-only secrets."
          },
          "imapPassword": {
            "title": "Gmail app password",
            "type": "string",
            "description": "Gmail **app password** (not your normal Gmail password). Or `MALT_IMAP_PASSWORD` in environment."
          },
          "maltCookies": {
            "title": "Malt cookies (JSON array)",
            "type": "array",
            "description": "Cookie array for malt.fr. Required when `loginMethod` is `cookies`."
          },
          "openaiApiKey": {
            "title": "OpenAI API key",
            "type": "string",
            "description": "OpenAI API key (e.g. gpt-4o-mini). Or set `OPENAI_API_KEY` in environment."
          },
          "dailyRate": {
            "title": "Daily rate (EUR/day)",
            "type": "integer",
            "description": "Daily rate in EUR for the application form. Minimum 600.",
            "default": 600
          },
          "calendlyLink": {
            "title": "Calendly URL",
            "type": "string",
            "description": "Calendly link for the application. Or `CALENDLY_LINK` / `MALT_CALENDLY_LINK` in environment. Leave empty when using env-only secrets."
          },
          "headless": {
            "title": "Headless",
            "type": "boolean",
            "description": "If false, browser window is visible (local debugging).",
            "default": true
          },
          "googleSheetsEnabled": {
            "title": "Enable Google Sheets",
            "type": "boolean",
            "description": "Export application rows to Google Sheets.",
            "default": false
          },
          "googleSheetsSpreadsheetId": {
            "title": "Spreadsheet ID",
            "type": "string",
            "description": "Google Sheet ID from the URL (.../d/SHEET_ID/...)."
          },
          "googleSheetsCredentials": {
            "title": "Service account JSON",
            "type": "object",
            "description": "Google service account JSON object. Or `GOOGLE_SHEETS_CREDENTIALS` in environment."
          },
          "googleSheetsTab": {
            "title": "Sheet tab name",
            "type": "string",
            "description": "Worksheet tab name. Default: Malt applications",
            "default": "Malt Candidatures"
          },
          "telegramEnabled": {
            "title": "Enable Telegram",
            "type": "boolean",
            "description": "Send a Telegram message after each run.",
            "default": false
          },
          "telegramBotToken": {
            "title": "Bot token",
            "type": "string",
            "description": "Telegram bot token from @BotFather. Or `TELEGRAM_BOT_TOKEN` in environment."
          },
          "telegramChatId": {
            "title": "Chat ID",
            "type": "string",
            "description": "Telegram chat or channel ID. Or `TELEGRAM_CHAT_ID` in environment."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}