The server went quiet. What was said in it?
Discord is where a good deal of the trade organises now, and it is structurally hostile to research: servers are invite-only, history is bounded by what a client will scroll, and the file someone posted is gone the moment the message is. Guildwire searches the message corpus full-text across servers, channels and threads, and keeps the attachments.
What Guildwire sees
Threads are first-class, not a footnote
Servers, channels and threads are each indexed as themselves and each filterable, so a conversation that split off into a thread does not fall out of the record, which is exactly where the specifics tend to move once a channel gets busy.
The attachment outlives the message
Files carried by a message are stored and typed by their actual content rather than the extension somebody typed, then deduplicated by content hash. You can filter on that hash, on the file type, or simply on "messages that carried a file", so the sample posted once is still there when you go looking.
Indicators and handles, not just words
Domains, IPs, emails, hashes, CVEs, wallets and card numbers are filters of their own, and an author handle can be followed across every server it speaks in. Full-text search runs over content, title and author together.
Every hit dated twice
A result carries both when the message was actually posted and when we indexed it, filterable and sortable independently, so you can ask what a server said last week, or what only showed up in the index last week, and get two different answers when they diverge.
The thread is where the specifics went
A conversation that split off is still in the record, and the file attached to it is stored once under its content hash, so the same sample posted in a second server is the same record rather than a second copy.
GUILDWIRE · FABRIC
structure illustrative8f21•••• IS ONE STORED OBJECT REFERENCED FROM BOTH SERVERS · IDENTICAL BYTES NEVER BECOME A SECOND COPY, AND THE ROW REMEMBERS WHERE THEY WERE FIRST SEEN
Same data, same permissions, over HTTP
Everything the console shows, the API serves. Real endpoint, sample response, masked values.
GET /api/guildwire/search
REQUEST
curl -H "X-API-Key: sk_••••••••" \ "https://console.generalintels.com/api/guildwire/search\ ?q=rdp+access&has_attachments=true&attachment_extension=zip&ioc_domain=••••&size=20"
RESPONSE · 200
{
"total": 12,
"page": 1,
"size": 20,
"results": [
{
"id": "3ad7••••",
"indexed_at": "2026-07-16T19:04:55Z",
"document": {
"source_type": "discord",
"source_name": "••••",
"thread_url": "••••",
"threat_actor": { "username": "••••" },
"post": {
"content": "…rdp + local admin, one seat left, dm…",
"created_at": "2026-07-16T19:04:48Z"
},
"iocs": { "domains": ["••••"] },
"attachments": [
{ "filename": "build.zip", "extension": "zip", "media_type": "archive",
"hashes": { "sha256": "8f21••••" } }
]
}
}
]
}Server, channel and handle identifiers are redacted in this sample. attachment_extension and attachment_media_type repeat to match several at once; created/indexed date ranges filter independently, so a query can pin either clock.
What a call costs you
Guildwire meters on the API, on a daily ceiling of its own rather than out of a pool shared with the other modules. Working the same corpus in the console is unmetered on every tier.
Full API reference ships with your workspace: every endpoint, versioned.
Guildwire, honestly answered
The other windows
- SherlogCredential & Cookie Intelligence
- DragnetUnderground Content Intelligence
- CvekitVulnerability Intelligence
- MalveineThreat Intel Console & Feeds
- JabbernautMessaging Intelligence · XMPP
- TelepathyMessaging Intelligence · Telegram
- BaitbackImpersonation Defense
- SoursOperator Surveillance · Closed briefing
Your competitors will learn about the leak from the invoice.
Learn about it from the log batch.
NDA-friendly briefings · global coverage · no slideware