Tether Docs

Quickstart

Start exposing your presence data with Tether in seconds


Join the Discord Server

Join the official Tether Discord server to let the Tether bot observe your presence, get help, ask questions.

Discord

Join the Official Tether Discord Server

Get support and connect with the community.

Copy User ID

We to observe a user we need their Discord user ID. You can get this by right clicking a user in Discord and selecting "Copy ID". Copy ID

Not seeing "Copy ID"? Make sure you have Enabled Developer Mode in Discord's user settings.

Using the ID

Replace the {user_id} placeholder in the URL below with the Discord user ID you copied earlier:

A Discord user ID is a long number called a “snowflake”, for example: 123456789012345678.

API Playground
Status:
Speed:
No headers
Enter to send request
Payload:

Code Examples

HTTP API Example

This method only makes a single request to fetch presence data for a user. For real-time updates, see the WebSocket Gateway documentation.

script.js
// Replace with your actual user ID
const userId = "123456789012345678";

// The endpoint for Tether's public API
const url = `https://tether.eggwite.moe/v1/users/${userId}`;

// Use fetch to get the user's presence data
fetch(url)
  .then(response => {
    // Check if the response is OK (status 200)
    if (!response.ok) {
      throw new Error(`HTTP error! status: ${response.status}`);
    }
    // Parse the JSON body
    return response.json();
  })
  .then(data => {
    // Do something with the presence data
    console.log("Presence data:", data);
  })
  .catch(error => {
    // Handle errors (network issues, 4xx/5xx responses, etc.)
    console.error("Failed to fetch presence data:", error);
  });
requirements.txt
pip install requests 
script.py
import requests

# Replace with your actual user ID
user_id = "123456789012345678"

# The endpoint for Tether's public API
url = f"https://tether.eggwite.moe/v1/users/{user_id}"

# Send a GET request to the API
response = requests.get(url)

# Check if the request was successful
if response.status_code == 200:
    # Parse the JSON response
    data = response.json()
    print("Presence data:", data)
else:
    # Print the error code and message
    print(f"Error: {response.status_code} - {response.text}")
script.go
// Import the standard library packages
package main

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

func main() {
    // Replace with your actual user ID
    userID := "123456789012345678"

    // The endpoint for Tether's public API
    url := fmt.Sprintf("https://tether.eggwite.moe/v1/users/%s", userID)

    // Send a GET request to the API
    resp, err := http.Get(url)
    if err != nil {
        fmt.Println("Request error:", err)
        return
    }
    defer resp.Body.Close()

    // Read the response body
    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        fmt.Println("Read error:", err)
        return
    }

    // Parse the JSON response
    var data map[string]interface{}
    if err := json.Unmarshal(body, &data); err != nil {
        fmt.Println("JSON error:", err)
        return
    }

    // Print the presence data
    fmt.Println("Presence data:", data)
}
script.php
<?php

// Replace with your actual user ID
$user_id = "123456789012345678";

// The endpoint for Tether's public API
$url = "https://tether.eggwite.moe/v1/users/$user_id";

// Send a GET request to the API
$response = file_get_contents($url);

if ($response !== false) {
    // Parse the JSON response
    $data = json_decode($response, true);
    echo "Presence data: ";
    print_r($data);
} else {
    // Handle error
    echo "Failed to fetch presence data.";
}

GitHub

Source

Open source repo and contributions.

Join the Community

Ask questions and share ideas in Discord: discord.gg/ZggGDhjCyE


Last updated:

On this page