tomy634.com // TEMP MAIL API

PUBLIC API
tomy634 TEMP MAIL API は、一時メールアドレスをプログラムから発行・参照するための HTTP API です。
このページでは 一般利用者向けエンドポイント をまとめています。

公開テスト用 API キーを確認する

基本情報

ベース URL

すべてのエンドポイントは次のベース URL から始まります:

https://tomy634.com

認証(API キー)

すべての API は API キー が必要です。

例(クエリパラメータ):

curl "https://tomy634.com/api/v1/ping?api_key=YOUR_PUBLIC_KEY"

例(ヘッダ):

curl "https://tomy634.com/api/v1/ping" \
  -H "X-API-Key: YOUR_PUBLIC_KEY"

レート制限(public key)

現在の public キーの標準設定(例):

実際の残り回数は GET /api/v1/ping のレスポンス中 rate フィールドで確認できます。

エンドポイント一覧(admin 以外)

1. 接続テスト / API 情報

GET
/api/v1/ping

API キーが有効か、現在のレート状況がどうなっているかを確認するためのエンドポイントです。

パラメータ

レスポンス例

{
  "ok": true,
  "api_key_name": "sample-public",
  "is_admin": false,
  "rate": {
    "per_second_limit": 8,
    "per_day_limit": 100,
    "remaining_this_second": 7,
    "remaining_today": 54
  },
  "server_time": "2025-11-16T13:39:09.137520+00:00"
}

curl 例

curl "https://tomy634.com/api/v1/ping?api_key=YOUR_PUBLIC_KEY"

2. 一時メールボックスを作成

POST
/api/v1/boxes

新しい一時メールアドレス(ボックス)を作成します。 生成された box_idemail を使ってメール受信を監視します。

リクエストボディ(JSON)

※未指定の場合は、サーバ側のデフォルト値(例:ttl_days=1, max_messages=5)が適用されます。

レスポンス例

{
  "box_id": "sii3jux2ipw4",
  "email": "pwhnbzy0@tomy634.com",
  "created_at": "2025-11-16T14:24:59.175025+00:00",
  "ttl_days": 1,
  "max_messages": 5,
  "delete_on_first": false,
  "expires_at": "2025-11-17T14:24:59.291505+00:00"
}

curl 例(1日 / 5通)

curl -X POST "https://tomy634.com/api/v1/boxes?api_key=YOUR_PUBLIC_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "ttl_days": 1,
    "max_messages": 5
  }'

curl 例(delete_on_first = true : 1通でも来たら自動破棄)

curl -X POST "https://tomy634.com/api/v1/boxes?api_key=YOUR_PUBLIC_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "ttl_days": 0,
    "delete_on_first": true
  }'

3. ボックス内のメール一覧を取得

GET
/api/v1/boxes/{box_id}/messages

指定したボックスに届いているメールの一覧を取得します。

クエリパラメータ

レスポンス例

{
  "box_id": "sii3jux2ipw4",
  "messages": [
    {
      "id": 1,
      "box_id": "sii3jux2ipw4",
      "from": "sender1@example.com",
      "subject": "テストメール 1",
      "date": "2025-11-16T14:32:26.720602+00:00",
      "snippet": "これは API テスト用のダミー本文 1 です。"
    },
    {
      "id": 2,
      "box_id": "sii3jux2ipw4",
      "from": "sender2@example.com",
      "subject": "テストメール 2",
      "date": "2025-11-16T14:32:26.720602+00:00",
      "snippet": "これは API テスト用のダミー本文 2 です。"
    }
  ]
}

curl 例

curl "https://tomy634.com/api/v1/boxes/BOX_ID/messages?api_key=YOUR_PUBLIC_KEY&limit=20"

4. 個別メールの詳細を取得(JSON)

GET
/api/v1/messages/{message_id}

1件分のメール詳細を JSON で取得します。 件名・送信元・受信日時・本文テキスト(body_text)などが含まれます。

レスポンス例

{
  "id": 1,
  "box_id": "sii3jux2ipw4",
  "email": "pwhnbzy0@tomy634.com",
  "from": "sender1@example.com",
  "subject": "テストメール 1",
  "date": "2025-11-16T14:32:26.720602+00:00",
  "snippet": "これは API テスト用のダミー本文 1 です。",
  "body_text": "これは API テスト用のダミー本文 1 です。"
}

curl 例

curl "https://tomy634.com/api/v1/messages/1?api_key=YOUR_PUBLIC_KEY"

5. 個別メールのプレーンテキスト本文だけ取得

GET
/api/v1/messages/{message_id}/text

メール本文を「プレーンテキストのみ」で欲しい場合はこちらを使います。 レスポンスの Content-Type は text/plain; charset=utf-8 になります。

curl 例

curl "https://tomy634.com/api/v1/messages/1/text?api_key=YOUR_PUBLIC_KEY"

レスポンス例

これは API テスト用のダミー本文 1 です。

簡単なクライアントコード例

Python(requests)で新しいアドレスを作って一覧取得

import requests

API_KEY = "YOUR_PUBLIC_KEY"
BASE = "https://tomy634.com"

# 1) ボックス作成(1日 / 最大5通)
r = requests.post(
    f"{BASE}/api/v1/boxes",
    params={"api_key": API_KEY},
    json={"ttl_days": 1, "max_messages": 5},
    timeout=10,
)
r.raise_for_status()
box = r.json()
box_id = box["box_id"]
email  = box["email"]
print("発行されたアドレス:", email)

# 2) メール一覧を取得
r = requests.get(
    f"{BASE}/api/v1/boxes/{box_id}/messages",
    params={"api_key": API_KEY, "limit": 20},
    timeout=10,
)
r.raise_for_status()
data = r.json()
for m in data.get("messages", []):
    print(m["id"], m["from"], m["subject"])

ブラウザ(JavaScript fetch)でメール一覧

const API_KEY = "YOUR_PUBLIC_KEY";
const BASE = "https://tomy634.com";

async function listMessages(boxId) {
  const url = new URL(`/api/v1/boxes/${boxId}/messages`, BASE);
  url.searchParams.set("api_key", API_KEY);
  url.searchParams.set("limit", "20");

  const res = await fetch(url);
  if (!res.ok) {
    console.error("error:", res.status, await res.text());
    return;
  }
  const data = await res.json();
  console.log("messages:", data.messages);
}

注意事項