Use my API to build stuff. I don't make guarantees about uptime and might make breaking changes. Your code should handle my API being shit — good luck!
Rate limits: 60 requests/minute on the search endpoints (/mentions, /stalk, /stalksearch), and 300 requests per 15 minutes across everything.
Ordering: the message search endpoints (/mentions, /stalk, /stalksearch, /convo) page backwards from the newest message, but return each page sorted oldest first. All dates are JS .getTime() milliseconds.
Returns a random ferret image from the collection.
url | Link to the ferret image |
last | Deprecated — ignore this |
Returns recent DGG messages mentioning any of the given usernames.
usernames | Required. 1–10 comma-separated usernames. Duplicates are ignored (case-insensitive); more than 10 is a 400 |
size | Number of messages to return (default: 100, silently capped at 800) |
offset | For pagination with size |
count | Set to true to get {"count": N} instead of messages |
Response is a flat array with the same fields as /mentions/:username — messages from all the usernames are interleaved, so check text to see who was mentioned.
Returns the most recent DGG messages containing the specified username.
id | Row ID of the message — use it with around_id on /daylogs and /convo |
date | Timestamp in JS .getTime() format |
text | Message contents |
nick | Author's username |
flairs | Comma-separated flairs at time of message. See dgg flair mapping |
size | Number of messages to return (default: 100, silently capped at 800) |
offset | For pagination with size |
count | Set to true to get {"count": N} instead of messages |
Returns the most recent DGG messages sent by the specified user.
Response fields and query params are the same as /mentions.
Returns messages sent by a user that also contain a keyword.
Response fields and query params are the same as /mentions.
Bulk /stalk — grabs messages for several users at once.
users | Required. Comma-separated usernames. Anything past the first 10 is silently dropped |
size | Messages per user (default: 100, capped at 800) |
offset | For pagination with size |
around_id | Message id to centre each user's window on, for jumping to a linked message instead of paging to it |
An object keyed by username. The value shape changes depending on whether you passed around_id:
without around_id | {"user": [ …messages… ]} |
with around_id | {"user": {"messages": [ … ], "startOffset": N}} |
Messages have the same fields as /mentions. Cached for 5 minutes.
Returns a single day of chat, oldest first. This one really is chronological — unlike the search endpoints, it pages forward from the start of the day.
date | Required. YYYY-MM-DD, UTC. Anything else is a 400 |
size | Messages to return (default: 500, capped at 1000) |
offset | For pagination with size |
around_id | Message id to centre the window on |
count | Set to true to get {"count": N} for the day |
Normally a flat array of messages (id, date, nick, flairs, text). With around_id you instead get {"messages": [ … ], "startOffset": N}. Use /api/logs to find out which days exist.
Every day that has logged messages, as an array of YYYY-MM-DD strings, newest first. Also see: /api/daylogs. Cached for an hour.
Old memes that probably no one on DGG will understand at this point. Most browsers disable autoplay so half of these are broken anyway.