{
  "openapi": "3.0.0",
  "paths": {
    "/api/v1/companies/search": {
      "post": {
        "description": "Async company discovery. Returns operationId; poll GET /api/operations/:id.",
        "operationId": "searchCompanies",
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "description": "Optional. Reusing the same key for the same organization returns the existing queued operation.",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostCompanySearchDto"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Company search accepted. Poll the returned URL for results.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntitySearchAcceptedPublicDto"
                }
              }
            }
          },
          "400": {
            "description": "The request body or parameters are invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 400,
                  "error": "Bad Request",
                  "message": "Validation failed",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b",
                  "errors": [
                    {
                      "property": "body.query",
                      "message": "query must be a string",
                      "constraints": {
                        "isString": "query must be a string"
                      }
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Authentication is required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 401,
                  "error": "Unauthorized",
                  "message": "Authentication is required.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "402": {
            "description": "The organization does not have enough credits for this request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 402,
                  "error": "Payment Required",
                  "message": "Insufficient credits.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 500,
                  "error": "Internal Server Error",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          }
        },
        "security": [
          {
            "AccessKey": [],
            "SecretKey": []
          }
        ],
        "summary": "Search companies",
        "tags": [
          "Company Search"
        ]
      }
    },
    "/api/v1/people/search/estimate": {
      "post": {
        "description": "Pre-flight conservative credit estimate for POST /api/v1/people/search. Includes contact enrichment assumptions when includeContacts is true.",
        "operationId": "estimatePeopleSearch",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostPeopleSearchDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Conservative people search preflight estimate and contact enrichment breakdown.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PeopleSearchEstimateDto"
                }
              }
            }
          },
          "400": {
            "description": "The request body or parameters are invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 400,
                  "error": "Bad Request",
                  "message": "Validation failed",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b",
                  "errors": [
                    {
                      "property": "body.query",
                      "message": "query must be a string",
                      "constraints": {
                        "isString": "query must be a string"
                      }
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Authentication is required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 401,
                  "error": "Unauthorized",
                  "message": "Authentication is required.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 500,
                  "error": "Internal Server Error",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          }
        },
        "security": [
          {
            "AccessKey": [],
            "SecretKey": []
          }
        ],
        "summary": "Estimate people search",
        "tags": [
          "People Search"
        ]
      }
    },
    "/api/v1/people/search": {
      "post": {
        "description": "Async people discovery. Returns operationId; poll GET /api/operations/:id.",
        "operationId": "searchPeople",
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "description": "Optional. Reusing the same key for the same organization returns the existing queued operation.",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostPeopleSearchDto"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "People search accepted. Poll the returned URL for results.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntitySearchAcceptedDto"
                }
              }
            }
          },
          "400": {
            "description": "The request body or parameters are invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 400,
                  "error": "Bad Request",
                  "message": "Validation failed",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b",
                  "errors": [
                    {
                      "property": "body.query",
                      "message": "query must be a string",
                      "constraints": {
                        "isString": "query must be a string"
                      }
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Authentication is required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 401,
                  "error": "Unauthorized",
                  "message": "Authentication is required.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "402": {
            "description": "The organization does not have enough credits for this request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 402,
                  "error": "Payment Required",
                  "message": "Insufficient credits.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 500,
                  "error": "Internal Server Error",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          }
        },
        "security": [
          {
            "AccessKey": [],
            "SecretKey": []
          }
        ],
        "summary": "Search people",
        "tags": [
          "People Search"
        ]
      }
    },
    "/api/deep-research": {
      "post": {
        "description": "Start a deep research job with a prompt and JSON Schema. The response includes an operation ID and poll URL for retrieving the structured result.",
        "operationId": "startDeepResearch",
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "description": "Prevents duplicate work if you retry the same request with the same key.",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DeepResearchRequestDto"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Research job accepted. Poll the returned URL for status and results.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeepResearchQueuedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "The request body or parameters are invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 400,
                  "error": "Bad Request",
                  "message": "Validation failed",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b",
                  "errors": [
                    {
                      "property": "body.query",
                      "message": "query must be a string",
                      "constraints": {
                        "isString": "query must be a string"
                      }
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Authentication is required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 401,
                  "error": "Unauthorized",
                  "message": "Authentication is required.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "402": {
            "description": "The organization does not have enough credits for this request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 402,
                  "error": "Payment Required",
                  "message": "Insufficient credits.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 500,
                  "error": "Internal Server Error",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          }
        },
        "security": [
          {
            "AccessKey": [],
            "SecretKey": []
          }
        ],
        "summary": "Start deep research",
        "tags": [
          "Deep Research"
        ]
      }
    },
    "/api/enrichments": {
      "post": {
        "description": "Enrich one contact or a batch of contacts with requested fields such as verified email, phone, and signals. Small contact-only requests can complete immediately; larger requests return an operation to poll.",
        "operationId": "submitEnrichment",
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "description": "Prevents duplicate work if you retry the same request with the same key.",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostEnrichmentDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Enrichment completed immediately.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EnrichmentSyncResponseDto"
                }
              }
            }
          },
          "202": {
            "description": "Enrichment accepted. Poll the returned URL for status and results.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EnrichmentQueuedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "The request body or parameters are invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 400,
                  "error": "Bad Request",
                  "message": "Validation failed",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b",
                  "errors": [
                    {
                      "property": "body.query",
                      "message": "query must be a string",
                      "constraints": {
                        "isString": "query must be a string"
                      }
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Authentication is required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 401,
                  "error": "Unauthorized",
                  "message": "Authentication is required.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "402": {
            "description": "The organization does not have enough credits for this request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 402,
                  "error": "Payment Required",
                  "message": "Insufficient credits.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 500,
                  "error": "Internal Server Error",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          }
        },
        "security": [
          {
            "AccessKey": [],
            "SecretKey": []
          }
        ],
        "summary": "Submit enrichment",
        "tags": [
          "Enrichments"
        ]
      }
    },
    "/api/enrichments/{id}": {
      "get": {
        "description": "Check the status of an enrichment request and retrieve the result once it completes.",
        "operationId": "getEnrichment",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Enrichment operation ID.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Current enrichment status, progress, result, or error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OperationResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Authentication is required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 401,
                  "error": "Unauthorized",
                  "message": "Authentication is required.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "404": {
            "description": "The requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 404,
                  "error": "Not Found",
                  "message": "Resource not found.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests. Slow down before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 429,
                  "error": "Too Many Requests",
                  "message": "Too many requests.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 500,
                  "error": "Internal Server Error",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          }
        },
        "security": [
          {
            "AccessKey": [],
            "SecretKey": []
          }
        ],
        "summary": "Get enrichment",
        "tags": [
          "Enrichments"
        ]
      }
    },
    "/api/operations": {
      "get": {
        "description": "List your most-recent background operations, scoped to the active organization and the requesting user. Use this to recover an `operationId` you no longer have. Ordered newest-first; `limit` returns up to that many (default 20, max 100). Optional `status` filters to a single operation status.",
        "operationId": "listOperations",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Most-recent operations for the caller (newest first).",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/OperationResponseDto"
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request body or parameters are invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 400,
                  "error": "Bad Request",
                  "message": "Validation failed",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b",
                  "errors": [
                    {
                      "property": "body.query",
                      "message": "query must be a string",
                      "constraints": {
                        "isString": "query must be a string"
                      }
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Authentication is required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 401,
                  "error": "Unauthorized",
                  "message": "Authentication is required.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests. Slow down before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 429,
                  "error": "Too Many Requests",
                  "message": "Too many requests.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 500,
                  "error": "Internal Server Error",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          }
        },
        "security": [
          {
            "AccessKey": [],
            "SecretKey": []
          }
        ],
        "summary": "List recent operations",
        "tags": [
          "Operations"
        ]
      }
    },
    "/api/operations/{id}": {
      "get": {
        "description": "Check the status of a background operation and retrieve its result once it completes.",
        "operationId": "getOperation",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Operation ID.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Current operation status, progress, result, or error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OperationResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Authentication is required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 401,
                  "error": "Unauthorized",
                  "message": "Authentication is required.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "404": {
            "description": "The requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 404,
                  "error": "Not Found",
                  "message": "Resource not found.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests. Slow down before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 429,
                  "error": "Too Many Requests",
                  "message": "Too many requests.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 500,
                  "error": "Internal Server Error",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          }
        },
        "security": [
          {
            "AccessKey": [],
            "SecretKey": []
          }
        ],
        "summary": "Get operation",
        "tags": [
          "Operations"
        ]
      }
    },
    "/api/v1/monitors": {
      "post": {
        "description": "Create a recurring monitor that runs on a schedule and stores matching events for later review.",
        "operationId": "createMonitor",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateMonitorDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Monitor created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MonitorResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "The request body or parameters are invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 400,
                  "error": "Bad Request",
                  "message": "Validation failed",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b",
                  "errors": [
                    {
                      "property": "body.query",
                      "message": "query must be a string",
                      "constraints": {
                        "isString": "query must be a string"
                      }
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Authentication is required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 401,
                  "error": "Unauthorized",
                  "message": "Authentication is required.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "404": {
            "description": "The requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 404,
                  "error": "Not Found",
                  "message": "Resource not found.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 500,
                  "error": "Internal Server Error",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          }
        },
        "security": [
          {
            "AccessKey": [],
            "SecretKey": []
          }
        ],
        "summary": "Create monitor",
        "tags": [
          "Monitors"
        ]
      },
      "get": {
        "description": "List monitors for your organization.",
        "operationId": "listMonitors",
        "parameters": [
          {
            "name": "status",
            "required": false,
            "in": "query",
            "schema": {}
          },
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "cursor",
            "required": false,
            "in": "query",
            "schema": {}
          }
        ],
        "responses": {
          "200": {
            "description": "Monitors with pagination.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MonitorListResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Authentication is required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 401,
                  "error": "Unauthorized",
                  "message": "Authentication is required.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "404": {
            "description": "The requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 404,
                  "error": "Not Found",
                  "message": "Resource not found.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 500,
                  "error": "Internal Server Error",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          }
        },
        "security": [
          {
            "AccessKey": [],
            "SecretKey": []
          }
        ],
        "summary": "List monitors",
        "tags": [
          "Monitors"
        ]
      }
    },
    "/api/v1/monitors/{id}": {
      "patch": {
        "description": "Update a monitor configuration, schedule, or status.",
        "operationId": "updateMonitor",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Monitor ID.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateMonitorDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Monitor updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MonitorResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "The request body or parameters are invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 400,
                  "error": "Bad Request",
                  "message": "Validation failed",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b",
                  "errors": [
                    {
                      "property": "body.query",
                      "message": "query must be a string",
                      "constraints": {
                        "isString": "query must be a string"
                      }
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Authentication is required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 401,
                  "error": "Unauthorized",
                  "message": "Authentication is required.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "404": {
            "description": "The requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 404,
                  "error": "Not Found",
                  "message": "Resource not found.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 500,
                  "error": "Internal Server Error",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          }
        },
        "security": [
          {
            "AccessKey": [],
            "SecretKey": []
          }
        ],
        "summary": "Update monitor",
        "tags": [
          "Monitors"
        ]
      },
      "delete": {
        "description": "Delete a monitor by ID.",
        "operationId": "deleteMonitor",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Monitor ID.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Monitor deleted."
          },
          "401": {
            "description": "Authentication is required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 401,
                  "error": "Unauthorized",
                  "message": "Authentication is required.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "404": {
            "description": "The requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 404,
                  "error": "Not Found",
                  "message": "Resource not found.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 500,
                  "error": "Internal Server Error",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          }
        },
        "security": [
          {
            "AccessKey": [],
            "SecretKey": []
          }
        ],
        "summary": "Delete monitor",
        "tags": [
          "Monitors"
        ]
      },
      "get": {
        "description": "Retrieve a monitor by ID.",
        "operationId": "getMonitor",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Monitor ID.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Monitor details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MonitorResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Authentication is required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 401,
                  "error": "Unauthorized",
                  "message": "Authentication is required.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "404": {
            "description": "The requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 404,
                  "error": "Not Found",
                  "message": "Resource not found.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 500,
                  "error": "Internal Server Error",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          }
        },
        "security": [
          {
            "AccessKey": [],
            "SecretKey": []
          }
        ],
        "summary": "Get monitor",
        "tags": [
          "Monitors"
        ]
      }
    },
    "/api/v1/monitors/{id}/run-now": {
      "post": {
        "description": "Trigger a monitor run immediately instead of waiting for its next scheduled time.",
        "operationId": "runMonitorNow",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Monitor ID.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RunNowBodyDto"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Monitor run accepted.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MonitorResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "The request body or parameters are invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 400,
                  "error": "Bad Request",
                  "message": "Validation failed",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b",
                  "errors": [
                    {
                      "property": "body.query",
                      "message": "query must be a string",
                      "constraints": {
                        "isString": "query must be a string"
                      }
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Authentication is required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 401,
                  "error": "Unauthorized",
                  "message": "Authentication is required.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "404": {
            "description": "The requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 404,
                  "error": "Not Found",
                  "message": "Resource not found.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 500,
                  "error": "Internal Server Error",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          }
        },
        "security": [
          {
            "AccessKey": [],
            "SecretKey": []
          }
        ],
        "summary": "Run monitor now",
        "tags": [
          "Monitors"
        ]
      }
    },
    "/api/v1/monitors/{id}/events": {
      "get": {
        "description": "List events found by a monitor.",
        "operationId": "listMonitorEvents",
        "parameters": [
          {
            "name": "since",
            "required": false,
            "in": "query",
            "description": "ISO timestamp — only return events detected after this time",
            "schema": {}
          },
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "cursor",
            "required": false,
            "in": "query",
            "schema": {}
          },
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Monitor ID.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Monitor events with pagination.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MonitorEventListResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Authentication is required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 401,
                  "error": "Unauthorized",
                  "message": "Authentication is required.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "404": {
            "description": "The requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 404,
                  "error": "Not Found",
                  "message": "Resource not found.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 500,
                  "error": "Internal Server Error",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          }
        },
        "security": [
          {
            "AccessKey": [],
            "SecretKey": []
          }
        ],
        "summary": "List monitor events",
        "tags": [
          "Monitors"
        ]
      }
    },
    "/api/v1/search": {
      "post": {
        "description": "Run a search across supported web and social sources. The default response returns an operation to poll; add sync=true only when you want to wait briefly for an immediate result.",
        "operationId": "submitSearch",
        "parameters": [
          {
            "name": "sync",
            "required": false,
            "in": "query",
            "description": "Set to true to wait briefly for a completed result instead of immediately returning an operation to poll.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "description": "Prevents duplicate work if you retry the same request with the same key.",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostSearchDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Search completed immediately.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResultDto"
                }
              }
            }
          },
          "202": {
            "description": "Search accepted. Poll the returned URL for status and results.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchAcceptedDto"
                }
              }
            }
          },
          "400": {
            "description": "The request body or parameters are invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 400,
                  "error": "Bad Request",
                  "message": "Validation failed",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b",
                  "errors": [
                    {
                      "property": "body.query",
                      "message": "query must be a string",
                      "constraints": {
                        "isString": "query must be a string"
                      }
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Authentication is required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 401,
                  "error": "Unauthorized",
                  "message": "Authentication is required.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "402": {
            "description": "The organization does not have enough credits for this request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 402,
                  "error": "Payment Required",
                  "message": "Insufficient credits.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "422": {
            "description": "The request body is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 422,
                  "error": "Unprocessable Entity",
                  "message": "Validation failed",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b",
                  "errors": [
                    {
                      "property": "body.query",
                      "message": "query must be a string",
                      "constraints": {
                        "isString": "query must be a string"
                      }
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 500,
                  "error": "Internal Server Error",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          }
        },
        "security": [
          {
            "AccessKey": [],
            "SecretKey": []
          }
        ],
        "summary": "Submit search",
        "tags": [
          "Search"
        ]
      },
      "get": {
        "description": "List previous searches for your organization.",
        "operationId": "listSearches",
        "parameters": [
          {
            "name": "type",
            "required": false,
            "in": "query",
            "description": "Filter by search type",
            "schema": {}
          },
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "description": "Page size (max 200)",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "cursor",
            "required": false,
            "in": "query",
            "description": "Pagination cursor (created_at ISO)",
            "schema": {}
          }
        ],
        "responses": {
          "200": {
            "description": "Searches with pagination.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchListResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Authentication is required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 401,
                  "error": "Unauthorized",
                  "message": "Authentication is required.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 500,
                  "error": "Internal Server Error",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          }
        },
        "security": [
          {
            "AccessKey": [],
            "SecretKey": []
          }
        ],
        "summary": "List searches",
        "tags": [
          "Search"
        ]
      }
    },
    "/api/v1/search/{id}": {
      "get": {
        "description": "Check the status of a search and retrieve the result once it completes.",
        "operationId": "getSearchResult",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Search ID.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Current search status, progress, result, or error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResultDto"
                }
              }
            }
          },
          "401": {
            "description": "Authentication is required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 401,
                  "error": "Unauthorized",
                  "message": "Authentication is required.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "404": {
            "description": "The requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 404,
                  "error": "Not Found",
                  "message": "Resource not found.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests. Slow down before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 429,
                  "error": "Too Many Requests",
                  "message": "Too many requests.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 500,
                  "error": "Internal Server Error",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          }
        },
        "security": [
          {
            "AccessKey": [],
            "SecretKey": []
          }
        ],
        "summary": "Get search result",
        "tags": [
          "Search"
        ]
      }
    },
    "/api/v1/platform/scrapers/image/deepfake-detection": {
      "post": {
        "description": "Analyze an image for signs of face manipulation. Submit either a public image URL or a multipart image file.",
        "operationId": "detectImageDeepfake",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PlatformImageDeepfakeDetectionDto"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/PlatformImageDeepfakeDetectionDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Image authenticity analysis result.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data",
                    "meta"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ImageDeepfakeDetectionResponseDto"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/PublicResponseMetaDto"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request body or parameters are invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 400,
                  "error": "Bad Request",
                  "message": "Validation failed",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b",
                  "errors": [
                    {
                      "property": "body.query",
                      "message": "query must be a string",
                      "constraints": {
                        "isString": "query must be a string"
                      }
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Authentication is required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 401,
                  "error": "Unauthorized",
                  "message": "Authentication is required.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "402": {
            "description": "The organization does not have enough credits for this request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 402,
                  "error": "Payment Required",
                  "message": "Insufficient credits.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 500,
                  "error": "Internal Server Error",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "502": {
            "description": "The upstream service could not complete the request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 502,
                  "error": "Bad Gateway",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "503": {
            "description": "The service is temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 503,
                  "error": "Service Unavailable",
                  "message": "Service temporarily unavailable.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          }
        },
        "security": [
          {
            "AccessKey": [],
            "SecretKey": []
          }
        ],
        "summary": "Detect image deepfakes",
        "tags": [
          "Scrapers"
        ]
      }
    },
    "/api/v1/platform/scrapers/linkedin/finder": {
      "post": {
        "description": "Find LinkedIn company URLs from website domains or URLs.",
        "operationId": "findLinkedInCompanies",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PlatformLinkedInFinderDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "LinkedIn company URLs found from domains or URLs.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data",
                    "meta"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/LinkedInFinderResponseDto"
                      }
                    },
                    "meta": {
                      "$ref": "#/components/schemas/PublicResponseMetaDto"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request body or parameters are invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 400,
                  "error": "Bad Request",
                  "message": "Validation failed",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b",
                  "errors": [
                    {
                      "property": "body.query",
                      "message": "query must be a string",
                      "constraints": {
                        "isString": "query must be a string"
                      }
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Authentication is required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 401,
                  "error": "Unauthorized",
                  "message": "Authentication is required.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "402": {
            "description": "The organization does not have enough credits for this request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 402,
                  "error": "Payment Required",
                  "message": "Insufficient credits.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 500,
                  "error": "Internal Server Error",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "502": {
            "description": "The upstream service could not complete the request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 502,
                  "error": "Bad Gateway",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          }
        },
        "security": [
          {
            "AccessKey": [],
            "SecretKey": []
          }
        ],
        "summary": "Find LinkedIn companies",
        "tags": [
          "Scrapers"
        ]
      }
    },
    "/api/v1/platform/scrapers/linkedin/profile": {
      "post": {
        "description": "Fetch public profile details for a LinkedIn username.",
        "operationId": "getLinkedInProfile",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PlatformLinkedInProfileDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "LinkedIn profile data.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data",
                    "meta"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "nullable": true,
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/LinkedInProfileResponseDto"
                        }
                      ]
                    },
                    "meta": {
                      "$ref": "#/components/schemas/PublicResponseMetaDto"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request body or parameters are invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 400,
                  "error": "Bad Request",
                  "message": "Validation failed",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b",
                  "errors": [
                    {
                      "property": "body.query",
                      "message": "query must be a string",
                      "constraints": {
                        "isString": "query must be a string"
                      }
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Authentication is required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 401,
                  "error": "Unauthorized",
                  "message": "Authentication is required.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "402": {
            "description": "The organization does not have enough credits for this request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 402,
                  "error": "Payment Required",
                  "message": "Insufficient credits.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 500,
                  "error": "Internal Server Error",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "502": {
            "description": "The upstream service could not complete the request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 502,
                  "error": "Bad Gateway",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          }
        },
        "security": [
          {
            "AccessKey": [],
            "SecretKey": []
          }
        ],
        "summary": "Get LinkedIn profile",
        "tags": [
          "Scrapers"
        ]
      }
    },
    "/api/v1/platform/scrapers/linkedin/company": {
      "post": {
        "description": "Fetch public company details for a LinkedIn slug or URL.",
        "operationId": "getLinkedInCompany",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PlatformLinkedInCompanyDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "LinkedIn company data.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data",
                    "meta"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "nullable": true,
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/LinkedInCompanyResponseDto"
                        }
                      ]
                    },
                    "meta": {
                      "$ref": "#/components/schemas/PublicResponseMetaDto"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request body or parameters are invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 400,
                  "error": "Bad Request",
                  "message": "Validation failed",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b",
                  "errors": [
                    {
                      "property": "body.query",
                      "message": "query must be a string",
                      "constraints": {
                        "isString": "query must be a string"
                      }
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Authentication is required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 401,
                  "error": "Unauthorized",
                  "message": "Authentication is required.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "402": {
            "description": "The organization does not have enough credits for this request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 402,
                  "error": "Payment Required",
                  "message": "Insufficient credits.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 500,
                  "error": "Internal Server Error",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "502": {
            "description": "The upstream service could not complete the request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 502,
                  "error": "Bad Gateway",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          }
        },
        "security": [
          {
            "AccessKey": [],
            "SecretKey": []
          }
        ],
        "summary": "Get LinkedIn company",
        "tags": [
          "Scrapers"
        ]
      }
    },
    "/api/v1/platform/scrapers/linkedin/company-posts": {
      "post": {
        "description": "Fetch recent posts for a LinkedIn company page.",
        "operationId": "listLinkedInCompanyPosts",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PlatformLinkedInCompanyPostsDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "LinkedIn company posts.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data",
                    "meta"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/LinkedInCompanyPostsResponseDto"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/PublicResponseMetaDto"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request body or parameters are invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 400,
                  "error": "Bad Request",
                  "message": "Validation failed",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b",
                  "errors": [
                    {
                      "property": "body.query",
                      "message": "query must be a string",
                      "constraints": {
                        "isString": "query must be a string"
                      }
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Authentication is required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 401,
                  "error": "Unauthorized",
                  "message": "Authentication is required.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "402": {
            "description": "The organization does not have enough credits for this request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 402,
                  "error": "Payment Required",
                  "message": "Insufficient credits.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 500,
                  "error": "Internal Server Error",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "502": {
            "description": "The upstream service could not complete the request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 502,
                  "error": "Bad Gateway",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          }
        },
        "security": [
          {
            "AccessKey": [],
            "SecretKey": []
          }
        ],
        "summary": "List LinkedIn company posts",
        "tags": [
          "Scrapers"
        ]
      }
    },
    "/api/v1/platform/scrapers/linkedin/profile-posts": {
      "post": {
        "description": "Queue a LinkedIn profile posts scrape and poll the returned operation URL for results.",
        "operationId": "listLinkedInProfilePosts",
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "description": "Optional. Reusing the same key for the same organization returns the existing queued profile-posts operation.",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PlatformLinkedInProfilePostsDto"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Profile posts scrape accepted. Poll the returned operation URL for results.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data",
                    "meta"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/WebCrawlAcceptedResponseDto"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/PublicResponseMetaDto"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request body or parameters are invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 400,
                  "error": "Bad Request",
                  "message": "Validation failed",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b",
                  "errors": [
                    {
                      "property": "body.query",
                      "message": "query must be a string",
                      "constraints": {
                        "isString": "query must be a string"
                      }
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Authentication is required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 401,
                  "error": "Unauthorized",
                  "message": "Authentication is required.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "402": {
            "description": "The organization does not have enough credits for this request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 402,
                  "error": "Payment Required",
                  "message": "Insufficient credits.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 500,
                  "error": "Internal Server Error",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "503": {
            "description": "The service is temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 503,
                  "error": "Service Unavailable",
                  "message": "Service temporarily unavailable.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          }
        },
        "security": [
          {
            "AccessKey": [],
            "SecretKey": []
          }
        ],
        "summary": "List LinkedIn profile posts",
        "tags": [
          "Scrapers"
        ]
      }
    },
    "/api/v1/platform/scrapers/linkedin/keyword-posts": {
      "post": {
        "description": "Search LinkedIn posts by keyword.",
        "operationId": "searchLinkedInKeywordPosts",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PlatformLinkedInKeywordPostsDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "LinkedIn posts matching a keyword.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data",
                    "meta"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/LinkedInPostResponseDto"
                      }
                    },
                    "meta": {
                      "$ref": "#/components/schemas/PublicResponseMetaDto"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request body or parameters are invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 400,
                  "error": "Bad Request",
                  "message": "Validation failed",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b",
                  "errors": [
                    {
                      "property": "body.query",
                      "message": "query must be a string",
                      "constraints": {
                        "isString": "query must be a string"
                      }
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Authentication is required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 401,
                  "error": "Unauthorized",
                  "message": "Authentication is required.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "402": {
            "description": "The organization does not have enough credits for this request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 402,
                  "error": "Payment Required",
                  "message": "Insufficient credits.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 500,
                  "error": "Internal Server Error",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "502": {
            "description": "The upstream service could not complete the request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 502,
                  "error": "Bad Gateway",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          }
        },
        "security": [
          {
            "AccessKey": [],
            "SecretKey": []
          }
        ],
        "summary": "Search LinkedIn posts",
        "tags": [
          "Scrapers"
        ]
      }
    },
    "/api/v1/platform/scrapers/linkedin/post-reactions": {
      "post": {
        "description": "Fetch reactions for one or more LinkedIn post URLs.",
        "operationId": "listLinkedInPostReactions",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PlatformLinkedInPostUrlsDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "LinkedIn post reactions.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data",
                    "meta"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/LinkedInPostReactionResponseDto"
                      }
                    },
                    "meta": {
                      "$ref": "#/components/schemas/PublicResponseMetaDto"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request body or parameters are invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 400,
                  "error": "Bad Request",
                  "message": "Validation failed",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b",
                  "errors": [
                    {
                      "property": "body.query",
                      "message": "query must be a string",
                      "constraints": {
                        "isString": "query must be a string"
                      }
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Authentication is required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 401,
                  "error": "Unauthorized",
                  "message": "Authentication is required.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "402": {
            "description": "The organization does not have enough credits for this request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 402,
                  "error": "Payment Required",
                  "message": "Insufficient credits.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 500,
                  "error": "Internal Server Error",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "502": {
            "description": "The upstream service could not complete the request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 502,
                  "error": "Bad Gateway",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          }
        },
        "security": [
          {
            "AccessKey": [],
            "SecretKey": []
          }
        ],
        "summary": "List LinkedIn post reactions",
        "tags": [
          "Scrapers"
        ]
      }
    },
    "/api/v1/platform/scrapers/linkedin/post-comments": {
      "post": {
        "description": "Fetch comments for one or more LinkedIn post URLs.",
        "operationId": "listLinkedInPostComments",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PlatformLinkedInPostUrlsDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "LinkedIn post comments.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data",
                    "meta"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/LinkedInPostCommentResponseDto"
                      }
                    },
                    "meta": {
                      "$ref": "#/components/schemas/PublicResponseMetaDto"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request body or parameters are invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 400,
                  "error": "Bad Request",
                  "message": "Validation failed",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b",
                  "errors": [
                    {
                      "property": "body.query",
                      "message": "query must be a string",
                      "constraints": {
                        "isString": "query must be a string"
                      }
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Authentication is required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 401,
                  "error": "Unauthorized",
                  "message": "Authentication is required.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "402": {
            "description": "The organization does not have enough credits for this request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 402,
                  "error": "Payment Required",
                  "message": "Insufficient credits.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 500,
                  "error": "Internal Server Error",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "502": {
            "description": "The upstream service could not complete the request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 502,
                  "error": "Bad Gateway",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          }
        },
        "security": [
          {
            "AccessKey": [],
            "SecretKey": []
          }
        ],
        "summary": "List LinkedIn post comments",
        "tags": [
          "Scrapers"
        ]
      }
    },
    "/api/v1/platform/scrapers/linkedin/profile-reactions": {
      "post": {
        "description": "Fetch recent LinkedIn posts a public profile has reacted to.",
        "operationId": "listLinkedInProfileReactions",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PlatformLinkedInProfileActivityDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "LinkedIn profile reactions.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data",
                    "meta"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/LinkedInProfileReactionResponseDto"
                      }
                    },
                    "meta": {
                      "$ref": "#/components/schemas/PublicResponseMetaDto"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request body or parameters are invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 400,
                  "error": "Bad Request",
                  "message": "Validation failed",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b",
                  "errors": [
                    {
                      "property": "body.query",
                      "message": "query must be a string",
                      "constraints": {
                        "isString": "query must be a string"
                      }
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Authentication is required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 401,
                  "error": "Unauthorized",
                  "message": "Authentication is required.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "402": {
            "description": "The organization does not have enough credits for this request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 402,
                  "error": "Payment Required",
                  "message": "Insufficient credits.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 500,
                  "error": "Internal Server Error",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "502": {
            "description": "The upstream service could not complete the request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 502,
                  "error": "Bad Gateway",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          }
        },
        "security": [
          {
            "AccessKey": [],
            "SecretKey": []
          }
        ],
        "summary": "List LinkedIn profile reactions",
        "tags": [
          "Scrapers"
        ]
      }
    },
    "/api/v1/platform/scrapers/linkedin/profile-comments": {
      "post": {
        "description": "Fetch recent LinkedIn posts a public profile has commented on.",
        "operationId": "listLinkedInProfileComments",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PlatformLinkedInProfileActivityDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "LinkedIn profile comments.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data",
                    "meta"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/LinkedInProfileCommentResponseDto"
                      }
                    },
                    "meta": {
                      "$ref": "#/components/schemas/PublicResponseMetaDto"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request body or parameters are invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 400,
                  "error": "Bad Request",
                  "message": "Validation failed",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b",
                  "errors": [
                    {
                      "property": "body.query",
                      "message": "query must be a string",
                      "constraints": {
                        "isString": "query must be a string"
                      }
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Authentication is required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 401,
                  "error": "Unauthorized",
                  "message": "Authentication is required.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "402": {
            "description": "The organization does not have enough credits for this request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 402,
                  "error": "Payment Required",
                  "message": "Insufficient credits.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 500,
                  "error": "Internal Server Error",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "502": {
            "description": "The upstream service could not complete the request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 502,
                  "error": "Bad Gateway",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          }
        },
        "security": [
          {
            "AccessKey": [],
            "SecretKey": []
          }
        ],
        "summary": "List LinkedIn profile comments",
        "tags": [
          "Scrapers"
        ]
      }
    },
    "/api/v1/platform/scrapers/x/profile": {
      "post": {
        "description": "Fetch public profile details and recent posts for an X (Twitter) username.",
        "operationId": "getXProfile",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PlatformXProfileDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data",
                    "meta"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/XProfileResponseDto"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/PublicResponseMetaDto"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request body or parameters are invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 400,
                  "error": "Bad Request",
                  "message": "Validation failed",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b",
                  "errors": [
                    {
                      "property": "body.query",
                      "message": "query must be a string",
                      "constraints": {
                        "isString": "query must be a string"
                      }
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Authentication is required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 401,
                  "error": "Unauthorized",
                  "message": "Authentication is required.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "402": {
            "description": "The organization does not have enough credits for this request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 402,
                  "error": "Payment Required",
                  "message": "Insufficient credits.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 500,
                  "error": "Internal Server Error",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "502": {
            "description": "The upstream service could not complete the request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 502,
                  "error": "Bad Gateway",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          }
        },
        "security": [
          {
            "AccessKey": [],
            "SecretKey": []
          }
        ],
        "summary": "Get X profile",
        "tags": [
          "Scrapers"
        ]
      }
    },
    "/api/v1/platform/scrapers/x/search-posts": {
      "post": {
        "description": "Search public X (Twitter) posts by keyword or query, with optional date, language, and location filters.",
        "operationId": "searchXPosts",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PlatformXSearchPostsDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data",
                    "meta"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/XTweetResponseDto"
                      }
                    },
                    "meta": {
                      "$ref": "#/components/schemas/PublicResponseMetaDto"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request body or parameters are invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 400,
                  "error": "Bad Request",
                  "message": "Validation failed",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b",
                  "errors": [
                    {
                      "property": "body.query",
                      "message": "query must be a string",
                      "constraints": {
                        "isString": "query must be a string"
                      }
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Authentication is required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 401,
                  "error": "Unauthorized",
                  "message": "Authentication is required.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "402": {
            "description": "The organization does not have enough credits for this request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 402,
                  "error": "Payment Required",
                  "message": "Insufficient credits.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 500,
                  "error": "Internal Server Error",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "502": {
            "description": "The upstream service could not complete the request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 502,
                  "error": "Bad Gateway",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          }
        },
        "security": [
          {
            "AccessKey": [],
            "SecretKey": []
          }
        ],
        "summary": "Search X posts",
        "tags": [
          "Scrapers"
        ]
      }
    },
    "/api/v1/platform/scrapers/x/post": {
      "post": {
        "description": "Fetch a single public X (Twitter) post by its URL.",
        "operationId": "getXPost",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PlatformXPostDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data",
                    "meta"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "nullable": true,
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/XTweetResponseDto"
                        }
                      ]
                    },
                    "meta": {
                      "$ref": "#/components/schemas/PublicResponseMetaDto"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request body or parameters are invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 400,
                  "error": "Bad Request",
                  "message": "Validation failed",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b",
                  "errors": [
                    {
                      "property": "body.query",
                      "message": "query must be a string",
                      "constraints": {
                        "isString": "query must be a string"
                      }
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Authentication is required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 401,
                  "error": "Unauthorized",
                  "message": "Authentication is required.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "402": {
            "description": "The organization does not have enough credits for this request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 402,
                  "error": "Payment Required",
                  "message": "Insufficient credits.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 500,
                  "error": "Internal Server Error",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "502": {
            "description": "The upstream service could not complete the request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 502,
                  "error": "Bad Gateway",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          }
        },
        "security": [
          {
            "AccessKey": [],
            "SecretKey": []
          }
        ],
        "summary": "Get X post by URL",
        "tags": [
          "Scrapers"
        ]
      }
    },
    "/api/v1/platform/scrapers/x/conversation": {
      "post": {
        "description": "Fetch a public X (Twitter) conversation thread by post ID.",
        "operationId": "getXConversation",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PlatformXConversationDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data",
                    "meta"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/XTweetResponseDto"
                      }
                    },
                    "meta": {
                      "$ref": "#/components/schemas/PublicResponseMetaDto"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request body or parameters are invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 400,
                  "error": "Bad Request",
                  "message": "Validation failed",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b",
                  "errors": [
                    {
                      "property": "body.query",
                      "message": "query must be a string",
                      "constraints": {
                        "isString": "query must be a string"
                      }
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Authentication is required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 401,
                  "error": "Unauthorized",
                  "message": "Authentication is required.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "402": {
            "description": "The organization does not have enough credits for this request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 402,
                  "error": "Payment Required",
                  "message": "Insufficient credits.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 500,
                  "error": "Internal Server Error",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "502": {
            "description": "The upstream service could not complete the request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 502,
                  "error": "Bad Gateway",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          }
        },
        "security": [
          {
            "AccessKey": [],
            "SecretKey": []
          }
        ],
        "summary": "Get X conversation thread",
        "tags": [
          "Scrapers"
        ]
      }
    },
    "/api/v1/platform/scrapers/instagram/profile": {
      "post": {
        "description": "Fetch public profile details for an Instagram username.",
        "operationId": "getInstagramProfile",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PlatformInstagramUsernameDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Instagram profile data.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data",
                    "meta"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "nullable": true,
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/InstagramProfileResponseDto"
                        }
                      ]
                    },
                    "meta": {
                      "$ref": "#/components/schemas/PublicResponseMetaDto"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request body or parameters are invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 400,
                  "error": "Bad Request",
                  "message": "Validation failed",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b",
                  "errors": [
                    {
                      "property": "body.query",
                      "message": "query must be a string",
                      "constraints": {
                        "isString": "query must be a string"
                      }
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Authentication is required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 401,
                  "error": "Unauthorized",
                  "message": "Authentication is required.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "402": {
            "description": "The organization does not have enough credits for this request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 402,
                  "error": "Payment Required",
                  "message": "Insufficient credits.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 500,
                  "error": "Internal Server Error",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "502": {
            "description": "The upstream service could not complete the request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 502,
                  "error": "Bad Gateway",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          }
        },
        "security": [
          {
            "AccessKey": [],
            "SecretKey": []
          }
        ],
        "summary": "Get Instagram profile",
        "tags": [
          "Scrapers"
        ]
      }
    },
    "/api/v1/platform/scrapers/instagram/posts": {
      "post": {
        "description": "Fetch recent posts for an Instagram username.",
        "operationId": "listInstagramPosts",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PlatformInstagramUsernameDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Instagram posts.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data",
                    "meta"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/InstagramPostResponseDto"
                      }
                    },
                    "meta": {
                      "$ref": "#/components/schemas/PublicResponseMetaDto"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request body or parameters are invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 400,
                  "error": "Bad Request",
                  "message": "Validation failed",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b",
                  "errors": [
                    {
                      "property": "body.query",
                      "message": "query must be a string",
                      "constraints": {
                        "isString": "query must be a string"
                      }
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Authentication is required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 401,
                  "error": "Unauthorized",
                  "message": "Authentication is required.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "402": {
            "description": "The organization does not have enough credits for this request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 402,
                  "error": "Payment Required",
                  "message": "Insufficient credits.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 500,
                  "error": "Internal Server Error",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "502": {
            "description": "The upstream service could not complete the request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 502,
                  "error": "Bad Gateway",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          }
        },
        "security": [
          {
            "AccessKey": [],
            "SecretKey": []
          }
        ],
        "summary": "List Instagram posts",
        "tags": [
          "Scrapers"
        ]
      }
    },
    "/api/v1/platform/scrapers/instagram/post-details": {
      "post": {
        "description": "Fetch details for an Instagram post or reel URL.",
        "operationId": "getInstagramPost",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PlatformInstagramPostDetailsDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Instagram post details.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data",
                    "meta"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "nullable": true,
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/InstagramPostResponseDto"
                        }
                      ]
                    },
                    "meta": {
                      "$ref": "#/components/schemas/PublicResponseMetaDto"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request body or parameters are invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 400,
                  "error": "Bad Request",
                  "message": "Validation failed",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b",
                  "errors": [
                    {
                      "property": "body.query",
                      "message": "query must be a string",
                      "constraints": {
                        "isString": "query must be a string"
                      }
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Authentication is required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 401,
                  "error": "Unauthorized",
                  "message": "Authentication is required.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "402": {
            "description": "The organization does not have enough credits for this request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 402,
                  "error": "Payment Required",
                  "message": "Insufficient credits.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 500,
                  "error": "Internal Server Error",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "502": {
            "description": "The upstream service could not complete the request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 502,
                  "error": "Bad Gateway",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          }
        },
        "security": [
          {
            "AccessKey": [],
            "SecretKey": []
          }
        ],
        "summary": "Get Instagram post",
        "tags": [
          "Scrapers"
        ]
      }
    },
    "/api/v1/platform/scrapers/instagram/post-comments": {
      "post": {
        "description": "Fetch comments for an Instagram post or reel URL.",
        "operationId": "listInstagramPostComments",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PlatformInstagramPostCommentsDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Instagram post comments.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data",
                    "meta"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/InstagramCommentResponseDto"
                      }
                    },
                    "meta": {
                      "$ref": "#/components/schemas/PublicResponseMetaDto"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request body or parameters are invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 400,
                  "error": "Bad Request",
                  "message": "Validation failed",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b",
                  "errors": [
                    {
                      "property": "body.query",
                      "message": "query must be a string",
                      "constraints": {
                        "isString": "query must be a string"
                      }
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Authentication is required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 401,
                  "error": "Unauthorized",
                  "message": "Authentication is required.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "402": {
            "description": "The organization does not have enough credits for this request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 402,
                  "error": "Payment Required",
                  "message": "Insufficient credits.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 500,
                  "error": "Internal Server Error",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "502": {
            "description": "The upstream service could not complete the request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 502,
                  "error": "Bad Gateway",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          }
        },
        "security": [
          {
            "AccessKey": [],
            "SecretKey": []
          }
        ],
        "summary": "List Instagram post comments",
        "tags": [
          "Scrapers"
        ]
      }
    },
    "/api/v1/platform/scrapers/instagram/followers": {
      "post": {
        "description": "Fetch followers for an Instagram username.",
        "operationId": "listInstagramFollowers",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PlatformInstagramFollowersDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Instagram followers.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data",
                    "meta"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/InstagramFollowScrapeResponseDto"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/PublicResponseMetaDto"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request body or parameters are invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 400,
                  "error": "Bad Request",
                  "message": "Validation failed",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b",
                  "errors": [
                    {
                      "property": "body.query",
                      "message": "query must be a string",
                      "constraints": {
                        "isString": "query must be a string"
                      }
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Authentication is required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 401,
                  "error": "Unauthorized",
                  "message": "Authentication is required.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "402": {
            "description": "The organization does not have enough credits for this request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 402,
                  "error": "Payment Required",
                  "message": "Insufficient credits.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 500,
                  "error": "Internal Server Error",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "502": {
            "description": "The upstream service could not complete the request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 502,
                  "error": "Bad Gateway",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          }
        },
        "security": [
          {
            "AccessKey": [],
            "SecretKey": []
          }
        ],
        "summary": "List Instagram followers",
        "tags": [
          "Scrapers"
        ]
      }
    },
    "/api/v1/platform/scrapers/instagram/following": {
      "post": {
        "description": "Fetch accounts followed by an Instagram username.",
        "operationId": "listInstagramFollowing",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PlatformInstagramFollowingDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Instagram following.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data",
                    "meta"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/InstagramFollowScrapeResponseDto"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/PublicResponseMetaDto"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request body or parameters are invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 400,
                  "error": "Bad Request",
                  "message": "Validation failed",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b",
                  "errors": [
                    {
                      "property": "body.query",
                      "message": "query must be a string",
                      "constraints": {
                        "isString": "query must be a string"
                      }
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Authentication is required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 401,
                  "error": "Unauthorized",
                  "message": "Authentication is required.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "402": {
            "description": "The organization does not have enough credits for this request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 402,
                  "error": "Payment Required",
                  "message": "Insufficient credits.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 500,
                  "error": "Internal Server Error",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "502": {
            "description": "The upstream service could not complete the request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 502,
                  "error": "Bad Gateway",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          }
        },
        "security": [
          {
            "AccessKey": [],
            "SecretKey": []
          }
        ],
        "summary": "List Instagram following",
        "tags": [
          "Scrapers"
        ]
      }
    },
    "/api/v1/platform/scrapers/youtube/video": {
      "post": {
        "description": "Fetch public page content for a YouTube video URL.",
        "operationId": "getYouTubeVideo",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PlatformYouTubeVideoDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "YouTube video page content.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data",
                    "meta"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/YouTubeVideoResponseDto"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/PublicResponseMetaDto"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request body or parameters are invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 400,
                  "error": "Bad Request",
                  "message": "Validation failed",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b",
                  "errors": [
                    {
                      "property": "body.query",
                      "message": "query must be a string",
                      "constraints": {
                        "isString": "query must be a string"
                      }
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Authentication is required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 401,
                  "error": "Unauthorized",
                  "message": "Authentication is required.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "402": {
            "description": "The organization does not have enough credits for this request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 402,
                  "error": "Payment Required",
                  "message": "Insufficient credits.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 500,
                  "error": "Internal Server Error",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "502": {
            "description": "The upstream service could not complete the request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 502,
                  "error": "Bad Gateway",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          }
        },
        "security": [
          {
            "AccessKey": [],
            "SecretKey": []
          }
        ],
        "summary": "Get YouTube video",
        "tags": [
          "Scrapers"
        ]
      }
    },
    "/api/v1/platform/scrapers/youtube/channel": {
      "post": {
        "description": "Fetch public page content for a YouTube channel URL.",
        "operationId": "getYouTubeChannel",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PlatformYouTubeChannelDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "YouTube channel page content.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data",
                    "meta"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/YouTubeChannelResponseDto"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/PublicResponseMetaDto"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request body or parameters are invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 400,
                  "error": "Bad Request",
                  "message": "Validation failed",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b",
                  "errors": [
                    {
                      "property": "body.query",
                      "message": "query must be a string",
                      "constraints": {
                        "isString": "query must be a string"
                      }
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Authentication is required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 401,
                  "error": "Unauthorized",
                  "message": "Authentication is required.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "402": {
            "description": "The organization does not have enough credits for this request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 402,
                  "error": "Payment Required",
                  "message": "Insufficient credits.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 500,
                  "error": "Internal Server Error",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "502": {
            "description": "The upstream service could not complete the request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 502,
                  "error": "Bad Gateway",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          }
        },
        "security": [
          {
            "AccessKey": [],
            "SecretKey": []
          }
        ],
        "summary": "Get YouTube channel",
        "tags": [
          "Scrapers"
        ]
      }
    },
    "/api/v1/platform/scrapers/facebook/post": {
      "post": {
        "description": "Fetch public page content for a Facebook post URL.",
        "operationId": "getFacebookPost",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PlatformFacebookPostDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Facebook post page content.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data",
                    "meta"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/FacebookPostResponseDto"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/PublicResponseMetaDto"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request body or parameters are invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 400,
                  "error": "Bad Request",
                  "message": "Validation failed",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b",
                  "errors": [
                    {
                      "property": "body.query",
                      "message": "query must be a string",
                      "constraints": {
                        "isString": "query must be a string"
                      }
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Authentication is required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 401,
                  "error": "Unauthorized",
                  "message": "Authentication is required.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "402": {
            "description": "The organization does not have enough credits for this request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 402,
                  "error": "Payment Required",
                  "message": "Insufficient credits.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 500,
                  "error": "Internal Server Error",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "502": {
            "description": "The upstream service could not complete the request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 502,
                  "error": "Bad Gateway",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          }
        },
        "security": [
          {
            "AccessKey": [],
            "SecretKey": []
          }
        ],
        "summary": "Get Facebook post",
        "tags": [
          "Scrapers"
        ]
      }
    },
    "/api/v1/platform/scrapers/facebook/page": {
      "post": {
        "description": "Fetch public page content for a Facebook page URL.",
        "operationId": "getFacebookPage",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PlatformFacebookPageDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Facebook page content.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data",
                    "meta"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/FacebookPageResponseDto"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/PublicResponseMetaDto"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request body or parameters are invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 400,
                  "error": "Bad Request",
                  "message": "Validation failed",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b",
                  "errors": [
                    {
                      "property": "body.query",
                      "message": "query must be a string",
                      "constraints": {
                        "isString": "query must be a string"
                      }
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Authentication is required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 401,
                  "error": "Unauthorized",
                  "message": "Authentication is required.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "402": {
            "description": "The organization does not have enough credits for this request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 402,
                  "error": "Payment Required",
                  "message": "Insufficient credits.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 500,
                  "error": "Internal Server Error",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "502": {
            "description": "The upstream service could not complete the request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 502,
                  "error": "Bad Gateway",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          }
        },
        "security": [
          {
            "AccessKey": [],
            "SecretKey": []
          }
        ],
        "summary": "Get Facebook page",
        "tags": [
          "Scrapers"
        ]
      }
    },
    "/api/v1/platform/scrapers/tiktok/profile": {
      "post": {
        "description": "Fetch public profile details and recent videos for a TikTok username.",
        "operationId": "getTikTokProfile",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PlatformTikTokUsernameDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "TikTok profile and video data.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data",
                    "meta"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/TikTokProfileScrapeResponseDto"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/PublicResponseMetaDto"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request body or parameters are invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 400,
                  "error": "Bad Request",
                  "message": "Validation failed",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b",
                  "errors": [
                    {
                      "property": "body.query",
                      "message": "query must be a string",
                      "constraints": {
                        "isString": "query must be a string"
                      }
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Authentication is required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 401,
                  "error": "Unauthorized",
                  "message": "Authentication is required.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "402": {
            "description": "The organization does not have enough credits for this request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 402,
                  "error": "Payment Required",
                  "message": "Insufficient credits.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 500,
                  "error": "Internal Server Error",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "502": {
            "description": "The upstream service could not complete the request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 502,
                  "error": "Bad Gateway",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          }
        },
        "security": [
          {
            "AccessKey": [],
            "SecretKey": []
          }
        ],
        "summary": "Get TikTok profile",
        "tags": [
          "Scrapers"
        ]
      }
    },
    "/api/v1/platform/scrapers/seo/domain": {
      "post": {
        "description": "Returns organic and paid search signals, keyword themes, and inferred tech stack for a domain.",
        "operationId": "getSeoDomainOverview",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PlatformSeoDomainDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Organic and paid search overview for a domain.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data",
                    "meta"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/SeoDomainResponseDto"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/PublicResponseMetaDto"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request body or parameters are invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 400,
                  "error": "Bad Request",
                  "message": "Validation failed",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b",
                  "errors": [
                    {
                      "property": "body.query",
                      "message": "query must be a string",
                      "constraints": {
                        "isString": "query must be a string"
                      }
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Authentication is required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 401,
                  "error": "Unauthorized",
                  "message": "Authentication is required.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "402": {
            "description": "The organization does not have enough credits for this request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 402,
                  "error": "Payment Required",
                  "message": "Insufficient credits.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 500,
                  "error": "Internal Server Error",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "502": {
            "description": "The upstream service could not complete the request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 502,
                  "error": "Bad Gateway",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          }
        },
        "security": [
          {
            "AccessKey": [],
            "SecretKey": []
          }
        ],
        "summary": "Get SEO domain overview",
        "tags": [
          "Scrapers"
        ]
      }
    },
    "/api/v1/platform/scrapers/seo/keywords": {
      "post": {
        "description": "Returns organic search keywords for a domain with optional filters and search-type segmentation.",
        "operationId": "getSeoKeywords",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PlatformSeoKeywordsDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Organic search keywords for a domain.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data",
                    "meta"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/SearchIntelligenceKeywordsResponseDto"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/PublicResponseMetaDto"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request body or parameters are invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 400,
                  "error": "Bad Request",
                  "message": "Validation failed",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b",
                  "errors": [
                    {
                      "property": "body.query",
                      "message": "query must be a string",
                      "constraints": {
                        "isString": "query must be a string"
                      }
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Authentication is required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 401,
                  "error": "Unauthorized",
                  "message": "Authentication is required.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "402": {
            "description": "The organization does not have enough credits for this request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 402,
                  "error": "Payment Required",
                  "message": "Insufficient credits.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 500,
                  "error": "Internal Server Error",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "502": {
            "description": "The upstream service could not complete the request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 502,
                  "error": "Bad Gateway",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          }
        },
        "security": [
          {
            "AccessKey": [],
            "SecretKey": []
          }
        ],
        "summary": "Get SEO keywords",
        "tags": [
          "Scrapers"
        ]
      }
    },
    "/api/v1/platform/scrapers/seo/competing-keywords": {
      "post": {
        "description": "Returns organic keywords shared across the supplied domains.",
        "operationId": "getSeoCompetingKeywords",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PlatformSearchIntelligenceCompetingDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Organic keywords shared across domains.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data",
                    "meta"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/SearchIntelligenceKeywordsResponseDto"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/PublicResponseMetaDto"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request body or parameters are invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 400,
                  "error": "Bad Request",
                  "message": "Validation failed",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b",
                  "errors": [
                    {
                      "property": "body.query",
                      "message": "query must be a string",
                      "constraints": {
                        "isString": "query must be a string"
                      }
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Authentication is required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 401,
                  "error": "Unauthorized",
                  "message": "Authentication is required.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "402": {
            "description": "The organization does not have enough credits for this request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 402,
                  "error": "Payment Required",
                  "message": "Insufficient credits.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 500,
                  "error": "Internal Server Error",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "502": {
            "description": "The upstream service could not complete the request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 502,
                  "error": "Bad Gateway",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          }
        },
        "security": [
          {
            "AccessKey": [],
            "SecretKey": []
          }
        ],
        "summary": "Get shared SEO keywords",
        "tags": [
          "Scrapers"
        ]
      }
    },
    "/api/v1/platform/scrapers/web/search": {
      "post": {
        "description": "Search the web and return normalized results in a stable response shape.",
        "operationId": "searchWeb",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PlatformWebSearchDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data",
                    "meta"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/WebSearchResponseDto"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/PublicResponseMetaDto"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request body or parameters are invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 400,
                  "error": "Bad Request",
                  "message": "Validation failed",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b",
                  "errors": [
                    {
                      "property": "body.query",
                      "message": "query must be a string",
                      "constraints": {
                        "isString": "query must be a string"
                      }
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Authentication is required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 401,
                  "error": "Unauthorized",
                  "message": "Authentication is required.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "402": {
            "description": "The organization does not have enough credits for this request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 402,
                  "error": "Payment Required",
                  "message": "Insufficient credits.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 500,
                  "error": "Internal Server Error",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "502": {
            "description": "The upstream service could not complete the request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 502,
                  "error": "Bad Gateway",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          }
        },
        "security": [
          {
            "AccessKey": [],
            "SecretKey": []
          }
        ],
        "summary": "Search web",
        "tags": [
          "Scrapers"
        ]
      }
    },
    "/api/v1/platform/scrapers/web/crawl": {
      "post": {
        "description": "Queue an asynchronous website crawl. Poll the returned operation URL for status and results.",
        "operationId": "crawlWebSite",
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "description": "Optional. Reusing the same key for the same organization returns the existing queued crawl operation.",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PlatformWebCrawlDto"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Crawl accepted. Poll the returned operation URL for results.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data",
                    "meta"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/WebCrawlAcceptedResponseDto"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/PublicResponseMetaDto"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request body or parameters are invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 400,
                  "error": "Bad Request",
                  "message": "Validation failed",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b",
                  "errors": [
                    {
                      "property": "body.query",
                      "message": "query must be a string",
                      "constraints": {
                        "isString": "query must be a string"
                      }
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Authentication is required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 401,
                  "error": "Unauthorized",
                  "message": "Authentication is required.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "402": {
            "description": "The organization does not have enough credits for this request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 402,
                  "error": "Payment Required",
                  "message": "Insufficient credits.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "403": {
            "description": "Error 403.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 403,
                  "error": "Forbidden",
                  "message": "Error 403.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 500,
                  "error": "Internal Server Error",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "503": {
            "description": "The service is temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 503,
                  "error": "Service Unavailable",
                  "message": "Service temporarily unavailable.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          }
        },
        "security": [
          {
            "AccessKey": [],
            "SecretKey": []
          }
        ],
        "summary": "Crawl website",
        "tags": [
          "Scrapers"
        ]
      }
    },
    "/api/v1/platform/scrapers/web/scrape": {
      "post": {
        "description": "Fetch a web page and return readable text plus requested markdown, HTML, links, metadata, or schema-guided JSON.",
        "operationId": "scrapeWebPage",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PlatformWebScrapeDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Scraped web page content.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data",
                    "meta"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/WebScrapeResponseDto"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/PublicResponseMetaDto"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request body or parameters are invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 400,
                  "error": "Bad Request",
                  "message": "Validation failed",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b",
                  "errors": [
                    {
                      "property": "body.query",
                      "message": "query must be a string",
                      "constraints": {
                        "isString": "query must be a string"
                      }
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Authentication is required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 401,
                  "error": "Unauthorized",
                  "message": "Authentication is required.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "402": {
            "description": "The organization does not have enough credits for this request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 402,
                  "error": "Payment Required",
                  "message": "Insufficient credits.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 500,
                  "error": "Internal Server Error",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "502": {
            "description": "The upstream service could not complete the request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 502,
                  "error": "Bad Gateway",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "503": {
            "description": "The service is temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 503,
                  "error": "Service Unavailable",
                  "message": "Service temporarily unavailable.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "504": {
            "description": "The upstream service timed out before completing the request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 504,
                  "error": "Gateway Timeout",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          }
        },
        "security": [
          {
            "AccessKey": [],
            "SecretKey": []
          }
        ],
        "summary": "Scrape web page",
        "tags": [
          "Scrapers"
        ]
      }
    },
    "/api/v1/platform/scrapers/web/scrape/jobs": {
      "post": {
        "description": "Queue an async browser scrape for dynamic or long pages and poll the returned operation URL for results.",
        "operationId": "createWebScrapeJob",
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "description": "Optional. Reusing the same key for the same organization returns the existing queued deep scrape operation.",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PlatformWebScrapeJobDto"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Deep scrape accepted. Poll the returned operation URL for results.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data",
                    "meta"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/WebScrapeJobAcceptedResponseDto"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/PublicResponseMetaDto"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request body or parameters are invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 400,
                  "error": "Bad Request",
                  "message": "Validation failed",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b",
                  "errors": [
                    {
                      "property": "body.query",
                      "message": "query must be a string",
                      "constraints": {
                        "isString": "query must be a string"
                      }
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Authentication is required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 401,
                  "error": "Unauthorized",
                  "message": "Authentication is required.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "402": {
            "description": "The organization does not have enough credits for this request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 402,
                  "error": "Payment Required",
                  "message": "Insufficient credits.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 500,
                  "error": "Internal Server Error",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "503": {
            "description": "The service is temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 503,
                  "error": "Service Unavailable",
                  "message": "Service temporarily unavailable.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          }
        },
        "security": [
          {
            "AccessKey": [],
            "SecretKey": []
          }
        ],
        "summary": "Queue a deep web scrape job",
        "tags": [
          "Scrapers"
        ]
      }
    },
    "/api/v1/platform/scrapers/web/scrape/batch": {
      "post": {
        "description": "Queue a batch scrape job and poll the returned operation URL for per-URL results.",
        "operationId": "batchScrapeWebPages",
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "description": "Optional. Reusing the same key for the same organization returns the existing queued batch operation.",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PlatformWebScrapeBatchDto"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Batch scrape accepted. Poll the returned operation URL for results.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data",
                    "meta"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/WebScrapeBatchAcceptedResponseDto"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/PublicResponseMetaDto"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request body or parameters are invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 400,
                  "error": "Bad Request",
                  "message": "Validation failed",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b",
                  "errors": [
                    {
                      "property": "body.query",
                      "message": "query must be a string",
                      "constraints": {
                        "isString": "query must be a string"
                      }
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Authentication is required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 401,
                  "error": "Unauthorized",
                  "message": "Authentication is required.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "402": {
            "description": "The organization does not have enough credits for this request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 402,
                  "error": "Payment Required",
                  "message": "Insufficient credits.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 500,
                  "error": "Internal Server Error",
                  "message": "An unexpected error occurred.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          },
          "503": {
            "description": "The service is temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicErrorResponseDto"
                },
                "example": {
                  "statusCode": 503,
                  "error": "Service Unavailable",
                  "message": "Service temporarily unavailable.",
                  "path": "/api/v1/search",
                  "timestamp": "2026-05-21T09:08:10.000Z",
                  "requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
                }
              }
            }
          }
        },
        "security": [
          {
            "AccessKey": [],
            "SecretKey": []
          }
        ],
        "summary": "Batch scrape web pages",
        "tags": [
          "Scrapers"
        ]
      }
    }
  },
  "info": {
    "title": "The Hog API",
    "description": "Public API reference for The Hog.",
    "version": "1.0",
    "contact": {}
  },
  "tags": [],
  "servers": [
    {
      "url": "https://developer.thehog.ai"
    }
  ],
  "components": {
    "securitySchemes": {
      "AccessKey": {
        "type": "apiKey",
        "in": "header",
        "name": "X-Access-Key",
        "description": "The public API key from the Credentials page."
      },
      "SecretKey": {
        "type": "apiKey",
        "in": "header",
        "name": "X-Secret-Key",
        "description": "The API secret shown when the credential is created."
      }
    },
    "schemas": {
      "PostCompanySearchDto": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "example": "B2B SaaS companies in Austin hiring engineers",
            "maxLength": 500
          },
          "limit": {
            "type": "number",
            "default": 25,
            "minimum": 1,
            "maximum": 100
          },
          "includeSignals": {
            "type": "boolean",
            "default": false
          },
          "filters": {
            "$ref": "#/components/schemas/EntitySearchFiltersDto"
          },
          "confirm": {
            "type": "boolean"
          }
        },
        "required": [
          "query"
        ]
      },
      "EntitySearchFiltersDto": {
        "type": "object",
        "properties": {
          "titles": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "titleMatch": {
            "type": "string",
            "enum": [
              "exact",
              "similar"
            ]
          },
          "locations": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "industries": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "employeeCount": {
            "$ref": "#/components/schemas/EntityEmployeeCountFilterDto"
          },
          "signals": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "company": {
            "$ref": "#/components/schemas/EntityCompanyNestedFilterDto"
          }
        }
      },
      "EntityEmployeeCountFilterDto": {
        "type": "object",
        "properties": {
          "min": {
            "type": "number",
            "minimum": 0
          },
          "max": {
            "type": "number",
            "minimum": 0
          }
        }
      },
      "EntityCompanyNestedFilterDto": {
        "type": "object",
        "properties": {
          "names": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "domains": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "linkedinUrls": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "industries": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "employeeCount": {
            "$ref": "#/components/schemas/EntityEmployeeCountFilterDto"
          },
          "signals": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "EntitySearchAcceptedPublicDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "operationId": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "queued"
            ]
          },
          "pollUrl": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "operationId",
          "status",
          "pollUrl"
        ]
      },
      "PublicErrorResponseDto": {
        "type": "object",
        "properties": {
          "statusCode": {
            "type": "number",
            "example": 400
          },
          "error": {
            "type": "string",
            "example": "Bad Request"
          },
          "message": {
            "type": "string",
            "example": "Validation failed"
          },
          "path": {
            "type": "string",
            "example": "/api/v1/search"
          },
          "requestId": {
            "type": "string",
            "example": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
          },
          "timestamp": {
            "type": "string",
            "example": "2026-05-21T09:08:10.000Z"
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicValidationErrorItemDto"
            }
          }
        },
        "required": [
          "statusCode",
          "error",
          "message",
          "path",
          "timestamp"
        ]
      },
      "PublicValidationErrorItemDto": {
        "type": "object",
        "properties": {
          "property": {
            "type": "string",
            "example": "body.query"
          },
          "message": {
            "type": "string",
            "example": "query must be a string"
          },
          "constraints": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "example": {
              "isString": "query must be a string"
            }
          }
        },
        "required": [
          "property",
          "message"
        ]
      },
      "PostPeopleSearchDto": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "example": "VP Engineering at hiring B2B SaaS companies in SF",
            "maxLength": 500
          },
          "limit": {
            "type": "number",
            "default": 25,
            "minimum": 1,
            "maximum": 100
          },
          "includeSignals": {
            "type": "boolean",
            "default": false
          },
          "includeContacts": {
            "type": "boolean",
            "default": false
          },
          "contactFields": {
            "type": "array",
            "minItems": 1,
            "maxItems": 2,
            "uniqueItems": true,
            "description": "Contact fields to enrich when includeContacts is true. Omit to preserve legacy includeContacts=true behavior, which requests both email and phone.",
            "example": [
              "email"
            ],
            "items": {
              "type": "string",
              "enum": [
                "email",
                "phone"
              ]
            }
          },
          "maxCredits": {
            "type": "number",
            "minimum": 0,
            "description": "Maximum credits the people search operation may charge. When omitted, normal account limits apply.",
            "example": 2500
          },
          "filters": {
            "$ref": "#/components/schemas/EntitySearchFiltersDto"
          },
          "confirm": {
            "type": "boolean"
          }
        },
        "required": [
          "query"
        ]
      },
      "PeopleSearchEstimateDto": {
        "type": "object",
        "properties": {
          "estimatedCredits": {
            "type": "number",
            "description": "Estimated credits to be consumed"
          },
          "likelySyncOrAsync": {
            "type": "string",
            "enum": [
              "sync",
              "async"
            ],
            "description": "Whether the real request will return 200 or 202"
          },
          "expectedLatencyRange": {
            "type": "string",
            "example": "30s-5m"
          },
          "withinPlanLimits": {
            "type": "boolean"
          },
          "breakdown": {
            "$ref": "#/components/schemas/PeopleSearchEstimateBreakdownDto"
          },
          "assumptions": {
            "$ref": "#/components/schemas/PeopleSearchEstimateAssumptionsDto"
          }
        },
        "required": [
          "estimatedCredits",
          "likelySyncOrAsync",
          "withinPlanLimits",
          "breakdown",
          "assumptions"
        ]
      },
      "PeopleSearchEstimateBreakdownDto": {
        "type": "object",
        "properties": {
          "baseSearchCredits": {
            "type": "number",
            "description": "Conservative base estimate for the people discovery work."
          },
          "contactEnrichment": {
            "$ref": "#/components/schemas/PeopleSearchEstimateContactBreakdownDto"
          }
        },
        "required": [
          "baseSearchCredits",
          "contactEnrichment"
        ]
      },
      "PeopleSearchEstimateContactBreakdownDto": {
        "type": "object",
        "properties": {
          "includeContacts": {
            "type": "boolean"
          },
          "fields": {
            "type": "array",
            "description": "Requested contact fields included in the estimate. Empty when includeContacts is false.",
            "items": {
              "type": "string",
              "enum": [
                "email",
                "phone"
              ]
            }
          },
          "maxPeople": {
            "type": "number",
            "description": "Maximum people count used for contact enrichment cost risk. This is the request limit after defaults are applied."
          },
          "contactAttemptsPerFieldPerPerson": {
            "type": "number",
            "description": "Worst-case contact enrichment attempts assumed for each requested contact field on each returned person."
          },
          "estimatedCredits": {
            "type": "number",
            "description": "Estimated contact enrichment credits included in estimatedCredits."
          }
        },
        "required": [
          "includeContacts",
          "fields",
          "maxPeople",
          "contactAttemptsPerFieldPerPerson",
          "estimatedCredits"
        ]
      },
      "PeopleSearchEstimateAssumptionsDto": {
        "type": "object",
        "properties": {
          "mode": {
            "type": "string",
            "example": "conservative_preflight_ceiling"
          },
          "description": {
            "type": "string",
            "description": "Human-readable explanation of the conservative estimate assumptions."
          }
        },
        "required": [
          "mode",
          "description"
        ]
      },
      "EntitySearchAcceptedDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "operationId": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "queued"
            ]
          },
          "pollUrl": {
            "type": "string"
          },
          "meta": {
            "type": "object"
          }
        },
        "required": [
          "id",
          "operationId",
          "status",
          "pollUrl",
          "meta"
        ]
      },
      "DeepResearchRequestDto": {
        "type": "object",
        "properties": {
          "prompt": {
            "type": "string",
            "description": "Research instructions.",
            "example": "Research AI CRM competitors"
          },
          "schema": {
            "type": "object",
            "additionalProperties": true,
            "description": "JSON Schema that defines the dynamic shape of result.data returned after the operation completes.",
            "example": {
              "type": "object",
              "properties": {
                "competitors": {
                  "type": "array"
                }
              }
            }
          },
          "model": {
            "type": "string",
            "description": "Optional model override."
          },
          "urls": {
            "description": "Optional seed URLs to prioritize during research.",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "inputAnchors": {
            "oneOf": [
              {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": true
                }
              },
              {
                "type": "object",
                "additionalProperties": true
              }
            ],
            "description": "Optional caller-owned anchor metadata overlaid into matching schema paths. Arrays preserve the previously documented contract; objects support keyed anchors used by the runtime.",
            "example": [
              {
                "input_anchor": {
                  "candidate_index": 1
                }
              }
            ]
          },
          "maxCredits": {
            "type": "integer",
            "format": "int32",
            "description": "Maximum credits to spend. Must match budget.maxCredits when both are provided."
          },
          "budget": {
            "$ref": "#/components/schemas/DeepResearchBudgetRequestDto"
          },
          "enrich": {
            "type": "boolean",
            "description": "Set false to disable server-side schema enrichment and fill exactly the supplied schema. Closed schemas (additionalProperties:false) are never enriched."
          },
          "confirm": {
            "type": "boolean",
            "description": "Set true to continue after a confirmation_required estimate warning."
          }
        },
        "required": [
          "prompt",
          "schema"
        ]
      },
      "DeepResearchBudgetRequestDto": {
        "type": "object",
        "properties": {
          "maxCredits": {
            "type": "integer",
            "format": "int32",
            "description": "Maximum credits to spend on this research run."
          }
        }
      },
      "DeepResearchQueuedResponseDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "operationId": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "queued"
            ]
          },
          "pollUrl": {
            "type": "string"
          },
          "meta": {
            "$ref": "#/components/schemas/DeepResearchAcceptedMetaDto"
          }
        },
        "required": [
          "id",
          "operationId",
          "status",
          "pollUrl"
        ]
      },
      "DeepResearchAcceptedMetaDto": {
        "type": "object",
        "properties": {
          "schemaContract": {
            "type": "object",
            "additionalProperties": true
          }
        }
      },
      "PostEnrichmentDto": {
        "type": "object",
        "properties": {
          "identifier": {
            "description": "Single person (mutually exclusive with identifiers)",
            "allOf": [
              {
                "$ref": "#/components/schemas/PersonIdentifierRecordDto"
              }
            ]
          },
          "identifiers": {
            "description": "Batch (max 100); mutually exclusive with identifier",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PersonIdentifierRecordDto"
            }
          },
          "fields": {
            "example": [
              "contact.email",
              "signals"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "signals_config": {
            "$ref": "#/components/schemas/SignalsConfigDto"
          }
        },
        "required": [
          "fields"
        ]
      },
      "PersonIdentifierRecordDto": {
        "type": "object",
        "properties": {
          "linkedin_url": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "x_handle": {
            "type": "string"
          },
          "github_username": {
            "type": "string"
          }
        }
      },
      "SignalsConfigDto": {
        "type": "object",
        "properties": {
          "platforms": {
            "description": "Opt-in platforms; omit or empty = all",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "max_posts": {
            "type": "object"
          },
          "intent_signals": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "since_days": {
            "type": "number"
          },
          "handles": {
            "type": "object"
          }
        }
      },
      "EnrichmentSyncResponseDto": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "additionalProperties": true
          },
          "meta": {
            "$ref": "#/components/schemas/PublicResponseMetaDto"
          }
        },
        "required": [
          "data",
          "meta"
        ]
      },
      "PublicResponseMetaDto": {
        "type": "object",
        "properties": {
          "requestId": {
            "type": "string"
          }
        },
        "required": [
          "requestId"
        ]
      },
      "EnrichmentQueuedResponseDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "operationId": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "queued"
            ]
          },
          "pollUrl": {
            "type": "string"
          },
          "meta": {
            "$ref": "#/components/schemas/PublicResponseMetaDto"
          }
        },
        "required": [
          "id",
          "operationId",
          "status",
          "pollUrl",
          "meta"
        ]
      },
      "OperationResponseDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "queued",
              "processing",
              "succeeded",
              "failed",
              "partial_success",
              "cancelled"
            ]
          },
          "progress": {
            "type": "number",
            "nullable": true
          },
          "result": {
            "type": "object",
            "nullable": true,
            "additionalProperties": true
          },
          "error": {
            "type": "object",
            "nullable": true,
            "additionalProperties": true
          }
        },
        "required": [
          "id",
          "status"
        ]
      },
      "CreateMonitorDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Human-readable name",
            "example": "Competitor mentions"
          },
          "type": {
            "type": "string",
            "description": "Monitor type",
            "enum": [
              "linkedin_keyword",
              "linkedin_profile",
              "linkedin_company",
              "linkedin_post",
              "instagram_profile",
              "instagram_post",
              "x_profile",
              "x_keyword",
              "reddit_keyword",
              "reddit_subreddit",
              "tiktok_keyword",
              "tiktok_hashtag",
              "web_search",
              "site_search"
            ]
          },
          "config": {
            "type": "object",
            "description": "Type-specific configuration (query, filters, etc.)",
            "example": {
              "query": "hiring engineers",
              "max_results": 20
            }
          },
          "cadence_minutes": {
            "type": "number",
            "description": "Cadence in minutes (minimum 60 for scraper-based types: LinkedIn, Instagram, X, Reddit, TikTok; minimum 15 for web)",
            "default": 60
          },
          "max_results": {
            "type": "number",
            "description": "Max results per run (1-100)",
            "default": 10
          },
          "force_fresh": {
            "type": "boolean",
            "description": "Force fresh scrape bypassing cache",
            "default": false
          },
          "cache_ttl_days": {
            "type": "number",
            "description": "Cache TTL in days for profile/company monitors (1-90)",
            "default": 14
          },
          "post_url": {
            "type": "string",
            "description": "LinkedIn post URL (required for linkedin_post type)"
          }
        },
        "required": [
          "name",
          "type",
          "config"
        ]
      },
      "MonitorResponseDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "enum": [
              "linkedin_keyword",
              "linkedin_profile",
              "linkedin_company",
              "linkedin_post",
              "instagram_profile",
              "instagram_post",
              "x_profile",
              "x_keyword",
              "reddit_keyword",
              "reddit_subreddit",
              "tiktok_keyword",
              "tiktok_hashtag",
              "web_search",
              "site_search"
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "paused",
              "disabled"
            ]
          },
          "config": {
            "type": "object",
            "additionalProperties": true
          },
          "cadence_minutes": {
            "type": "number"
          },
          "last_run_at": {
            "type": "string",
            "nullable": true
          },
          "next_run_at": {
            "type": "string",
            "nullable": true
          },
          "consecutive_failures": {
            "type": "number"
          },
          "created_at": {
            "type": "string"
          },
          "updated_at": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "type",
          "status",
          "config",
          "cadence_minutes",
          "last_run_at",
          "next_run_at",
          "consecutive_failures",
          "created_at",
          "updated_at"
        ]
      },
      "MonitorListResponseDto": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MonitorResponseDto"
            }
          },
          "next_cursor": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "data",
          "next_cursor"
        ]
      },
      "UpdateMonitorDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "config": {
            "type": "object"
          },
          "cadence_minutes": {
            "type": "number"
          },
          "max_results": {
            "type": "number"
          },
          "force_fresh": {
            "type": "boolean"
          },
          "cache_ttl_days": {
            "type": "number"
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "paused"
            ],
            "description": "Only active and paused are user-settable"
          }
        }
      },
      "RunNowBodyDto": {
        "type": "object",
        "properties": {
          "force_fresh": {
            "type": "boolean",
            "description": "Force a fresh scrape for this run, bypassing cache"
          }
        }
      },
      "MonitorEventListResponseDto": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MonitorEventDto"
            }
          },
          "next_cursor": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "data",
          "next_cursor"
        ]
      },
      "MonitorEventDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "monitor_id": {
            "type": "string"
          },
          "dedup_key": {
            "type": "string"
          },
          "event_type": {
            "type": "string"
          },
          "event_json": {
            "type": "object",
            "additionalProperties": true
          },
          "canonical_person_id": {
            "type": "string",
            "nullable": true
          },
          "canonical_company_id": {
            "type": "string",
            "nullable": true
          },
          "detected_at": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "monitor_id",
          "dedup_key",
          "event_type",
          "event_json",
          "canonical_person_id",
          "canonical_company_id",
          "detected_at"
        ]
      },
      "PostSearchDto": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "Type of search to perform",
            "enum": [
              "web_search",
              "site_search",
              "linkedin_keyword",
              "x_keyword",
              "reddit_search",
              "tiktok_keyword",
              "tiktok_hashtag"
            ],
            "example": "web_search"
          },
          "query": {
            "type": "string",
            "description": "Search query string. Required unless match_any/match_all are provided.",
            "example": "AI startup funding 2026"
          },
          "match_any": {
            "description": "Keywords where ANY must match (OR logic). Used to build search query.",
            "example": [
              "AI startup",
              "machine learning funding"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "match_all": {
            "description": "Keywords where ALL must match (AND logic). Used to build search query.",
            "example": [
              "Series A",
              "2026"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "exclude": {
            "description": "Keywords to exclude from results.",
            "example": [
              "crypto",
              "blockchain"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "max_results": {
            "type": "number",
            "description": "Maximum results to return (default 10, max 50)",
            "default": 10
          },
          "site": {
            "type": "string",
            "description": "Domain to restrict search to (required for site_search)",
            "example": "techcrunch.com"
          },
          "include_domains": {
            "description": "Domains to include results from (web_search only)",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "exclude_domains": {
            "description": "Domains to exclude results from (web_search only)",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "sort_by": {
            "type": "string",
            "description": "Sort by relevance or recency for supported keyword searches. Reddit maps recent to Reddit's new sort.",
            "enum": [
              "relevance",
              "recent"
            ],
            "default": "relevance"
          },
          "match_mode": {
            "type": "string",
            "description": "Match mode for LinkedIn keyword searches. exact searches the query as a quoted phrase; broad sends the query without phrase quotes.",
            "enum": [
              "exact",
              "broad"
            ],
            "default": "exact"
          },
          "date_filter": {
            "type": "string",
            "description": "Date filter for LinkedIn search (e.g. past-24h, past-week)"
          },
          "hashtag": {
            "type": "string",
            "description": "Hashtag to search for (required for tiktok_hashtag type, without # prefix)",
            "example": "productanalytics"
          },
          "subreddit": {
            "type": "string",
            "description": "Subreddit to search within (reddit_search only)",
            "example": "startups"
          }
        },
        "required": [
          "type"
        ]
      },
      "SearchResultDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique search result ID"
          },
          "status": {
            "type": "string",
            "description": "Current status",
            "enum": [
              "queued",
              "processing",
              "succeeded",
              "failed"
            ]
          },
          "type": {
            "type": "string",
            "description": "Search type",
            "enum": [
              "web_search",
              "site_search",
              "linkedin_keyword",
              "x_keyword",
              "reddit_search",
              "tiktok_keyword",
              "tiktok_hashtag"
            ]
          },
          "query": {
            "type": "string",
            "description": "Original query"
          },
          "poll_url": {
            "type": "string",
            "description": "URL to poll for result"
          },
          "results": {
            "description": "Search results array",
            "nullable": true,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SearchResultItemDto"
            }
          },
          "total_results": {
            "type": "number",
            "description": "Total results found",
            "nullable": true
          },
          "error": {
            "description": "Error details when failed",
            "nullable": true,
            "type": "object",
            "allOf": [
              {
                "$ref": "#/components/schemas/SearchErrorDto"
              }
            ]
          },
          "created_at": {
            "type": "string",
            "description": "ISO timestamp of creation"
          },
          "completed_at": {
            "type": "string",
            "description": "ISO timestamp of completion",
            "nullable": true
          }
        },
        "required": [
          "id",
          "status",
          "type",
          "query",
          "created_at"
        ]
      },
      "SearchResultItemDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Result URL"
          },
          "title": {
            "type": "string",
            "description": "Result title"
          },
          "content": {
            "type": "string",
            "description": "Content snippet or post text",
            "nullable": true
          },
          "published_at": {
            "type": "string",
            "description": "Published date (ISO)",
            "nullable": true
          },
          "author_name": {
            "type": "string",
            "description": "Author name (LinkedIn)",
            "nullable": true
          },
          "author_headline": {
            "type": "string",
            "description": "Author headline (LinkedIn)",
            "nullable": true
          },
          "id": {
            "type": "string",
            "description": "Source-native stable entity ID, when available",
            "nullable": true
          },
          "platform_video_id": {
            "type": "string",
            "description": "Source-native stable post/video/activity ID, when available",
            "nullable": true
          },
          "post_url": {
            "type": "string",
            "description": "Source-native canonical post URL, when available",
            "nullable": true
          },
          "author_username": {
            "type": "string",
            "description": "Author handle or username, when available",
            "nullable": true
          }
        },
        "required": [
          "url",
          "title"
        ]
      },
      "SearchErrorDto": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string",
            "description": "Safe error message"
          },
          "retryable": {
            "type": "boolean",
            "description": "Whether retrying the search may succeed"
          }
        },
        "required": [
          "message",
          "retryable"
        ]
      },
      "SearchAcceptedDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Search operation ID"
          },
          "status": {
            "type": "string",
            "enum": [
              "queued"
            ]
          },
          "poll_url": {
            "type": "string",
            "description": "URL to poll for result"
          },
          "meta": {
            "$ref": "#/components/schemas/SearchAcceptedMetaDto"
          }
        },
        "required": [
          "id",
          "status",
          "poll_url",
          "meta"
        ]
      },
      "SearchAcceptedMetaDto": {
        "type": "object",
        "properties": {
          "request_id": {
            "type": "string",
            "description": "Request ID for support and tracing"
          }
        },
        "required": [
          "request_id"
        ]
      },
      "SearchListResponseDto": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SearchResultDto"
            }
          },
          "next_cursor": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "data"
        ]
      },
      "PlatformImageDeepfakeDetectionDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Public http(s) image URL to analyze. Provide either url or multipart image, not both.",
            "example": "https://example.com/image.jpg",
            "maxLength": 4096
          },
          "image": {
            "type": "string",
            "format": "binary",
            "description": "Multipart image file to analyze. Provide either image or url, not both."
          }
        }
      },
      "ImageDeepfakeDetectionResponseDto": {
        "type": "object",
        "properties": {
          "verdict": {
            "type": "string",
            "enum": [
              "likely_real",
              "uncertain",
              "likely_deepfake"
            ]
          },
          "score": {
            "type": "number"
          },
          "status": {
            "type": "string",
            "enum": [
              "complete",
              "inconclusive"
            ]
          },
          "signals": {
            "$ref": "#/components/schemas/ImageDeepfakeSignalsResponseDto"
          }
        },
        "required": [
          "verdict",
          "score",
          "status",
          "signals"
        ]
      },
      "ImageDeepfakeSignalsResponseDto": {
        "type": "object",
        "properties": {
          "fullImageGeneration": {
            "$ref": "#/components/schemas/ImageDeepfakeSignalResponseDto"
          },
          "faceManipulation": {
            "$ref": "#/components/schemas/ImageDeepfakeFaceManipulationSignalResponseDto"
          }
        },
        "required": [
          "fullImageGeneration",
          "faceManipulation"
        ]
      },
      "ImageDeepfakeSignalResponseDto": {
        "type": "object",
        "properties": {
          "score": {
            "type": "number",
            "nullable": true
          }
        },
        "required": [
          "score"
        ]
      },
      "ImageDeepfakeFaceManipulationSignalResponseDto": {
        "type": "object",
        "properties": {
          "score": {
            "type": "number",
            "nullable": true
          },
          "facesAnalyzed": {
            "type": "number"
          }
        },
        "required": [
          "score",
          "facesAnalyzed"
        ]
      },
      "PlatformLinkedInFinderDto": {
        "type": "object",
        "properties": {
          "domains": {
            "description": "Website domains or URLs to look up.",
            "example": [
              "https://example.com"
            ],
            "maxItems": 50,
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "domains"
        ]
      },
      "LinkedInFinderResponseDto": {
        "type": "object",
        "properties": {
          "linkedin_url": {
            "type": "string",
            "nullable": true
          },
          "domain": {
            "type": "string",
            "nullable": true
          },
          "company_name": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "PlatformLinkedInProfileDto": {
        "type": "object",
        "properties": {
          "username": {
            "type": "string",
            "example": "some-public-id"
          }
        },
        "required": [
          "username"
        ]
      },
      "LinkedInProfileResponseDto": {
        "type": "object",
        "properties": {
          "username": {
            "type": "string"
          },
          "full_name": {
            "type": "string",
            "nullable": true
          },
          "first_name": {
            "type": "string",
            "nullable": true
          },
          "last_name": {
            "type": "string",
            "nullable": true
          },
          "headline": {
            "type": "string",
            "nullable": true
          },
          "about": {
            "type": "string",
            "nullable": true
          },
          "profile_picture_url": {
            "type": "string",
            "nullable": true
          },
          "location": {
            "nullable": true,
            "type": "object",
            "allOf": [
              {
                "$ref": "#/components/schemas/LinkedInLocationResponseDto"
              }
            ]
          },
          "follower_count": {
            "type": "number",
            "nullable": true
          },
          "connection_count": {
            "type": "number",
            "nullable": true
          },
          "current_company": {
            "type": "string",
            "nullable": true
          },
          "current_company_url": {
            "type": "string",
            "nullable": true
          },
          "background_picture_url": {
            "type": "string",
            "nullable": true
          },
          "linkedin_id": {
            "type": "string",
            "nullable": true
          },
          "profile_url": {
            "type": "string",
            "nullable": true
          },
          "open_to_work": {
            "type": "boolean",
            "nullable": true
          },
          "is_premium": {
            "type": "boolean",
            "nullable": true
          },
          "is_creator": {
            "type": "boolean",
            "nullable": true
          },
          "is_influencer": {
            "type": "boolean",
            "nullable": true
          },
          "is_top_voice": {
            "type": "boolean",
            "nullable": true
          },
          "is_verified": {
            "type": "boolean",
            "nullable": true
          },
          "is_hiring": {
            "type": "boolean",
            "nullable": true
          },
          "top_skills": {
            "nullable": true,
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "experience": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true
            }
          },
          "education": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true
            }
          },
          "certifications": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true
            }
          },
          "skills": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true
            }
          },
          "languages": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true
            }
          },
          "volunteering": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true
            }
          },
          "projects": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true
            }
          },
          "publications": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true
            }
          },
          "honors_awards": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true
            }
          },
          "courses": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true
            }
          },
          "patents": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true
            }
          },
          "featured": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true
            }
          },
          "recommendations": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true
            }
          },
          "organizations": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true
            }
          },
          "causes": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true
            }
          }
        },
        "required": [
          "username"
        ]
      },
      "LinkedInLocationResponseDto": {
        "type": "object",
        "properties": {
          "country": {
            "type": "string",
            "nullable": true
          },
          "city": {
            "type": "string",
            "nullable": true
          },
          "full": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "PlatformLinkedInCompanyDto": {
        "type": "object",
        "properties": {
          "identifier": {
            "type": "string",
            "example": "acme-inc"
          }
        },
        "required": [
          "identifier"
        ]
      },
      "LinkedInCompanyResponseDto": {
        "type": "object",
        "properties": {
          "identifier": {
            "type": "string"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "website": {
            "type": "string",
            "nullable": true
          },
          "industry": {
            "type": "string",
            "nullable": true
          },
          "company_size": {
            "type": "string",
            "nullable": true
          },
          "headquarters": {
            "type": "string",
            "nullable": true
          },
          "founded": {
            "type": "number",
            "nullable": true
          },
          "specialties": {
            "nullable": true,
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "logo_url": {
            "type": "string",
            "nullable": true
          },
          "follower_count": {
            "type": "number",
            "nullable": true
          },
          "employee_count": {
            "type": "number",
            "nullable": true
          },
          "linkedin_url": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "identifier"
        ]
      },
      "PlatformLinkedInCompanyPostsDto": {
        "type": "object",
        "properties": {
          "companySlug": {
            "type": "string",
            "example": "acme-inc"
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 500,
            "default": 20
          }
        },
        "required": [
          "companySlug"
        ]
      },
      "LinkedInCompanyPostsResponseDto": {
        "type": "object",
        "properties": {
          "companySlug": {
            "type": "string"
          },
          "posts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LinkedInPostResponseDto"
            }
          },
          "description": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "companySlug",
          "posts"
        ]
      },
      "LinkedInPostResponseDto": {
        "type": "object",
        "properties": {
          "activityId": {
            "type": "string"
          },
          "postUrl": {
            "type": "string",
            "nullable": true
          },
          "text": {
            "type": "string"
          },
          "postedAt": {
            "type": "string",
            "nullable": true
          },
          "authorName": {
            "type": "string",
            "nullable": true
          },
          "authorHeadline": {
            "type": "string",
            "nullable": true
          },
          "authorProfileUrl": {
            "type": "string",
            "nullable": true
          },
          "authorProfileUsername": {
            "type": "string",
            "nullable": true
          },
          "totalReactions": {
            "type": "number",
            "nullable": true
          },
          "commentsCount": {
            "type": "number",
            "nullable": true
          },
          "repostsCount": {
            "type": "number",
            "nullable": true
          },
          "isReshare": {
            "type": "boolean",
            "nullable": true
          },
          "repostedBy": {
            "nullable": true,
            "type": "object",
            "allOf": [
              {
                "$ref": "#/components/schemas/LinkedInRepostedByResponseDto"
              }
            ]
          },
          "contentType": {
            "type": "string",
            "nullable": true
          },
          "contentData": {
            "type": "object",
            "additionalProperties": true
          },
          "hashtags": {
            "nullable": true,
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "activityId",
          "text"
        ]
      },
      "LinkedInRepostedByResponseDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "publicIdentifier": {
            "type": "string"
          }
        },
        "required": [
          "name",
          "publicIdentifier"
        ]
      },
      "PlatformLinkedInProfilePostsDto": {
        "type": "object",
        "properties": {
          "username": {
            "type": "string",
            "example": "some-public-id"
          },
          "maxPosts": {
            "type": "number",
            "minimum": 1,
            "maximum": 200,
            "default": 20
          }
        },
        "required": [
          "username"
        ]
      },
      "WebCrawlAcceptedResponseDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "operationId": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "queued",
              "processing",
              "succeeded",
              "failed",
              "partial_success",
              "cancelled"
            ]
          },
          "pollUrl": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "operationId",
          "status",
          "pollUrl"
        ]
      },
      "PlatformLinkedInKeywordPostsDto": {
        "type": "object",
        "properties": {
          "keyword": {
            "type": "string",
            "example": "b2b saas"
          },
          "config": {
            "$ref": "#/components/schemas/LinkedInKeywordPostsConfigBodyDto"
          }
        },
        "required": [
          "keyword"
        ]
      },
      "LinkedInKeywordPostsConfigBodyDto": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 500
          },
          "sortBy": {
            "type": "string",
            "enum": [
              "relevance",
              "recent"
            ]
          },
          "dateFilter": {
            "type": "string",
            "enum": [
              "past-24h",
              "past-week",
              "past-month"
            ]
          },
          "matchMode": {
            "type": "string",
            "enum": [
              "exact",
              "broad"
            ],
            "default": "exact",
            "description": "Use exact to search the keyword as a quoted phrase, or broad to let LinkedIn match related terms."
          }
        }
      },
      "PlatformLinkedInPostUrlsDto": {
        "type": "object",
        "properties": {
          "postUrls": {
            "example": [
              "https://www.linkedin.com/feed/update/urn:li:activity:123"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "type": "number",
            "minimum": 1,
            "maximum": 500,
            "default": 10
          }
        },
        "required": [
          "postUrls"
        ]
      },
      "LinkedInPostReactionResponseDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "reactionType": {
            "type": "string"
          },
          "postId": {
            "type": "string"
          },
          "actor": {
            "$ref": "#/components/schemas/LinkedInReactionActorResponseDto"
          }
        },
        "required": [
          "id",
          "reactionType",
          "postId",
          "actor"
        ]
      },
      "LinkedInReactionActorResponseDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "linkedinUrl": {
            "type": "string"
          },
          "position": {
            "type": "string"
          },
          "pictureUrl": {
            "type": "string",
            "nullable": true
          },
          "sourceActorIdKind": {
            "type": "string",
            "enum": [
              "linkedin_member_id",
              "source_row_id",
              "unknown"
            ]
          },
          "profileUrlKind": {
            "type": "string",
            "enum": [
              "vanity_slug",
              "opaque_member_id",
              "company",
              "unknown"
            ]
          },
          "universalName": {
            "type": "string",
            "nullable": true
          },
          "canonicalPersonId": {
            "type": "string",
            "nullable": true
          },
          "resolutionStatus": {
            "type": "string",
            "enum": [
              "resolved",
              "unresolved",
              "not_attempted"
            ]
          }
        },
        "required": [
          "id",
          "name",
          "linkedinUrl",
          "position",
          "sourceActorIdKind",
          "profileUrlKind",
          "universalName",
          "canonicalPersonId",
          "resolutionStatus"
        ]
      },
      "LinkedInPostCommentResponseDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "commentary": {
            "type": "string"
          },
          "linkedinUrl": {
            "type": "string"
          },
          "createdAt": {
            "type": "string"
          },
          "createdAtTimestamp": {
            "type": "number"
          },
          "engagement": {
            "$ref": "#/components/schemas/LinkedInCommentEngagementResponseDto"
          },
          "postId": {
            "type": "string"
          },
          "pinned": {
            "type": "boolean"
          },
          "edited": {
            "type": "boolean"
          },
          "actor": {
            "$ref": "#/components/schemas/LinkedInCommentActorResponseDto"
          },
          "replies": {
            "nullable": true,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LinkedInPostCommentResponseDto"
            }
          }
        },
        "required": [
          "id",
          "commentary",
          "linkedinUrl",
          "createdAt",
          "createdAtTimestamp",
          "engagement",
          "postId",
          "pinned",
          "edited",
          "actor"
        ]
      },
      "LinkedInCommentEngagementResponseDto": {
        "type": "object",
        "properties": {
          "likes": {
            "type": "number"
          },
          "comments": {
            "type": "number"
          },
          "shares": {
            "type": "number"
          }
        },
        "required": [
          "likes",
          "comments",
          "shares"
        ]
      },
      "LinkedInCommentActorResponseDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "type": "string",
            "enum": [
              "profile",
              "company"
            ]
          },
          "name": {
            "type": "string"
          },
          "linkedinUrl": {
            "type": "string"
          },
          "position": {
            "type": "string"
          },
          "universalName": {
            "type": "string",
            "nullable": true
          },
          "pictureUrl": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "id",
          "type",
          "name",
          "linkedinUrl",
          "position"
        ]
      },
      "PlatformLinkedInProfileActivityDto": {
        "type": "object",
        "properties": {
          "profiles": {
            "description": "LinkedIn profile URLs or public profile usernames.",
            "example": [
              "https://www.linkedin.com/in/satyanadella",
              "some-public-id"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "type": "number",
            "minimum": 1,
            "maximum": 100,
            "default": 10
          },
          "postedLimit": {
            "type": "string",
            "enum": [
              "any",
              "24h",
              "week",
              "month",
              "3months",
              "6months",
              "year"
            ],
            "default": "any",
            "description": "Fetch posts no older than this time window."
          }
        },
        "required": [
          "profiles"
        ]
      },
      "LinkedInProfileReactionResponseDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "profileUrl": {
            "type": "string"
          },
          "profileUsername": {
            "type": "string"
          },
          "reactionType": {
            "type": "string"
          },
          "reactedAt": {
            "type": "string",
            "nullable": true
          },
          "sourceUrl": {
            "type": "string",
            "nullable": true
          },
          "post": {
            "$ref": "#/components/schemas/LinkedInProfileActivityPostResponseDto"
          },
          "actor": {
            "nullable": true,
            "type": "object",
            "allOf": [
              {
                "$ref": "#/components/schemas/LinkedInProfileActivityActorResponseDto"
              }
            ]
          }
        },
        "required": [
          "profileUrl",
          "profileUsername",
          "reactionType",
          "post"
        ]
      },
      "LinkedInProfileActivityPostResponseDto": {
        "type": "object",
        "properties": {
          "postId": {
            "type": "string",
            "nullable": true
          },
          "postUrl": {
            "type": "string",
            "nullable": true
          },
          "text": {
            "type": "string",
            "nullable": true
          },
          "authorName": {
            "type": "string",
            "nullable": true
          },
          "authorProfileUrl": {
            "type": "string",
            "nullable": true
          },
          "authorCompanyUrl": {
            "type": "string",
            "nullable": true
          },
          "postedAt": {
            "type": "string",
            "nullable": true
          },
          "reactionCount": {
            "type": "number",
            "nullable": true
          },
          "commentCount": {
            "type": "number",
            "nullable": true
          },
          "repostCount": {
            "type": "number",
            "nullable": true
          }
        }
      },
      "LinkedInProfileActivityActorResponseDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "type": "string",
            "enum": [
              "profile",
              "company"
            ],
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "linkedinUrl": {
            "type": "string",
            "nullable": true
          },
          "position": {
            "type": "string",
            "nullable": true
          },
          "universalName": {
            "type": "string",
            "nullable": true
          },
          "pictureUrl": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "LinkedInProfileCommentResponseDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "profileUrl": {
            "type": "string"
          },
          "profileUsername": {
            "type": "string"
          },
          "commentText": {
            "type": "string"
          },
          "commentedAt": {
            "type": "string",
            "nullable": true
          },
          "sourceUrl": {
            "type": "string",
            "nullable": true
          },
          "post": {
            "$ref": "#/components/schemas/LinkedInProfileActivityPostResponseDto"
          },
          "actor": {
            "nullable": true,
            "type": "object",
            "allOf": [
              {
                "$ref": "#/components/schemas/LinkedInProfileActivityActorResponseDto"
              }
            ]
          }
        },
        "required": [
          "profileUrl",
          "profileUsername",
          "commentText",
          "post"
        ]
      },
      "PlatformXProfileDto": {
        "type": "object",
        "properties": {
          "username": {
            "type": "string",
            "example": "elonmusk"
          },
          "maxTweets": {
            "type": "number",
            "minimum": 1,
            "maximum": 200
          }
        },
        "required": [
          "username"
        ]
      },
      "XProfileResponseDto": {
        "type": "object",
        "properties": {
          "username": {
            "type": "string"
          },
          "tweets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/XTweetResponseDto"
            }
          },
          "referencedTweets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/XTweetResponseDto"
            }
          },
          "authors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/XAuthorResponseDto"
            }
          },
          "bio": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "username",
          "tweets",
          "referencedTweets",
          "authors"
        ]
      },
      "XTweetResponseDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "text": {
            "type": "string"
          },
          "created_at": {
            "type": "string",
            "nullable": true
          },
          "source": {
            "type": "string",
            "nullable": true
          },
          "lang": {
            "type": "string",
            "nullable": true
          },
          "conversation_id": {
            "type": "string",
            "nullable": true
          },
          "view_count": {
            "type": "number",
            "nullable": true
          },
          "bookmark_count": {
            "type": "number",
            "nullable": true
          },
          "like_count": {
            "type": "number",
            "nullable": true
          },
          "retweet_count": {
            "type": "number",
            "nullable": true
          },
          "reply_count": {
            "type": "number",
            "nullable": true
          },
          "quote_count": {
            "type": "number",
            "nullable": true
          },
          "url": {
            "type": "string",
            "nullable": true
          },
          "is_retweet": {
            "type": "boolean"
          },
          "is_quote": {
            "type": "boolean",
            "nullable": true
          },
          "is_reply": {
            "type": "boolean",
            "nullable": true
          },
          "author_x_user_id": {
            "type": "string",
            "nullable": true
          },
          "author_username": {
            "type": "string",
            "nullable": true
          },
          "author_display_name": {
            "type": "string",
            "nullable": true
          },
          "retweet_tweet_id": {
            "type": "string",
            "nullable": true
          },
          "quote_tweet_id": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "id",
          "text",
          "is_retweet"
        ]
      },
      "XAuthorResponseDto": {
        "type": "object",
        "properties": {
          "x_user_id": {
            "type": "string",
            "nullable": true
          },
          "username": {
            "type": "string",
            "nullable": true
          },
          "display_name": {
            "type": "string",
            "nullable": true
          },
          "profile_url": {
            "type": "string",
            "nullable": true
          },
          "bio": {
            "type": "string",
            "nullable": true
          },
          "profile_picture_url": {
            "type": "string",
            "nullable": true
          },
          "followers_count": {
            "type": "number",
            "nullable": true
          },
          "following_count": {
            "type": "number",
            "nullable": true
          },
          "tweet_count": {
            "type": "number",
            "nullable": true
          },
          "is_verified": {
            "type": "boolean",
            "nullable": true
          },
          "is_blue_verified": {
            "type": "boolean",
            "nullable": true
          },
          "account_created_at": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "PlatformXSearchPostsDto": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "example": "typescript nestjs"
          },
          "maxTweets": {
            "type": "number",
            "minimum": 1,
            "maximum": 200
          },
          "options": {
            "$ref": "#/components/schemas/XSearchOptionsBodyDto"
          }
        },
        "required": [
          "query"
        ]
      },
      "XSearchOptionsBodyDto": {
        "type": "object",
        "properties": {
          "dateFrom": {
            "type": "string"
          },
          "dateTo": {
            "type": "string"
          },
          "lang": {
            "type": "string"
          },
          "geocode": {
            "type": "string"
          }
        }
      },
      "PlatformXPostDto": {
        "type": "object",
        "properties": {
          "postUrl": {
            "type": "string",
            "example": "https://x.com/elonmusk/status/123456789"
          }
        },
        "required": [
          "postUrl"
        ]
      },
      "PlatformXConversationDto": {
        "type": "object",
        "properties": {
          "postId": {
            "type": "string",
            "example": "1234567890123456789"
          },
          "maxTweets": {
            "type": "number",
            "minimum": 1,
            "maximum": 500
          }
        },
        "required": [
          "postId"
        ]
      },
      "PlatformInstagramUsernameDto": {
        "type": "object",
        "properties": {
          "username": {
            "type": "string",
            "example": "instagram"
          },
          "maxPosts": {
            "type": "number",
            "minimum": 1,
            "maximum": 200
          }
        },
        "required": [
          "username"
        ]
      },
      "InstagramProfileResponseDto": {
        "type": "object",
        "properties": {
          "instagram_user_id": {
            "type": "string",
            "nullable": true
          },
          "username": {
            "type": "string"
          },
          "display_name": {
            "type": "string",
            "nullable": true
          },
          "bio": {
            "type": "string",
            "nullable": true
          },
          "profile_url": {
            "type": "string",
            "nullable": true
          },
          "profile_picture_url": {
            "type": "string",
            "nullable": true
          },
          "website_url": {
            "type": "string",
            "nullable": true
          },
          "followers_count": {
            "type": "number",
            "nullable": true
          },
          "following_count": {
            "type": "number",
            "nullable": true
          },
          "posts_count": {
            "type": "number",
            "nullable": true
          },
          "is_verified": {
            "type": "boolean",
            "nullable": true
          },
          "is_business_account": {
            "type": "boolean",
            "nullable": true
          },
          "is_private": {
            "type": "boolean",
            "nullable": true
          }
        },
        "required": [
          "username"
        ]
      },
      "InstagramPostResponseDto": {
        "type": "object",
        "properties": {
          "shortcode": {
            "type": "string"
          },
          "post_url": {
            "type": "string",
            "nullable": true
          },
          "post_type": {
            "type": "string",
            "nullable": true
          },
          "caption": {
            "type": "string",
            "nullable": true
          },
          "hashtags": {
            "nullable": true,
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "mentions": {
            "nullable": true,
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "likes_count": {
            "type": "number",
            "nullable": true
          },
          "comments_count": {
            "type": "number",
            "nullable": true
          },
          "video_views_count": {
            "type": "number",
            "nullable": true
          },
          "display_url": {
            "type": "string",
            "nullable": true
          },
          "dimensions_height": {
            "type": "number",
            "nullable": true
          },
          "dimensions_width": {
            "type": "number",
            "nullable": true
          },
          "is_sponsored": {
            "type": "boolean",
            "nullable": true
          },
          "location_name": {
            "type": "string",
            "nullable": true
          },
          "location_id": {
            "type": "string",
            "nullable": true
          },
          "posted_at": {
            "type": "string",
            "nullable": true
          },
          "author_username": {
            "type": "string",
            "nullable": true
          },
          "owner_id": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "shortcode"
        ]
      },
      "PlatformInstagramPostDetailsDto": {
        "type": "object",
        "properties": {
          "postUrl": {
            "type": "string",
            "example": "https://www.instagram.com/p/ABC123/"
          }
        },
        "required": [
          "postUrl"
        ]
      },
      "PlatformInstagramPostCommentsDto": {
        "type": "object",
        "properties": {
          "postUrl": {
            "type": "string",
            "example": "https://www.instagram.com/p/ABC123/"
          },
          "maxComments": {
            "type": "number",
            "minimum": 1,
            "maximum": 200
          },
          "includeNested": {
            "type": "boolean",
            "description": "When true, requests nested reply threads from the comment actor (more items / cost)."
          }
        },
        "required": [
          "postUrl"
        ]
      },
      "InstagramCommentResponseDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "text": {
            "type": "string"
          },
          "owner_username": {
            "type": "string",
            "nullable": true
          },
          "owner_id": {
            "type": "string",
            "nullable": true
          },
          "timestamp": {
            "type": "string",
            "nullable": true
          },
          "likes_count": {
            "type": "number",
            "nullable": true
          },
          "replies_count": {
            "type": "number",
            "nullable": true
          },
          "replies": {
            "nullable": true,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InstagramCommentResponseDto"
            }
          }
        },
        "required": [
          "text"
        ]
      },
      "PlatformInstagramFollowersDto": {
        "type": "object",
        "properties": {
          "username": {
            "type": "string",
            "example": "instagram"
          },
          "maxFollowers": {
            "type": "number",
            "minimum": 1,
            "maximum": 5000,
            "description": "Maximum followers to request. Unlimited is not exposed on v1."
          }
        },
        "required": [
          "username"
        ]
      },
      "InstagramFollowScrapeResponseDto": {
        "type": "object",
        "properties": {
          "username": {
            "type": "string"
          },
          "relation_type": {
            "type": "string",
            "enum": [
              "followers",
              "following"
            ]
          },
          "edges": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InstagramFollowEdgeResponseDto"
            }
          },
          "requested_limit": {
            "type": "number",
            "nullable": true
          },
          "returned_count": {
            "type": "number"
          }
        },
        "required": [
          "username",
          "relation_type",
          "edges",
          "returned_count"
        ]
      },
      "InstagramFollowEdgeResponseDto": {
        "type": "object",
        "properties": {
          "relation_type": {
            "type": "string",
            "enum": [
              "followers",
              "following"
            ]
          },
          "seed_username": {
            "type": "string"
          },
          "follower": {
            "$ref": "#/components/schemas/InstagramFollowProfileResponseDto"
          },
          "following": {
            "$ref": "#/components/schemas/InstagramFollowProfileResponseDto"
          }
        },
        "required": [
          "relation_type",
          "seed_username",
          "follower",
          "following"
        ]
      },
      "InstagramFollowProfileResponseDto": {
        "type": "object",
        "properties": {
          "instagram_user_id": {
            "type": "string",
            "nullable": true
          },
          "username": {
            "type": "string"
          },
          "display_name": {
            "type": "string",
            "nullable": true
          },
          "profile_url": {
            "type": "string",
            "nullable": true
          },
          "profile_picture_url": {
            "type": "string",
            "nullable": true
          },
          "is_private": {
            "type": "boolean",
            "nullable": true
          },
          "is_verified": {
            "type": "boolean",
            "nullable": true
          }
        },
        "required": [
          "username"
        ]
      },
      "PlatformInstagramFollowingDto": {
        "type": "object",
        "properties": {
          "username": {
            "type": "string",
            "example": "instagram"
          },
          "maxFollowing": {
            "type": "number",
            "minimum": 1,
            "maximum": 5000,
            "description": "Requested following limit. The upstream source may return more than requested. Unlimited is not exposed on v1."
          }
        },
        "required": [
          "username"
        ]
      },
      "PlatformYouTubeVideoDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "example": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
          }
        },
        "required": [
          "url"
        ]
      },
      "YouTubeVideoResponseDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string"
          },
          "text": {
            "type": "string"
          },
          "statusCode": {
            "type": "number",
            "nullable": true
          },
          "videoId": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "channelId": {
            "type": "string",
            "nullable": true
          },
          "channelName": {
            "type": "string",
            "nullable": true
          },
          "channelUrl": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "publishedAt": {
            "type": "string",
            "nullable": true
          },
          "durationSeconds": {
            "type": "number",
            "nullable": true
          },
          "viewCount": {
            "type": "number",
            "nullable": true
          },
          "likeCount": {
            "type": "number",
            "nullable": true
          },
          "commentCount": {
            "type": "number",
            "nullable": true
          },
          "thumbnailUrl": {
            "type": "string",
            "nullable": true
          },
          "transcriptText": {
            "type": "string",
            "nullable": true
          },
          "comments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/YouTubeVideoCommentResponseDto"
            }
          }
        },
        "required": [
          "url",
          "text"
        ]
      },
      "YouTubeVideoCommentResponseDto": {
        "type": "object",
        "properties": {
          "authorName": {
            "type": "string",
            "nullable": true
          },
          "authorUrl": {
            "type": "string",
            "nullable": true
          },
          "text": {
            "type": "string"
          },
          "publishedAt": {
            "type": "string",
            "nullable": true
          },
          "likeCount": {
            "type": "number",
            "nullable": true
          },
          "replyCount": {
            "type": "number",
            "nullable": true
          }
        },
        "required": [
          "text"
        ]
      },
      "PlatformYouTubeChannelDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "example": "https://www.youtube.com/@OpenAI"
          }
        },
        "required": [
          "url"
        ]
      },
      "YouTubeChannelResponseDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string"
          },
          "text": {
            "type": "string"
          },
          "statusCode": {
            "type": "number",
            "nullable": true
          },
          "channelId": {
            "type": "string",
            "nullable": true
          },
          "handle": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "subscriberCount": {
            "type": "number",
            "nullable": true
          },
          "videoCount": {
            "type": "number",
            "nullable": true
          },
          "viewCount": {
            "type": "number",
            "nullable": true
          },
          "thumbnailUrl": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "url",
          "text"
        ]
      },
      "PlatformFacebookPostDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "example": "https://www.facebook.com/openai/posts/1234567890"
          }
        },
        "required": [
          "url"
        ]
      },
      "FacebookPostResponseDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string"
          },
          "text": {
            "type": "string"
          },
          "statusCode": {
            "type": "number",
            "nullable": true
          },
          "postId": {
            "type": "string",
            "nullable": true
          },
          "authorName": {
            "type": "string",
            "nullable": true
          },
          "authorUrl": {
            "type": "string",
            "nullable": true
          },
          "postedAt": {
            "type": "string",
            "nullable": true
          },
          "likeCount": {
            "type": "number",
            "nullable": true
          },
          "commentCount": {
            "type": "number",
            "nullable": true
          },
          "shareCount": {
            "type": "number",
            "nullable": true
          },
          "viewCount": {
            "type": "number",
            "nullable": true
          }
        },
        "required": [
          "url",
          "text"
        ]
      },
      "PlatformFacebookPageDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "example": "https://www.facebook.com/openai"
          }
        },
        "required": [
          "url"
        ]
      },
      "FacebookPageResponseDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string"
          },
          "text": {
            "type": "string"
          },
          "statusCode": {
            "type": "number",
            "nullable": true
          },
          "pageId": {
            "type": "string",
            "nullable": true
          },
          "pageName": {
            "type": "string",
            "nullable": true
          },
          "pageUrl": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "likesCount": {
            "type": "number",
            "nullable": true
          },
          "followersCount": {
            "type": "number",
            "nullable": true
          },
          "websiteUrl": {
            "type": "string",
            "nullable": true
          },
          "category": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "url",
          "text"
        ]
      },
      "PlatformTikTokUsernameDto": {
        "type": "object",
        "properties": {
          "username": {
            "type": "string",
            "example": "tiktok"
          },
          "maxVideos": {
            "type": "number",
            "minimum": 1,
            "maximum": 500
          }
        },
        "required": [
          "username"
        ]
      },
      "TikTokProfileScrapeResponseDto": {
        "type": "object",
        "properties": {
          "profile": {
            "nullable": true,
            "type": "object",
            "allOf": [
              {
                "$ref": "#/components/schemas/TikTokProfileSeedResponseDto"
              }
            ]
          },
          "videos": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TikTokVideoResponseDto"
            }
          },
          "relatedVideos": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TikTokRelatedVideoResponseDto"
            }
          }
        },
        "required": [
          "profile",
          "videos",
          "relatedVideos"
        ]
      },
      "TikTokProfileSeedResponseDto": {
        "type": "object",
        "properties": {
          "username": {
            "type": "string"
          },
          "tiktok_user_id": {
            "type": "string",
            "nullable": true
          },
          "display_name": {
            "type": "string",
            "nullable": true
          },
          "bio": {
            "type": "string",
            "nullable": true
          },
          "follower_count": {
            "type": "number",
            "nullable": true
          },
          "following_count": {
            "type": "number",
            "nullable": true
          },
          "verified": {
            "type": "boolean",
            "nullable": true
          },
          "avatar_url": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "username"
        ]
      },
      "TikTokVideoResponseDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "platform_video_id": {
            "type": "string"
          },
          "tiktok_profile_id": {
            "type": "string",
            "nullable": true
          },
          "caption": {
            "type": "string",
            "nullable": true
          },
          "post_url": {
            "type": "string",
            "nullable": true
          },
          "author_username": {
            "type": "string",
            "nullable": true
          },
          "author_display_name": {
            "type": "string",
            "nullable": true
          },
          "author_profile_url": {
            "type": "string",
            "nullable": true
          },
          "play_count": {
            "type": "number",
            "nullable": true
          },
          "like_count": {
            "type": "number",
            "nullable": true
          },
          "comment_count": {
            "type": "number",
            "nullable": true
          },
          "share_count": {
            "type": "number",
            "nullable": true
          },
          "hashtags": {
            "nullable": true,
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "cdn_url": {
            "type": "string",
            "nullable": true
          },
          "s3_key": {
            "type": "string",
            "nullable": true
          },
          "thumbnail_s3_key": {
            "type": "string",
            "nullable": true
          },
          "duration_secs": {
            "type": "number",
            "nullable": true
          },
          "posted_at": {
            "type": "string",
            "nullable": true
          },
          "created_at": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "platform_video_id",
          "created_at"
        ]
      },
      "TikTokRelatedVideoResponseDto": {
        "type": "object",
        "properties": {
          "relationship": {
            "type": "string",
            "enum": [
              "collaboration"
            ]
          },
          "matched_username": {
            "type": "string"
          },
          "video": {
            "$ref": "#/components/schemas/TikTokVideoResponseDto"
          },
          "collaborators": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TikTokProfileSeedResponseDto"
            }
          }
        },
        "required": [
          "relationship",
          "matched_username",
          "video",
          "collaborators"
        ]
      },
      "PlatformSeoDomainDto": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string",
            "example": "acme.com",
            "description": "Domain or http(s) URL to look up SEO and paid search signals for."
          }
        },
        "required": [
          "domain"
        ]
      },
      "SeoDomainResponseDto": {
        "type": "object",
        "properties": {
          "hasData": {
            "type": "boolean"
          },
          "organicKeywordsCount": {
            "type": "number",
            "nullable": true
          },
          "paidKeywordsCount": {
            "type": "number",
            "nullable": true
          },
          "summary": {
            "type": "string",
            "nullable": true
          },
          "keyword_category": {
            "type": "string",
            "nullable": true
          },
          "tech_stack": {
            "nullable": true,
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "match_score": {
            "type": "number",
            "nullable": true
          }
        },
        "required": [
          "hasData"
        ]
      },
      "PlatformSeoKeywordsDto": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string",
            "example": "acme.com",
            "description": "Domain to analyze organic search keywords for."
          },
          "searchType": {
            "type": "string",
            "enum": [
              "GainedClicks",
              "LostClicks",
              "GainedRanks",
              "LostRanks",
              "MostValuable",
              "NewlyRanked",
              "JustMadeIt",
              "JustFellOff"
            ],
            "example": "MostValuable"
          },
          "pageSize": {
            "type": "number",
            "minimum": 1,
            "maximum": 100,
            "default": 25
          },
          "searchVolumeMin": {
            "type": "number",
            "minimum": 0
          },
          "searchVolumeMax": {
            "type": "number",
            "minimum": 0
          },
          "rankMin": {
            "type": "number",
            "minimum": 1
          },
          "rankMax": {
            "type": "number",
            "minimum": 1
          },
          "includeTerms": {
            "type": "string",
            "description": "Comma-separated terms that must appear in keywords."
          },
          "excludeTerms": {
            "type": "string",
            "description": "Comma-separated terms to exclude from keywords."
          }
        },
        "required": [
          "domain",
          "searchType"
        ]
      },
      "SearchIntelligenceKeywordsResponseDto": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string",
            "nullable": true
          },
          "seedKeyword": {
            "type": "string",
            "nullable": true
          },
          "includedDomains": {
            "nullable": true,
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "excludedDomains": {
            "nullable": true,
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "searchType": {
            "type": "string",
            "nullable": true
          },
          "intent": {
            "type": "string",
            "enum": [
              "seo",
              "aeo",
              "geo",
              "ppc"
            ]
          },
          "resultCount": {
            "type": "number"
          },
          "totalMatchingResults": {
            "type": "number"
          },
          "keywords": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SearchIntelligenceKeywordRowResponseDto"
            }
          }
        },
        "required": [
          "intent",
          "resultCount",
          "totalMatchingResults",
          "keywords"
        ]
      },
      "SearchIntelligenceKeywordRowResponseDto": {
        "type": "object",
        "properties": {
          "keyword": {
            "type": "string"
          },
          "searchVolume": {
            "type": "number",
            "nullable": true
          },
          "rank": {
            "type": "number",
            "nullable": true
          },
          "rankingDifficulty": {
            "type": "number",
            "nullable": true
          },
          "totalMonthlyClicks": {
            "type": "number",
            "nullable": true
          },
          "percentOrganicClicks": {
            "type": "number",
            "nullable": true
          },
          "broadCostPerClick": {
            "type": "number",
            "nullable": true
          },
          "isQuestion": {
            "type": "boolean",
            "nullable": true
          }
        },
        "required": [
          "keyword"
        ]
      },
      "PlatformSearchIntelligenceCompetingDto": {
        "type": "object",
        "properties": {
          "includedDomains": {
            "example": [
              "acme.com",
              "competitor.com"
            ],
            "description": "Domains to compare for shared keywords.",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "excludedDomains": {
            "example": [
              "excluded.com"
            ],
            "description": "Domains to exclude from the comparison.",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "pageSize": {
            "type": "number",
            "minimum": 1,
            "maximum": 100,
            "default": 25
          }
        },
        "required": [
          "includedDomains"
        ]
      },
      "PlatformWebSearchDto": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Search query",
            "example": "best CRM software 2025"
          },
          "maxResults": {
            "type": "number",
            "minimum": 1,
            "maximum": 50,
            "default": 10
          },
          "searchDepth": {
            "type": "string",
            "enum": [
              "basic",
              "advanced"
            ],
            "default": "basic"
          },
          "topic": {
            "type": "string",
            "enum": [
              "general",
              "news"
            ],
            "default": "general"
          },
          "days": {
            "type": "number",
            "description": "Limit results to last N days (news only)"
          },
          "includeDomains": {
            "description": "Only include results from these domains",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "excludeDomains": {
            "description": "Exclude results from these domains",
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "query"
        ]
      },
      "WebSearchResponseDto": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WebSearchResultItemResponseDto"
            }
          },
          "totalResults": {
            "type": "number",
            "nullable": true
          }
        },
        "required": [
          "query",
          "results"
        ]
      },
      "WebSearchResultItemResponseDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string"
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "content": {
            "type": "string",
            "nullable": true
          },
          "publishedDate": {
            "type": "string",
            "nullable": true
          },
          "position": {
            "type": "number",
            "nullable": true
          }
        },
        "required": [
          "url",
          "title"
        ]
      },
      "PlatformWebCrawlDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Domain or URL to crawl",
            "example": "https://example.com"
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 50,
            "default": 5
          },
          "maxPages": {
            "type": "number",
            "description": "Maximum number of pages to crawl. Overrides limit when set.",
            "minimum": 1,
            "maximum": 50,
            "default": 5
          },
          "maxDepth": {
            "type": "number",
            "description": "Maximum link depth from the starting URL.",
            "minimum": 0,
            "maximum": 5,
            "default": 1
          },
          "sameDomainOnly": {
            "type": "boolean",
            "description": "Restrict discovered links to the starting hostname.",
            "default": true
          },
          "instructions": {
            "type": "string",
            "description": "Instructions for content extraction"
          }
        },
        "required": [
          "url"
        ]
      },
      "PlatformWebScrapeDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "URL to scrape",
            "example": "https://example.com/page"
          },
          "renderJs": {
            "type": "boolean",
            "description": "Render JavaScript before scraping",
            "default": false
          },
          "formats": {
            "type": "array",
            "description": "Output formats to return. Defaults to [\"text\"]. Request \"json\" only with jsonSchema.",
            "default": [
              "text"
            ],
            "items": {
              "type": "string",
              "enum": [
                "text",
                "markdown",
                "html",
                "links",
                "metadata",
                "json"
              ]
            }
          },
          "jsonSchema": {
            "type": "object",
            "description": "JSON Schema used for schema-guided extraction when formats includes \"json\".",
            "additionalProperties": true
          },
          "instructions": {
            "type": "string",
            "description": "Additional extraction instructions used only when formats includes \"json\".",
            "maxLength": 8000
          },
          "maxAgeMs": {
            "type": "number",
            "description": "Maximum accepted cache age in milliseconds. Use 0 or omit to force a fresh scrape.",
            "minimum": 0,
            "maximum": 2592000000,
            "default": 0
          },
          "maxAgeDays": {
            "type": "number",
            "description": "Maximum accepted cache age in days. Use 0 or omit to force a fresh scrape. Ignored when maxAgeMs is provided.",
            "minimum": 0,
            "maximum": 30,
            "default": 0
          }
        },
        "required": [
          "url"
        ]
      },
      "WebScrapeResponseDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string"
          },
          "text": {
            "type": "string"
          },
          "statusCode": {
            "type": "number",
            "nullable": true
          },
          "markdown": {
            "type": "string",
            "nullable": true
          },
          "html": {
            "type": "string",
            "nullable": true
          },
          "links": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "metadata": {
            "$ref": "#/components/schemas/WebScrapeMetadataResponseDto"
          },
          "json": {
            "type": "object",
            "additionalProperties": true
          }
        },
        "required": [
          "url",
          "text"
        ]
      },
      "WebScrapeMetadataResponseDto": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "canonicalUrl": {
            "type": "string",
            "nullable": true
          },
          "finalUrl": {
            "type": "string",
            "nullable": true
          },
          "contentType": {
            "type": "string",
            "nullable": true
          },
          "statusCode": {
            "type": "number",
            "nullable": true
          },
          "textLength": {
            "type": "number",
            "nullable": true
          },
          "responseBytes": {
            "type": "number",
            "nullable": true
          },
          "capture": {
            "$ref": "#/components/schemas/WebScrapeCaptureMetadataResponseDto"
          }
        }
      },
      "WebScrapeCaptureMetadataResponseDto": {
        "type": "object",
        "properties": {
          "mode": {
            "type": "string"
          },
          "completionReason": {
            "type": "string"
          },
          "scrollsCompleted": {
            "type": "number"
          },
          "maxScrolls": {
            "type": "number"
          },
          "expansionClicks": {
            "type": "number"
          },
          "maxExpansionClicks": {
            "type": "number"
          },
          "durationMs": {
            "type": "number"
          }
        },
        "required": [
          "mode",
          "completionReason",
          "scrollsCompleted",
          "maxScrolls",
          "expansionClicks",
          "maxExpansionClicks",
          "durationMs"
        ]
      },
      "PlatformWebScrapeJobDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "URL to scrape with an async deep browser acquisition job.",
            "example": "https://example.com/page"
          },
          "formats": {
            "type": "array",
            "description": "Output formats to store on the completed operation. Defaults to [\"text\", \"metadata\"]. Request \"json\" only with jsonSchema.",
            "default": [
              "text",
              "metadata"
            ],
            "items": {
              "type": "string",
              "enum": [
                "text",
                "markdown",
                "html",
                "links",
                "metadata",
                "json"
              ]
            }
          },
          "jsonSchema": {
            "type": "object",
            "description": "JSON Schema used for schema-guided extraction when formats includes \"json\".",
            "additionalProperties": true
          },
          "instructions": {
            "type": "string",
            "description": "Additional extraction instructions used only when formats includes \"json\".",
            "maxLength": 8000
          },
          "maxAgeMs": {
            "type": "number",
            "description": "Maximum accepted cache age in milliseconds. Defaults to 0 for deep jobs so dynamic pages are fetched fresh.",
            "minimum": 0,
            "maximum": 2592000000,
            "default": 0
          },
          "maxDurationMs": {
            "type": "number",
            "description": "Maximum deep render wall-clock duration in milliseconds.",
            "minimum": 5000,
            "maximum": 600000,
            "default": 120000
          },
          "maxScrolls": {
            "type": "number",
            "description": "Maximum viewport scroll steps during deep render.",
            "minimum": 0,
            "maximum": 200,
            "default": 40
          },
          "scrollWaitMs": {
            "type": "number",
            "description": "Delay after each deep-render scroll step.",
            "minimum": 100,
            "maximum": 5000,
            "default": 500
          },
          "contentStableRounds": {
            "type": "number",
            "description": "Stop after this many consecutive scroll rounds without meaningful content growth.",
            "minimum": 1,
            "maximum": 20,
            "default": 3
          },
          "expandClickableContent": {
            "type": "boolean",
            "description": "Click generic visible \"load more\" or \"show more\" controls during deep render.",
            "default": true
          },
          "maxExpansionClicks": {
            "type": "number",
            "description": "Maximum generic expansion clicks during deep render.",
            "minimum": 0,
            "maximum": 200,
            "default": 25
          }
        },
        "required": [
          "url"
        ]
      },
      "WebScrapeJobAcceptedResponseDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "operationId": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "queued"
            ]
          },
          "pollUrl": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "operationId",
          "status",
          "pollUrl"
        ]
      },
      "PlatformWebScrapeBatchDto": {
        "type": "object",
        "properties": {
          "urls": {
            "description": "URLs to scrape using the top-level renderJs and cache freshness options.",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "items": {
            "description": "Per-item scrape requests. Use either items or urls, not both.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PlatformWebScrapeBatchItemDto"
            }
          },
          "renderJs": {
            "type": "boolean",
            "description": "Render JavaScript before scraping for urls entries.",
            "default": false
          },
          "maxAgeMs": {
            "type": "number",
            "minimum": 0,
            "maximum": 2592000000,
            "default": 0
          },
          "maxAgeDays": {
            "type": "number",
            "minimum": 0,
            "maximum": 30,
            "default": 0
          },
          "maxConcurrency": {
            "type": "number",
            "minimum": 1,
            "maximum": 10,
            "default": 3,
            "description": "Maximum number of batch items processed concurrently."
          }
        }
      },
      "PlatformWebScrapeBatchItemDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "URL to scrape",
            "example": "https://example.com/page"
          },
          "renderJs": {
            "type": "boolean",
            "description": "Render JavaScript before scraping",
            "default": false
          },
          "maxAgeMs": {
            "type": "number",
            "minimum": 0,
            "maximum": 2592000000,
            "default": 0
          },
          "maxAgeDays": {
            "type": "number",
            "minimum": 0,
            "maximum": 30,
            "default": 0
          }
        },
        "required": [
          "url"
        ]
      },
      "WebScrapeBatchAcceptedResponseDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "operationId": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "queued"
            ]
          },
          "pollUrl": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "operationId",
          "status",
          "pollUrl"
        ]
      }
    }
  }
}
