# NiamonX API Docs

Description of API tools.

# Introduction to the API service | NiamonX API

# 🔐 How to Create and Use Your NiamonX API Key

This guide explains how to create your API key, keep it secure, and start making requests to the **NiamonX API v2**.

---

## 1. Requirements

To generate an API key, you must have an **active paid plan**.  
Free-tier users **cannot** create or use API keys.

[![image.png](https://wiki.niamonx.io/uploads/images/gallery/2025-11/scaled-1680-/rHkjPpQMkyXyW7CZ-image.png)](https://wiki.niamonx.io/uploads/images/gallery/2025-11/rHkjPpQMkyXyW7CZ-image.png)

---

## 2. Creating an API Key

Visit the official key generation page:

👉 **[https://dash.niamonx.io/api-key](https://dash.niamonx.io/api-key)[<span aria-hidden="true" class="ms-0.5 inline-block align-middle leading-none"><svg class="block h-[0.75em] w-[0.75em] stroke-current stroke-[0.75]" data-rtl-flip="" fill="currentColor" height="20" viewbox="0 0 20 20" width="20" xmlns="http://www.w3.org/2000/svg"><path d="M14.3349 13.3301V6.60645L5.47065 15.4707C5.21095 15.7304 4.78895 15.7304 4.52925 15.4707C4.26955 15.211 4.26955 14.789 4.52925 14.5293L13.3935 5.66504H6.66011C6.29284 5.66504 5.99507 5.36727 5.99507 5C5.99507 4.63273 6.29284 4.33496 6.66011 4.33496H14.9999L15.1337 4.34863C15.4369 4.41057 15.665 4.67857 15.665 5V13.3301C15.6649 13.6973 15.3672 13.9951 14.9999 13.9951C14.6327 13.9951 14.335 13.6973 14.3349 13.3301Z"></path></svg></span>](https://dash.niamonx.io/api-key)**

Once your subscription is active, click **“Create API Key.”**

[![image.png](https://wiki.niamonx.io/uploads/images/gallery/2025-11/scaled-1680-/ZrNpkhLzcquF7sX8-image.png)](https://wiki.niamonx.io/uploads/images/gallery/2025-11/ZrNpkhLzcquF7sX8-image.png)

> ⚠️ **Important:**  
> After generation, the key **will not be displayed again.**  
> It is securely stored in the database as a **SHA-256 hash**, meaning even NiamonX staff cannot recover it.

Keep your key safe — store it in an encrypted password manager or an environment variable.

[![image.png](https://wiki.niamonx.io/uploads/images/gallery/2025-11/scaled-1680-/6rIpOAijHqCILvCE-image.png)](https://wiki.niamonx.io/uploads/images/gallery/2025-11/6rIpOAijHqCILvCE-image.png)

---

## 3. API Key Dashboard Information

After creating the key, you will see the following details:

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk-status-created%3A-%E2%80%94-la"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs">  
</div></div></div><div class="overflow-y-auto p-4" dir="ltr">`<span class="hljs-string">Status</span><span class="hljs-attr">Created:</span> <span class="hljs-string">—</span><span class="hljs-attr">Last used:</span> <span class="hljs-string">—</span><span class="hljs-attr">Revoked:</span> <span class="hljs-literal">no</span>`</div></div>These fields update automatically as you start using your key.

---

## 4. Main Endpoint

All API requests go through the main entry point:

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk-post-https%3A%2F%2Fdash.ni"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs">  
</div></div></div><div class="overflow-y-auto p-4" dir="ltr">`<span class="hljs-variable constant_">POST</span> <span class="hljs-symbol">https:</span>/<span class="hljs-regexp">/dash.niamonx.io/api</span><span class="hljs-regexp">/v2/</span>`</div></div>---

## 5. Example Request

### Basic Health Check (`gl_ping`)

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk-post-https%3A%2F%2Fdash.ni-1"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs">  
</div></div></div><div class="overflow-y-auto p-4" dir="ltr">`POST https://dash.niamonx.io/api/v2/gl_ping`</div></div>**Headers:**

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk-content-type%3A-applic"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs">  
</div></div></div><div class="overflow-y-auto p-4" dir="ltr">`<span class="hljs-attribute">Content-Type</span>: application/json<span class="hljs-attribute">X-API-Key</span>: YOUR_API_KEY`</div></div>**Body:**

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk-%7B-%22ip%22%3A-%221.1.1.1%22-%7D"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs">  
</div></div></div><div class="overflow-y-auto p-4" dir="ltr">`<span class="hljs-punctuation">{</span>  <span class="hljs-attr">"ip"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"1.1.1.1"</span><span class="hljs-punctuation">}</span>`</div></div>---

## 6. Possible Responses

<div class="_tableContainer_1rjym_1" id="bkmrk-http-code-descriptio"><div class="group _tableWrapper_1rjym_13 flex w-fit flex-col-reverse" tabindex="-1"><table class="w-fit min-w-(--thread-content-width)" data-end="1958" data-start="1505"><thead data-end="1532" data-start="1505"><tr data-end="1532" data-start="1505"><th data-col-size="sm" data-end="1517" data-start="1505">HTTP Code</th><th data-col-size="md" data-end="1532" data-start="1517">Description</th></tr></thead><tbody data-end="1958" data-start="1562"><tr data-end="1639" data-start="1562"><td data-col-size="sm" data-end="1572" data-start="1562">**200**</td><td data-col-size="md" data-end="1639" data-start="1572">✅ `success: true, data: {...}` — request completed successfully</td></tr><tr data-end="1693" data-start="1640"><td data-col-size="sm" data-end="1650" data-start="1640">**400**</td><td data-col-size="md" data-end="1693" data-start="1650">❌ Invalid input data (validation error)</td></tr><tr data-end="1737" data-start="1694"><td data-col-size="sm" data-end="1704" data-start="1694">**401**</td><td data-col-size="md" data-end="1737" data-start="1704">🚫 Invalid or missing API key</td></tr><tr data-end="1784" data-start="1738"><td data-col-size="sm" data-end="1748" data-start="1738">**403**</td><td data-col-size="md" data-end="1784" data-start="1748">⛔ The requested tool is disabled</td></tr><tr data-end="1825" data-start="1785"><td data-col-size="sm" data-end="1795" data-start="1785">**404**</td><td data-col-size="md" data-end="1825" data-start="1795">❓ Unknown tool or endpoint</td></tr><tr data-end="1874" data-start="1826"><td data-col-size="sm" data-end="1836" data-start="1826">**405**</td><td data-col-size="md" data-end="1874" data-start="1836">⚙️ Method not allowed (use `POST`)</td></tr><tr data-end="1958" data-start="1875"><td data-col-size="sm" data-end="1885" data-start="1875">**429**</td><td data-col-size="md" data-end="1958" data-start="1885">⏳ Cooldown or daily request limit exceeded (message from ToolService)</td></tr></tbody></table>

</div></div>---

## 7. Security Recommendations

- Never share your API key publicly (including screenshots or code samples).
- Rotate keys regularly if you suspect any compromise.
- Use **environment variables** to store keys in production systems.
- Always use **HTTPS** when communicating with the API.

---

✅ **You’re ready to start!**  
With your key securely stored and your first test request working, you can now explore the full NiamonX API toolkit.

# Data Breach Search API

<span>Data Breach Search</span><span> NiamonX</span>

# API - Public Breaches Search (140+ Billion Records)

# 🧠 NiamonX API — **Public Breaches Search (140+ Billion Records)**

Comprehensive API documentation for searching public data breaches aggregated from 4,500+ sources.

---

## ⚠️ Important Notice

The **Public Breaches Search** API allows you to query a massive database of publicly available leaks (&gt;140 billion records).  
Use it **only** for legitimate purposes — such as verifying your own data or with explicit authorization.

> ❗ Abuse or publication of obtained data will lead to **account suspension** and **permanent API ban**.  
> Some results may contain outdated or incomplete data.

---

## 🧩 API Endpoint

**Main URL:**

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk-post-https%3A%2F%2Fdash.ni"><div class="overflow-y-auto p-4" dir="ltr">`POST https://dash.niamonx.io/api/v2/breaches_search`</div></div>**Headers:**

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk-content-type%3A-applic"><div class="overflow-y-auto p-4" dir="ltr">`<span class="hljs-attribute">Content-Type</span>: application/json<span class="hljs-attribute">X-API-Key</span>: YOUR_API_KEY`</div></div>**Body Example:**

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk--2"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs">  
</div></div></div><div class="overflow-y-auto p-4" dir="ltr">  
</div></div>```json
{ "query": "test@example.com" }
```

### Example Request via cURL

<div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs" id="bkmrk--3">  
</div>```bash
curl -X POST https://dash.niamonx.io/api/v2/breaches_search \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{"query":"test@example.com"}'
```

---

## 🧭 Query Parameters

<div class="_tableContainer_1rjym_1" id="bkmrk-field-type-descripti"><div class="group _tableWrapper_1rjym_13 flex w-fit flex-col-reverse" tabindex="-1"><table class="w-fit min-w-(--thread-content-width)" data-end="1456" data-start="1270"><thead data-end="1310" data-start="1270"><tr data-end="1310" data-start="1270"><th data-col-size="sm" data-end="1278" data-start="1270">Field</th><th data-col-size="sm" data-end="1285" data-start="1278">Type</th><th data-col-size="md" data-end="1299" data-start="1285">Description</th><th data-col-size="sm" data-end="1310" data-start="1299">Example</th></tr></thead><tbody data-end="1456" data-start="1354"><tr data-end="1456" data-start="1354"><td data-col-size="sm" data-end="1364" data-start="1354">`query`</td><td data-col-size="sm" data-end="1375" data-start="1364">`string`</td><td data-col-size="md" data-end="1432" data-start="1375">Search term (email, phone, domain, IP, username, etc.)</td><td data-col-size="sm" data-end="1456" data-start="1432">`"example@mail.com"`</td></tr></tbody></table>

</div></div>### Supported Search Types

- Email: `john.doe@gmail.com`
- Login or Username: `nickname123`
- Domain: `domain.com`
- IP address: `1.1.1.1`
- Combo (e.g. “email password” or “name phone”)
- Full name, city, social ID

💡 **Tip:** If you get an empty response, try deleting one character from the query and repeat the request — it refreshes the search pipeline.

---

## ⚙️ Response Structure

### ✅ When Data Is Found

**HTTP 200**

```json
{
  "success": true,
  "data": {
    "query": "niamonx",
    "task_id": "50bab956-4a9c-4548-83ff-a0451be1b18e",
    "status": "ok",
    "detail": "file_downloaded",
    "meta": {
      "blocks_total": 3,
      "emails": ["test@niamonx.io"],
      "names": ["NiaMonx"],
      "first_seen": "2021-01-21T05:32:31+00:00",
      "last_seen": "2021-01-22T01:51:31+00:00"
    },
    "risk": {
      "score": 9,
      "level": "Low"
    },
    "blocks": [
      {
        "id": "p1",
        "title": "TestNia",
        "description": "In November 2021, the TestNia website...",
        "groups_normalized": [
          {
            "fields_map": {
              "email": "test@niamonx.io",
              "nick": "NiaMonx",
              "ip": "2800:***:9824"
            }
          }
        ]
      }
    ],
    "rate": {
      "remaining": 99,
      "reset_in_sec": 600
    },
    "cooldown_sec": 10
  }
}

```

---

### 🕳️ When No Results Found

**HTTP 200**

```json
{
  "success": true,
  "data": {
    "query": "not_found@niamonx.io",
    "status": "not_found",
    "detail": "no results found",
    "meta": { "blocks_total": 0 },
    "risk": { "score": 0, "level": "Low" }
  }
}

```

---

### 🔒 When Data Is Protected

**HTTP 200**

```json
{
  "success": true,
  "data": {
    "success": false,
    "error": "[NiamonX | DataGuard] This data has been removed and is no longer indexed by our search engine at the request of the copyright holder."
  }
}

```

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk--8"><div class="overflow-y-auto p-4" dir="ltr">  
</div></div>---

## 📊 HTTP Status Codes

<div class="_tableContainer_1rjym_1" id="bkmrk-code-meaning-200-suc"><div class="group _tableWrapper_1rjym_13 flex w-fit flex-col-reverse" tabindex="-1"><table class="w-fit min-w-(--thread-content-width)" data-end="3735" data-start="3385"><thead data-end="3403" data-start="3385"><tr data-end="3403" data-start="3385"><th data-col-size="sm" data-end="3392" data-start="3385">Code</th><th data-col-size="sm" data-end="3403" data-start="3392">Meaning</th></tr></thead><tbody data-end="3735" data-start="3424"><tr data-end="3465" data-start="3424"><td data-col-size="sm" data-end="3434" data-start="3424">**200**</td><td data-col-size="sm" data-end="3465" data-start="3434">Success — request processed</td></tr><tr data-end="3511" data-start="3466"><td data-col-size="sm" data-end="3476" data-start="3466">**400**</td><td data-col-size="sm" data-end="3511" data-start="3476">Invalid input or malformed body</td></tr><tr data-end="3552" data-start="3512"><td data-col-size="sm" data-end="3522" data-start="3512">**401**</td><td data-col-size="sm" data-end="3552" data-start="3522">Invalid or missing API key</td></tr><tr data-end="3597" data-start="3553"><td data-col-size="sm" data-end="3563" data-start="3553">**403**</td><td data-col-size="sm" data-end="3597" data-start="3563">Tool disabled for your account</td></tr><tr data-end="3649" data-start="3598"><td data-col-size="sm" data-end="3608" data-start="3598">**404**</td><td data-col-size="sm" data-end="3649" data-start="3608">Unknown endpoint or invalid tool name</td></tr><tr data-end="3689" data-start="3650"><td data-col-size="sm" data-end="3660" data-start="3650">**405**</td><td data-col-size="sm" data-end="3689" data-start="3660">Wrong method — use `POST`</td></tr><tr data-end="3735" data-start="3690"><td data-col-size="sm" data-end="3700" data-start="3690">**429**</td><td data-col-size="sm" data-end="3735" data-start="3700">Cooldown or daily limit reached</td></tr></tbody></table>

</div></div>---

## 🧱 Features Summary

- 🔍 **140+ billion** records
- 🌍 **4500+** aggregated sources
- 🔒 **Cryptographically protected** data
- 🧠 **Risk Indicator** (numeric + level)
- ⚡ **Cached results** for faster response
- 🧯 **Automatic data removal** for sensitive categories (bank/medical)

---

## 💻 Code Examples

### **1. Python (requests)**

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk--12"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2">  
</div></div><div class="overflow-y-auto p-4" dir="ltr">  
</div></div>```python
import requests

url = "https://dash.niamonx.io/api/v2/breaches_search"
headers = {
    "Content-Type": "application/json",
    "X-API-Key": "YOUR_API_KEY"
}
payload = { "query": "example@mail.com" }

response = requests.post(url, json=payload, headers=headers)
print(response.status_code)
print(response.json())

```

---

### **2. JavaScript (Node.js / Axios)**

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk--14"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2">  
</div></div><div class="overflow-y-auto p-4" dir="ltr">  
</div></div>```javascript
import axios from "axios";

const API_KEY = "YOUR_API_KEY";
const url = "https://dash.niamonx.io/api/v2/breaches_search";

async function searchLeak(query) {
  try {
    const res = await axios.post(
      url,
      { query },
      {
        headers: {
          "Content-Type": "application/json",
          "X-API-Key": API_KEY
        }
      }
    );
    console.log(res.data);
  } catch (err) {
    console.error("Error:", err.response?.data || err.message);
  }
}

searchLeak("example@mail.com");

```

---

### **3. PHP (cURL)**

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk--16"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2">  
</div></div><div class="overflow-y-auto p-4" dir="ltr">  
</div></div>```php
<?php
$api_key = "YOUR_API_KEY";
$url = "https://dash.niamonx.io/api/v2/breaches_search";

$data = ["query" => "example@mail.com"];
$options = [
  CURLOPT_URL => $url,
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_POST => true,
  CURLOPT_HTTPHEADER => [
    "Content-Type: application/json",
    "X-API-Key: $api_key"
  ],
  CURLOPT_POSTFIELDS => json_encode($data)
];

$ch = curl_init();
curl_setopt_array($ch, $options);
$response = curl_exec($ch);
curl_close($ch);

echo $response;
?>

```

---

### **4. Go (net/http)**

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk--18"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2">  
</div></div><div class="overflow-y-auto p-4" dir="ltr">  
</div></div>```go
package main

import (
	"bytes"
	"fmt"
	"io"
	"net/http"
)

func main() {
	apiKey := "YOUR_API_KEY"
	jsonBody := []byte(`{"query":"example@mail.com"}`)
	req, _ := http.NewRequest("POST", "https://dash.niamonx.io/api/v2/breaches_search", bytes.NewBuffer(jsonBody))
	req.Header.Set("Content-Type", "application/json")
	req.Header.Set("X-API-Key", apiKey)

	client := &http.Client{}
	resp, err := client.Do(req)
	if err != nil {
		panic(err)
	}
	defer resp.Body.Close()

	body, _ := io.ReadAll(resp.Body)
	fmt.Println("Status:", resp.Status)
	fmt.Println(string(body))
}

```

---

## 🧠 Best Practices

- Wait **3 seconds** between requests to respect cooldown (anti-spam).
- Combine parameters intelligently:
    
    
    - `"email password"`
    - `"name phone"`
- Do not republish or share results publicly.
- If you detect compromised credentials — **change passwords immediately**.
- Sensitive datasets (bank cards, healthcare) are **automatically excluded**.

---

## 🧾 Summary

<div class="_tableContainer_1rjym_1" id="bkmrk-feature-description-"><div class="group _tableWrapper_1rjym_13 flex w-fit flex-col-reverse" tabindex="-1"><table class="w-fit min-w-(--thread-content-width)" data-end="6954" data-start="6569"><thead data-end="6594" data-start="6569"><tr data-end="6594" data-start="6569"><th data-col-size="sm" data-end="6579" data-start="6569">Feature</th><th data-col-size="md" data-end="6594" data-start="6579">Description</th></tr></thead><tbody data-end="6954" data-start="6623"><tr data-end="6690" data-start="6623"><td data-col-size="sm" data-end="6638" data-start="6623">**Endpoint**</td><td data-col-size="md" data-end="6690" data-start="6638">`https://dash.niamonx.io/api/v2/breaches_search`</td></tr><tr data-end="6712" data-start="6691"><td data-col-size="sm" data-end="6704" data-start="6691">**Method**</td><td data-col-size="md" data-end="6712" data-start="6704">POST</td></tr><tr data-end="6749" data-start="6713"><td data-col-size="sm" data-end="6734" data-start="6713">**Authentication**</td><td data-col-size="md" data-end="6749" data-start="6734">`X-API-Key`</td></tr><tr data-end="6779" data-start="6750"><td data-col-size="sm" data-end="6765" data-start="6750">**Cooldown**</td><td data-col-size="md" data-end="6779" data-start="6765">3 seconds</td></tr><tr data-end="6831" data-start="6780"><td data-col-size="sm" data-end="6802" data-start="6780">**Rate Limit Info**</td><td data-col-size="md" data-end="6831" data-start="6802">Returned in `rate` object</td></tr><tr data-end="6897" data-start="6832"><td data-col-size="sm" data-end="6859" data-start="6832">**Data Types Supported**</td><td data-col-size="md" data-end="6897" data-start="6859">Email, phone, IP, domain, username</td></tr><tr data-end="6954" data-start="6898"><td data-col-size="sm" data-end="6920" data-start="6898">**Data Protection**</td><td data-col-size="md" data-end="6954" data-start="6920">SHA-256 &amp; DataGuard Compliance</td></tr></tbody></table>

</div></div>---

✅ **Now you can safely integrate the NiamonX Public Breaches API** into your OSINT tools, cybersecurity dashboards, or monitoring systems — with full ethical and legal compliance.

# ULP (Infostealer Logs) Public Breached ULP Search | NiamonX API

# 🧩 NiamonX API — **ULP (Infostealer Logs) Public Breached Search**

Comprehensive API documentation for searching **ULP datasets (URL · LOGIN · PASSWORD)** extracted from public infostealer logs and credential leaks.

---

## 🔍 What Is ULP?

**ULP** stands for **URL · LOGIN · PASSWORD** — a triple that represents evidence of compromised credentials captured in stealer logs or public leaks.

Each ULP record links:

- **URL:** the website or endpoint where the credential was used (e.g., `example.com/login`)
- **LOGIN:** the username or email associated with the site
- **PASSWORD:** the stolen or leaked password (masked by default for privacy)

This API enables you to search across massive datasets for specific entries by **email**, **username**, **domain**, **URL**, or **password**.

---

## ⚠️ Usage &amp; Ethics

By using this endpoint, you confirm that:

- You **own** the data or have explicit permission to process it.
- You will **not share** results publicly or misuse obtained data.
- You will **act responsibly** — change any compromised credentials and enable MFA.

All queries are **end-to-end encrypted**, and NiamonX **never logs or shares** search data.

---

## 🧠 Endpoint

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk-post-https%3A%2F%2Fdash.ni"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs">  
</div></div></div><div class="overflow-y-auto p-4" dir="ltr">`POST https://dash.niamonx.io/api/v2/ulp_search`</div></div>---

## 📥 Request Structure

### **Headers**

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk-content-type%3A-applic"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs">  
</div></div></div><div class="overflow-y-auto p-4" dir="ltr">`<span class="hljs-attribute">Content-Type</span>: application/json<span class="hljs-attribute">X-API-Key</span>: YOUR_API_KEY`</div></div>### **Body Example**

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk--4"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs">  
</div></div></div><div class="overflow-y-auto p-4" dir="ltr"></div></div>```bash
{ "action": "search", "value": "test@example.com", "type": "auto", "exact": true, "limit": 200 }
```

---

## ⚙️ Request Parameters

<div class="_tableContainer_1rjym_1" id="bkmrk-field-type-descripti"><div class="group _tableWrapper_1rjym_13 flex w-fit flex-col-reverse" tabindex="-1"><table class="w-fit min-w-(--thread-content-width)" data-end="2151" data-start="1695"><thead data-end="1735" data-start="1695"><tr data-end="1735" data-start="1695"><th data-col-size="sm" data-end="1703" data-start="1695">Field</th><th data-col-size="sm" data-end="1710" data-start="1703">Type</th><th data-col-size="md" data-end="1724" data-start="1710">Description</th><th data-col-size="sm" data-end="1735" data-start="1724">Example</th></tr></thead><tbody data-end="2151" data-start="1779"><tr data-end="1838" data-start="1779"><td data-col-size="sm" data-end="1792" data-start="1779">**action**</td><td data-col-size="sm" data-end="1803" data-start="1792">`string`</td><td data-col-size="md" data-end="1824" data-start="1803">Must be `"search"`</td><td data-col-size="sm" data-end="1838" data-start="1824">`"search"`</td></tr><tr data-end="1935" data-start="1839"><td data-col-size="sm" data-end="1851" data-start="1839">**value**</td><td data-col-size="sm" data-end="1862" data-start="1851">`string`</td><td data-col-size="md" data-end="1914" data-start="1862">Your search query (email, domain, password, etc.)</td><td data-col-size="sm" data-end="1935" data-start="1914">`"user@mail.com"`</td></tr><tr data-end="1997" data-start="1936"><td data-col-size="sm" data-end="1947" data-start="1936">**type**</td><td data-col-size="sm" data-end="1958" data-start="1947">`string`</td><td data-col-size="md" data-end="1984" data-start="1958">Search type (see below)</td><td data-col-size="sm" data-end="1997" data-start="1984">`"email"`</td></tr><tr data-end="2084" data-start="1998"><td data-col-size="sm" data-end="2010" data-start="1998">**exact**</td><td data-col-size="sm" data-end="2022" data-start="2010">`boolean`</td><td data-col-size="md" data-end="2074" data-start="2022">Whether to match exactly (recommended for emails)</td><td data-col-size="sm" data-end="2084" data-start="2074">`true`</td></tr><tr data-end="2151" data-start="2085"><td data-col-size="sm" data-end="2097" data-start="2085">**limit**</td><td data-col-size="sm" data-end="2109" data-start="2097">`integer`</td><td data-col-size="md" data-end="2142" data-start="2109">Max number of records (1–1000)</td><td data-col-size="sm" data-end="2151" data-start="2142">`200`</td></tr></tbody></table>

</div></div>### Available `type` values:

- `auto` *(default)*
- `email`
- `username`
- `domain`
- `url`
- `password`

---

## 🧭 Example cURL Request

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk--7"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs">  
</div></div></div><div class="overflow-y-auto p-4" dir="ltr"></div></div>```bash
curl -X POST https://dash.niamonx.io/api/v2/ulp_search \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{"action":"search","value":"test@example.com","type":"auto","exact":true,"limit":200}'

```

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk--8"><div class="overflow-y-auto p-4" dir="ltr">  
</div></div>---

## 🧾 Successful Response

**HTTP 200**

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk--10"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs">  
</div></div></div><div class="overflow-y-auto p-4" dir="ltr"></div></div>```json
{
  "success": true,
  "data": {
    "query": {
      "value": "test@niamonx.io",
      "type": "email",
      "exact": true,
      "limit": 200
    },
    "stats": {
      "total": 1,
      "unique_hosts": 1,
      "with_password": 1
    },
    "records": [
      {
        "id": "ac22b9424f8aab6011fb526c9798e7c3898652d4c7a6eb8c0253212d94a9fec4",
        "url": "niamonx.io/login/index",
        "host": "niamonx.io",
        "login": "test@niamonx.io",
        "pass": "NiaMon750H",
        "score": 8.840368
      }
    ],
    "status": "ok",
    "cached": false,
    "fetched_at": "2025-11-09T21:50:31+00:00",
    "api_timing_ms": 75
  }
}

```

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk--11"><div class="overflow-y-auto p-4" dir="ltr">  
</div></div>---

## 🕳️ When Nothing Is Found

**HTTP 200**

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk--13"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs">  
</div></div></div><div class="overflow-y-auto p-4" dir="ltr"></div></div>```json
{
  "success": true,
  "data": {
    "query": {
      "value": "not_found",
      "type": "username",
      "exact": true,
      "limit": 200
    },
    "stats": {
      "total": 0,
      "unique_hosts": 0,
      "with_password": 0
    },
    "records": [],
    "status": "ok",
    "cached": false,
    "fetched_at": "2025-11-09T21:51:56+00:00",
    "api_timing_ms": 63
  }
}

```

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk--14"><div class="overflow-y-auto p-4" dir="ltr">  
</div></div>---

## 🔒 Protected Data Response

**HTTP 200**

```json
{
  "success": true,
  "data": {
    "success": false,
    "error": "[NiamonX | DataGuard] This data has been removed and is no longer indexed by our search engine at the request of the copyright holder."
  }
}

```

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk--16"><div class="overflow-y-auto p-4" dir="ltr">  
</div></div>---

## 📊 HTTP Status Codes

<div class="_tableContainer_1rjym_1" id="bkmrk-code-description-200"><div class="group _tableWrapper_1rjym_13 flex w-fit flex-col-reverse" tabindex="-1"><table class="w-fit min-w-(--thread-content-width)" data-end="4365" data-start="3981"><thead data-end="4003" data-start="3981"><tr data-end="4003" data-start="3981"><th data-col-size="sm" data-end="3988" data-start="3981">Code</th><th data-col-size="md" data-end="4003" data-start="3988">Description</th></tr></thead><tbody data-end="4365" data-start="4028"><tr data-end="4069" data-start="4028"><td data-col-size="sm" data-end="4038" data-start="4028">**200**</td><td data-col-size="md" data-end="4069" data-start="4038">Success — request processed</td></tr><tr data-end="4118" data-start="4070"><td data-col-size="sm" data-end="4080" data-start="4070">**400**</td><td data-col-size="md" data-end="4118" data-start="4080">Invalid input or malformed request</td></tr><tr data-end="4159" data-start="4119"><td data-col-size="sm" data-end="4129" data-start="4119">**401**</td><td data-col-size="md" data-end="4159" data-start="4129">Invalid or missing API key</td></tr><tr data-end="4204" data-start="4160"><td data-col-size="sm" data-end="4170" data-start="4160">**403**</td><td data-col-size="md" data-end="4204" data-start="4170">Tool disabled for your account</td></tr><tr data-end="4251" data-start="4205"><td data-col-size="sm" data-end="4215" data-start="4205">**404**</td><td data-col-size="md" data-end="4251" data-start="4215">Unknown endpoint or invalid tool</td></tr><tr data-end="4296" data-start="4252"><td data-col-size="sm" data-end="4262" data-start="4252">**405**</td><td data-col-size="md" data-end="4296" data-start="4262">Wrong HTTP method (use `POST`)</td></tr><tr data-end="4365" data-start="4297"><td data-col-size="sm" data-end="4307" data-start="4297">**429**</td><td data-col-size="md" data-end="4365" data-start="4307">Cooldown or daily limit exceeded (ToolService message)</td></tr></tbody></table>

</div></div>---

## 💡 Tips &amp; Notes

- ⏳ **Limit:** up to 1000 results per request
- 🧯 **Cooldown:** few seconds between requests to prevent spam
- 🌍 **Domain search:** finds subdomains automatically
- 🧩 **Duplicate removal** and periodic reindexing ensure fresh results
- 🔁 If results seem incomplete, retry in several minutes for updated data

---

## 💻 Code Examples

### **1. Python (requests)**

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk--20"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs">  
</div></div></div><div class="overflow-y-auto p-4" dir="ltr"></div></div>```python
import requests
import json

url = "https://dash.niamonx.io/api/v2/ulp_search"
headers = {
    "Content-Type": "application/json",
    "X-API-Key": "YOUR_API_KEY"
}
payload = {
    "action": "search",
    "value": "test@example.com",
    "type": "auto",
    "exact": True,
    "limit": 200
}

response = requests.post(url, headers=headers, json=payload)
print(response.status_code)
print(json.dumps(response.json(), indent=2))

```

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk--21"><div class="overflow-y-auto p-4" dir="ltr">  
</div></div>---

### **2. JavaScript (Node.js / Axios)**

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk--23"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs">  
</div></div></div><div class="overflow-y-auto p-4" dir="ltr"></div></div>```javascript
import axios from "axios";

const API_KEY = "YOUR_API_KEY";
const url = "https://dash.niamonx.io/api/v2/ulp_search";

async function searchULP(query) {
  try {
    const res = await axios.post(
      url,
      {
        action: "search",
        value: query,
        type: "auto",
        exact: true,
        limit: 200
      },
      {
        headers: {
          "Content-Type": "application/json",
          "X-API-Key": API_KEY
        }
      }
    );
    console.log(JSON.stringify(res.data, null, 2));
  } catch (err) {
    console.error("Error:", err.response?.data || err.message);
  }
}

searchULP("test@example.com");

```

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk--24"><div class="overflow-y-auto p-4" dir="ltr">  
</div></div>---

### **3. PHP (cURL)**

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk--26"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs">  
</div></div></div><div class="overflow-y-auto p-4" dir="ltr"></div></div>```php
<?php
$apiKey = "YOUR_API_KEY";
$url = "https://dash.niamonx.io/api/v2/ulp_search";

$data = [
  "action" => "search",
  "value" => "test@example.com",
  "type" => "auto",
  "exact" => true,
  "limit" => 200
];

$options = [
  CURLOPT_URL => $url,
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_POST => true,
  CURLOPT_HTTPHEADER => [
    "Content-Type: application/json",
    "X-API-Key: $apiKey"
  ],
  CURLOPT_POSTFIELDS => json_encode($data)
];

$ch = curl_init();
curl_setopt_array($ch, $options);
$response = curl_exec($ch);
curl_close($ch);

echo $response;
?>

```

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk--27"><div class="overflow-y-auto p-4" dir="ltr">  
</div></div>---

### **4. Go (net/http)**

```go
package main

import (
	"bytes"
	"fmt"
	"io"
	"net/http"
)

func main() {
	apiKey := "YOUR_API_KEY"
	body := []byte(`{"action":"search","value":"test@example.com","type":"auto","exact":true,"limit":200}`)

	req, _ := http.NewRequest("POST", "https://dash.niamonx.io/api/v2/ulp_search", bytes.NewBuffer(body))
	req.Header.Set("Content-Type", "application/json")
	req.Header.Set("X-API-Key", apiKey)

	client := &http.Client{}
	resp, err := client.Do(req)
	if err != nil {
		panic(err)
	}
	defer resp.Body.Close()

	result, _ := io.ReadAll(resp.Body)
	fmt.Println("Status:", resp.Status)
	fmt.Println(string(result))
}

```

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk--29"><div class="overflow-y-auto p-4" dir="ltr">  
</div></div>---

## 🧭 Summary

<div class="_tableContainer_1rjym_1" id="bkmrk-feature-description-"><div class="group _tableWrapper_1rjym_13 flex w-fit flex-col-reverse" tabindex="-1"><table class="w-fit min-w-(--thread-content-width)" data-end="7719" data-start="7276"><thead data-end="7301" data-start="7276"><tr data-end="7301" data-start="7276"><th data-col-size="sm" data-end="7286" data-start="7276">Feature</th><th data-col-size="md" data-end="7301" data-start="7286">Description</th></tr></thead><tbody data-end="7719" data-start="7330"><tr data-end="7392" data-start="7330"><td data-col-size="sm" data-end="7345" data-start="7330">**Endpoint**</td><td data-col-size="md" data-end="7392" data-start="7345">`https://dash.niamonx.io/api/v2/ulp_search`</td></tr><tr data-end="7416" data-start="7393"><td data-col-size="sm" data-end="7406" data-start="7393">**Method**</td><td data-col-size="md" data-end="7416" data-start="7406">`POST`</td></tr><tr data-end="7450" data-start="7417"><td data-col-size="sm" data-end="7435" data-start="7417">**Auth Header**</td><td data-col-size="md" data-end="7450" data-start="7435">`X-API-Key`</td></tr><tr data-end="7485" data-start="7451"><td data-col-size="sm" data-end="7463" data-start="7451">**Limit**</td><td data-col-size="md" data-end="7485" data-start="7463">up to 1000 records</td></tr><tr data-end="7533" data-start="7486"><td data-col-size="sm" data-end="7501" data-start="7486">**Cooldown**</td><td data-col-size="md" data-end="7533" data-start="7501">Short delay between requests</td></tr><tr data-end="7595" data-start="7534"><td data-col-size="sm" data-end="7555" data-start="7534">**Sensitive Data**</td><td data-col-size="md" data-end="7595" data-start="7555">Passwords masked, removed on request</td></tr><tr data-end="7649" data-start="7596"><td data-col-size="sm" data-end="7611" data-start="7596">**Security**</td><td data-col-size="md" data-end="7649" data-start="7611">Encrypted E2E, DataGuard compliant</td></tr><tr data-end="7719" data-start="7650"><td data-col-size="sm" data-end="7668" data-start="7650">**Data Source**</td><td data-col-size="md" data-end="7719" data-start="7668">Public infostealer logs and breach repositories</td></tr></tbody></table>

</div></div>---

✅ **With the ULP API**, you can ethically and securely analyze exposure of credentials from public infostealer datasets — empowering your investigations, threat intelligence, and personal data protection workflows.

# PBS v2 | Public Breached Search V2 | NiamonX API

# 🔍 Public Breached Search V2 — NiamonX API Guide

The **Public Breached Search V2** endpoint allows you to search for publicly available breach records in the NiamonX secure data analysis system.  
It operates through a **private, encrypted channel** and uses a **minimal indexing model** to protect sensitive data.

Supported identifiers include:

- **Email**
- **Username**
- **Phone**
- **Hash**

All requests must be made securely and responsibly.  
**Never share or publish personal results** — doing so may violate data protection laws and lead to account suspension.

---

## 🧭 API Endpoint

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk-post-https%3A%2F%2Fdash.ni"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs">  
</div></div></div><div class="overflow-y-auto p-4" dir="ltr">`POST https://dash.niamonx.io/api/v2/breaches_s_v2`</div></div>### Headers:

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk-content-type%3A-applic"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs">  
</div></div></div><div class="overflow-y-auto p-4" dir="ltr">`<span class="hljs-attribute">Content-Type</span>: application/json<span class="hljs-attribute">X-API-Key</span>: YOUR_API_KEY`</div></div>### Body:

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk--1"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs">  
</div></div></div><div class="overflow-y-auto p-4" dir="ltr"></div></div>```bash
{ "value": "test@example.com", "type": "auto" }
```

**Available types:**  
`auto`, `email`, `username`, `phone`, `hash`

---

## 💡 Description

This API searches **closed and anonymized datasets** for breached credential evidence.  
Decryption happens at the client level using your master key, ensuring full end-to-end security.

Additional features:

- Passwords are hidden by default (toggleable).
- Supports export to CSV/JSON.
- Local query history.
- Internal quotas are invisible to users.
- Misuse or unauthorized data searches may result in a ban.

---

## ✅ Example Successful Response

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk--4"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs">  
</div></div></div><div class="overflow-y-auto p-4" dir="ltr"></div></div>```bash
{
  "success": true,
  "data": {
    "query": {
      "value": "test@niamonx.io",
      "type": "auto"
    },
    "stats": {
      "found": 2,
      "returned": 2,
      "with_passwords": 2,
      "unique_sources": 1,
      "earliest_month": null,
      "latest_month": null
    },
    "records": [
      {
        "source": {
          "name": "Stealer Logs",
          "breach_date": null,
          "unverified": 0,
          "passwordless": 0,
          "compilation": 1
        },
        "account": "test@niamonx.io",
        "email": "test@niamonx.io",
        "username": null,
        "phone": null,
        "hash": null,
        "password": "z8NiAmOn50H",
        "fields": [
          "password",
          "origin",
          "email"
        ]
      },
      {
        "source": {
          "name": "Stealer Logs",
          "breach_date": null,
          "unverified": 0,
          "passwordless": 0,
          "compilation": 1
        },
        "account": "test@niamonx.io",
        "email": "test@niamonx.io",
        "username": null,
        "phone": null,
        "hash": null,
        "password": "ViptraNiA!",
        "fields": [
          "password",
          "origin",
          "email"
        ]
      }
    ],
    "niamonx_success": true,
    "status": "ok",
    "fetched_at": "2025-11-09T22:04:00+00:00",
    "api_timing_ms": 146
  }
}

```

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk--5"><div class="overflow-y-auto p-4" dir="ltr">  
</div></div>---

## ⚠️ Possible Outcomes

### No Matches Found

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk--7"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs">  
</div></div></div><div class="overflow-y-auto p-4" dir="ltr"></div></div>```json
{
  "success": true,
  "data": {
    "success": false,
    "status": "error",
    "error": "HTTP 400",
    "query": {
      "value": "not_found",
      "type": "auto"
    }
  }
}

```

### DataGuard Protection

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk--8"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs">  
</div></div></div><div class="overflow-y-auto p-4" dir="ltr"></div></div>```bash
{
  "success": true,
  "data": {
    "success": false,
    "error": "[NiamonX | DataGuard] This data has been removed and is no longer indexed by our search engine at the request of the copyright holder."
  }
}

```

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk--9"><div class="overflow-y-auto p-4" dir="ltr">  
</div></div>---

## 🌐 HTTP Status Codes

<div class="_tableContainer_1rjym_1" id="bkmrk-code-meaning-200-%E2%9C%85-s"><div class="group _tableWrapper_1rjym_13 flex w-fit flex-col-reverse" tabindex="-1"><table class="w-fit min-w-(--thread-content-width)" data-end="3714" data-start="3355"><thead data-end="3373" data-start="3355"><tr data-end="3373" data-start="3355"><th data-col-size="sm" data-end="3362" data-start="3355">Code</th><th data-col-size="md" data-end="3373" data-start="3362">Meaning</th></tr></thead><tbody data-end="3714" data-start="3394"><tr data-end="3449" data-start="3394"><td data-col-size="sm" data-end="3404" data-start="3394">**200**</td><td data-col-size="md" data-end="3449" data-start="3404">✅ Successful response (check data object)</td></tr><tr data-end="3496" data-start="3450"><td data-col-size="sm" data-end="3460" data-start="3450">**400**</td><td data-col-size="md" data-end="3496" data-start="3460">❌ Validation error in input data</td></tr><tr data-end="3540" data-start="3497"><td data-col-size="sm" data-end="3507" data-start="3497">**401**</td><td data-col-size="md" data-end="3540" data-start="3507">🚫 Invalid or missing API key</td></tr><tr data-end="3585" data-start="3541"><td data-col-size="sm" data-end="3551" data-start="3541">**403**</td><td data-col-size="md" data-end="3585" data-start="3551">⛔ Tool disabled or unavailable</td></tr><tr data-end="3618" data-start="3586"><td data-col-size="sm" data-end="3596" data-start="3586">**404**</td><td data-col-size="md" data-end="3618" data-start="3596">❓ Unknown endpoint</td></tr><tr data-end="3667" data-start="3619"><td data-col-size="sm" data-end="3629" data-start="3619">**405**</td><td data-col-size="md" data-end="3667" data-start="3629">⚙️ Method not allowed (use `POST`)</td></tr><tr data-end="3714" data-start="3668"><td data-col-size="sm" data-end="3678" data-start="3668">**429**</td><td data-col-size="md" data-end="3714" data-start="3678">⏳ Cooldown / daily limit reached</td></tr></tbody></table>

</div></div>---

## 🧩 Example Implementations

### 1. cURL

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk--12"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs">  
</div></div></div><div class="overflow-y-auto p-4" dir="ltr"></div></div>```bash
curl -X POST https://dash.niamonx.io/api/v2/breaches_s_v2 \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{"value":"test@example.com","type":"auto"}'

```

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk--13"><div class="overflow-y-auto p-4" dir="ltr">  
</div></div>---

### 2. Python (using `requests`)

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk--15"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs">  
</div></div></div><div class="overflow-y-auto p-4" dir="ltr"></div></div>```python
import requests

url = "https://dash.niamonx.io/api/v2/breaches_s_v2"
headers = {
    "Content-Type": "application/json",
    "X-API-Key": "YOUR_API_KEY"
}
data = {
    "value": "test@example.com",
    "type": "auto"
}

response = requests.post(url, json=data, headers=headers)
print(response.json())

```

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk--16"><div class="overflow-y-auto p-4" dir="ltr">  
</div></div>---

### 3. JavaScript (Node.js, using `axios`)

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk--18"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs">  
</div></div></div><div class="overflow-y-auto p-4" dir="ltr"></div></div>```javascript
import axios from "axios";

const url = "https://dash.niamonx.io/api/v2/breaches_s_v2";
const headers = {
  "Content-Type": "application/json",
  "X-API-Key": "YOUR_API_KEY"
};

const data = {
  value: "test@example.com",
  type: "auto"
};

axios.post(url, data, { headers })
  .then(res => console.log(res.data))
  .catch(err => console.error(err.response?.data || err.message));

```

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk--19"><div class="overflow-y-auto p-4" dir="ltr">  
</div></div>---

### 4. PHP

```php
<?php
$url = "https://dash.niamonx.io/api/v2/breaches_s_v2";
$headers = [
    "Content-Type: application/json",
    "X-API-Key: YOUR_API_KEY"
];
$body = json_encode([
    "value" => "test@example.com",
    "type" => "auto"
]);

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$response = curl_exec($ch);
curl_close($ch);

echo $response;
?>

```

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk--21"><div class="overflow-y-auto p-4" dir="ltr">  
</div></div>---

### 5. Go

```go
package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"net/http"
	"io/ioutil"
)

func main() {
	url := "https://dash.niamonx.io/api/v2/breaches_s_v2"
	body := map[string]string{
		"value": "test@example.com",
		"type":  "auto",
	}
	jsonData, _ := json.Marshal(body)

	req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
	req.Header.Set("Content-Type", "application/json")
	req.Header.Set("X-API-Key", "YOUR_API_KEY")

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()

	respBody, _ := ioutil.ReadAll(resp.Body)
	fmt.Println(string(respBody))
}

```

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk--23"><div class="overflow-y-auto p-4" dir="ltr">  
</div></div>---

## 🛡️ Security Recommendations

- Keep your API key private; never hard-code it in shared repositories.
- Use HTTPS exclusively — no plain HTTP connections are allowed.
- If your key is compromised, revoke it immediately.
- Store credentials in environment variables or encrypted vaults.
- Do not reshare or republish search results publicly.

---

✅ **You’re all set!**  
With your **NiamonX API Key** and this **Public Breached Search V2** guide, you can perform encrypted and privacy-compliant breach lookups safely and efficiently.