> ## Documentation Index
> Fetch the complete documentation index at: https://docs.oathnet.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Initialize a Search Session

> Creates a new search session for a given query. Returns session info with available services
and quota information.

The returned `session.id` should be passed as `search_id` to all subsequent service calls.




## OpenAPI

````yaml /openapi.yaml post /service/search/init
openapi: 3.1.0
info:
  title: OathNet Service API
  version: 2.0.0
  description: >
    # OathNet Service API Documentation


    Welcome to the OathNet Service API. This API provides breach search, stealer
    search,

    victims exploration, file search, exports, bulk search, scanners, and OSINT
    enrichment.


    ## Authentication


    Most `/api/service/*` endpoints require authentication via API key. Include
    your API key

    in the `x-api-key` header.


    ```

    x-api-key: YOUR_API_KEY

    ```


    You can obtain an API key from your dashboard at
    https://oathnet.org/dashboard?tab=account


    ## Rate Limiting & Quotas


    - Each request consumes from your daily lookup quota

    - Quota limits depend on your subscription plan

    - The `_meta.lookups` object in responses shows remaining daily lookups

    - Service-specific quotas may apply to certain endpoints


    ## Search Sessions


    For optimal quota management, initialize a search session before making
    service calls:

    1. Call `/service/search/init` with your query

    2. Use the returned `session.id` as `search_id` in subsequent service calls

    3. This groups related lookups and provides better quota tracking


    ## Structured Filters


    V2 search endpoints share one structured filter contract:


    - use `GET` for simple searches and URL-friendly flat filters

    - use `POST` on the same search route when you have an AI/manual structured
    filter, a saved `filter_id`, or a filter tree that is awkward to URL-encode

    - `filter` is a JSON-encoded filter tree on query-string endpoints and a
    real JSON object on POST endpoints

    - POST search routes still take pagination, sorting, date range, `view`, and
    `search_id` as query parameters; the JSON body is for `filter` and
    `filter_id`

    - `filter_id` is a 24-character transient context ID returned by the AI
    filter flow or prior searches

    - explicit `filter` overrides a stored `filter_id` context, and flat params
    may still be used in the same request

    - the same filter objects are reused by AI filter responses, exports, bulk
    search, and scanners

    - advanced filters use leaf rules with `field`, `operator`, and `value`,
    plus `and` / `or` groups for boolean logic

    - supported operators are `eq`, `neq`, `contains`, `starts_with`,
    `ends_with`, `wildcard`, `gt`, `gte`, `lt`, `lte`, `exists`, `in`, and
    `not_in`


    See the `StructuredFilterNode` schema and `/guides/structured-filters` for
    the full operator list and examples.


    ## Success Response Patterns


    Successful responses use three main patterns:


    - Envelope JSON:
      Common on search-session and OSINT endpoints, plus `v2/stealer/search`,
      `v2/breach/search`, `v2/victims/search`, `v2/stealer/subdomain`,
      and `v2/bulk-search` create.
    - Raw JSON:
      Common on `v2/breach/autocomplete*`, `v2/ai/filter*`,
      `v2/files/search`, `v2/victims/*/properties`, `v2/victims/*/summary`,
      `v2/file-search*`, `v2/exports*`, `v2/bulk-search` list and status,
      `v2/victims/{log_id}`, `v2/phonebook`, and most scanner endpoints.
    - File or text stream:
      Victim file downloads, victim archive downloads, export downloads,
      and bulk-search downloads.

    ## Error Handling


    API-generated errors generally return with `success: false` and include:

    - `message`: Human-readable error description

    - `errors`: Object with field-specific or general error details


    Common HTTP status codes:

    - `200`: Success

    - `202`: Async job accepted

    - `400`: Bad Request (invalid parameters)

    - `401`: Unauthorized (missing or invalid token)

    - `403`: Forbidden (Cloudflare block or quota exceeded)

    - `404`: Not Found

    - `409`: Conflict

    - `429`: Too Many Requests

    - `500`: Internal Server Error

    - `502`: Bad Gateway

    - `503`: Service Unavailable
  contact:
    name: OathNet Support
    url: https://oathnet.org/support
  license:
    name: Proprietary
    url: https://oathnet.org/terms
servers:
  - url: https://oathnet.org/api
    description: Production API Server
