{
  "openapi": "3.0.1",
  "info": {
    "title": "Product Directory Submitter",
    "description": "Automatically submit your startup or product to multiple directories using an AI Agent. Stop manually filling out the same forms on ProductHunt, AlternativeTo, SideProjectors, etc.  Fill all the required fields and you can submit your product to ANY URL.  See ReadMe for full instructions.",
    "version": "0.2",
    "x-build-id": "Av3E7Xye4oO7pi1Ep"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/prodmarkllc~product-directory-submitter/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-prodmarkllc-product-directory-submitter",
        "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/prodmarkllc~product-directory-submitter/runs": {
      "post": {
        "operationId": "runs-sync-prodmarkllc-product-directory-submitter",
        "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/prodmarkllc~product-directory-submitter/run-sync": {
      "post": {
        "operationId": "run-sync-prodmarkllc-product-directory-submitter",
        "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",
        "required": [
          "productUrl",
          "email",
          "logoSquare",
          "screenshot1",
          "ogImage",
          "targetSite"
        ],
        "properties": {
          "autoVerifyEmail": {
            "title": "Auto-Verify Email",
            "type": "boolean",
            "description": "If true, agent will go to mail.google.com to verify signup emails (requires Google account in browserSession). If false, sites needing verification are marked FAILED.",
            "default": false
          },
          "productUrl": {
            "title": "Product URL",
            "type": "string",
            "description": "The URL of your product/website to submit"
          },
          "productName": {
            "title": "Product Name",
            "type": "string",
            "description": "Name of your product"
          },
          "tagline": {
            "title": "Tagline",
            "type": "string",
            "description": "Short tagline for your product (aim for 60 characters)"
          },
          "shortDesc": {
            "title": "Short Description",
            "type": "string",
            "description": "Brief description of your product (aim for 200 characters)"
          },
          "longDesc": {
            "title": "Long Description",
            "type": "string",
            "description": "Detailed description of your product (500+ characters, used by sites that need more detail)"
          },
          "productTags": {
            "title": "Product Tags",
            "type": "array",
            "description": "Tags/categories for your product (e.g., AI, SaaS, Productivity, Developer Tools). Helps the agent fill out category and type fields on directories.",
            "items": {
              "type": "string"
            }
          },
          "email": {
            "title": "Email",
            "type": "string",
            "description": "Email address for account signups (you'll receive verification emails here)"
          },
          "password": {
            "title": "Password",
            "type": "string",
            "description": "Password for new account signups (encrypted, stored securely)"
          },
          "logoSquare": {
            "title": "Square Logo",
            "type": "string",
            "description": "URL to square logo image (240x240px or 400x400px, PNG recommended)"
          },
          "screenshot1": {
            "title": "Screenshot 1",
            "type": "string",
            "description": "URL to primary product screenshot (1270x760px recommended)"
          },
          "ogImage": {
            "title": "OG Image",
            "type": "string",
            "description": "URL to Open Graph / social preview image (1200x630px)"
          },
          "screenshot2": {
            "title": "Screenshot 2",
            "type": "string",
            "description": "URL to additional screenshot (optional, 1270x760px)"
          },
          "screenshot3": {
            "title": "Screenshot 3",
            "type": "string",
            "description": "URL to additional screenshot (optional, 1270x760px)"
          },
          "logoCircular": {
            "title": "Circular Logo",
            "type": "string",
            "description": "URL to circular/round logo for avatar displays (optional, 400x400px)"
          },
          "socialLinks": {
            "title": "Social Links",
            "type": "object",
            "description": "Social media links (twitter, github, linkedin, etc.)"
          },
          "userInfo": {
            "title": "User Info (Optional)",
            "type": "object",
            "description": "Your personal/business info for sites that ask about YOU (not the product). Most sites don't need this."
          },
          "targetSite": {
            "title": "Target Site",
            "type": "string",
            "description": "The directory URL to submit to (e.g., 'https://producthunt.com' or 'https://reddit.com/r/startups'). The agent will sign up if needed and submit your product."
          },
          "customPrompt": {
            "title": "Custom Prompt",
            "type": "string",
            "description": "Additional instructions for the AI agent specific to this site (e.g., 'Post as a text post, flair as Show')"
          },
          "hasAccount": {
            "title": "Has Existing Account",
            "type": "boolean",
            "description": "If true, the agent will try to log in instead of signing up. Use the email/password fields for credentials.",
            "default": false
          },
          "browserSession": {
            "title": "Browser Session (Optional)",
            "type": "string",
            "description": "Upload your browser session JSON containing any credentials needed for posting. If a Google account is included, the agent will use 'Sign in with Google' for signups. For custom sites (e.g., a subreddit), include that platform's credentials in your session. Generate using apify-session-helpers tool."
          },
          "browserWaitMinutes": {
            "title": "Browser Wait (Minutes)",
            "minimum": 0,
            "maximum": 120,
            "type": "integer",
            "description": "Keep browser open for this many minutes after completion (0 = close immediately)",
            "default": 0
          },
          "aiProvider": {
            "title": "AI Provider",
            "enum": [
              "gemini",
              "claude"
            ],
            "type": "string",
            "description": "AI provider to use for browser automation: 'gemini' (default) or 'claude'",
            "default": "gemini"
          },
          "aiProviderFallback": {
            "title": "AI Provider Fallback",
            "type": "boolean",
            "description": "If true, automatically switch to the other AI provider (Gemini↔Claude) when quota limits (429 errors) are hit.",
            "default": true
          },
          "recordVideo": {
            "title": "Record Browser Video",
            "type": "boolean",
            "description": "Record video of each site's browser session for debugging. Videos are saved to the KV store as MP4 files (~5-50MB per site at 720p).",
            "default": true
          },
          "maxAgentTurnsPerSite": {
            "title": "Max Agent Turns Per Site",
            "minimum": 20,
            "maximum": 200,
            "type": "integer",
            "description": "Maximum AI agent turns per site before giving up. Each turn costs $0.03 (Gemini) or $0.05 (Claude). Average successful submission takes ~30 turns.",
            "default": 80
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}