security:
  - ApiKeyAuth: []
tags:
  - name: Search Session
    description: Initialize and manage search sessions for grouped lookups
  - name: Breach Search
    description: Search across breach databases for leaked credentials and data
  - name: Stealer Search
    description: Original stealer search route for simple credential lookups
  - name: V2 Stealer
    description: Enhanced V2 stealer search with advanced filtering and pagination
  - name: V2 Investigation
    description: >-
      Multi-section investigation across credentials, victims, evidence, files,
      and related credentials
  - name: V2 Breach
    description: Current breach search, autocomplete, and filter workflows
  - name: V2 Victims
    description: Search and explore victim profiles and their associated files
  - name: V2 File Search
    description: Search within victim files using regex, literal, or wildcard patterns
  - name: V2 File Metadata
    description: Search victim file metadata without fetching file bytes
  - name: V2 Export
    description: Export search results to JSONL or CSV format
  - name: V2 Bulk Search
    description: Batch many terms into an asynchronous export-style search job
  - name: Scanners
    description: >-
      Automated monitoring and delivery management for stealer and breach
      scanners
  - name: OSINT Lookups
    description: Open Source Intelligence lookups for various platforms
  - name: Utility
    description: Utility endpoints for autocomplete and other helpers
paths:
  /service/search/init:
    post:
      tags:
        - Search Session
      summary: Initialize a Search Session
      description: >
        Creates a new search session for a given query. Returns session info
        with available services

        and quota information.


        The returned `session.id` should be passed as `search_id` to all
        subsequent service calls.
      operationId: initSearchSession
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - query
              properties:
                query:
                  type: string
                  description: The search query
                  example: user@example.com
                search_type:
                  type: string
                  description: >
                    Optional hint for the detected query type. The API still
                    validates and

                    may infer the type from `query`.
                  enum:
                    - email
                    - username
                    - ip
                    - domain
                    - discord_id
                    - steam_id
                    - xbox_id
                    - roblox_id
                    - stealer
                  example: email
      responses:
        '200':
          description: Search session initialized
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                  message:
                    type: string
                  data:
                    type: object
                    properties:
                      session:
                        type: object
                        properties:
                          id:
                            type: string
                            description: Session ID to use in subsequent requests
                          query:
                            type: string
                          search_type:
                            type: string
                          status:
                            type: string
                            enum:
                              - active
                              - expired
                          created_at:
                            type: string
                            format: date-time
                          expires_at:
                            type: string
                            format: date-time
                          duration_minutes:
                            type: integer
                      user:
                        type: object
                        properties:
                          plan:
                            type: string
                          plan_type:
                            type: string
                          daily_lookups:
                            type: object
                            properties:
                              used:
                                type: integer
                              remaining:
                                type: integer
                              limit:
                                type: integer
                              is_unlimited:
                                type: boolean
                      services:
                        type: object
                        additionalProperties:
                          type: object
                          properties:
                            name:
                              type: string
                            service_id:
                              type: string
                            category:
                              type: string
                            is_available:
                              type: boolean
                            is_premium:
                              type: boolean
                            session_quota:
                              type: integer
                            today_usage:
                              type: integer
                            recommended_quota:
                              type: integer
                      summary:
                        type: object
                        properties:
                          total_services:
                            type: integer
                          available_services:
                            type: integer
                          session_expires_in_minutes:
                            type: integer
              example:
                success: true
                message: Search session initialized successfully
                data:
                  session:
                    id: sess_abc123
                    query: user@example.com
                    search_type: email
                    status: active
                    created_at: '2024-01-15T10:30:00Z'
                    expires_at: '2024-01-15T11:30:00Z'
                    duration_minutes: 60
                  user:
                    plan: Pro
                    plan_type: pro
                    daily_lookups:
                      used: 450
                      remaining: 550
                      limit: 1000
                      is_unlimited: false
                  services:
                    service_key:
                      name: Service Name
                      service_id: service-id
                      category: general
                      is_available: true
                      is_premium: false
                      session_quota: 100
                      today_usage: 45
                      recommended_quota: 50
                  summary:
                    total_services: 2
                    available_services: 2
                    session_expires_in_minutes: 60
components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: API key for authentication (lowercase header name)

````