機能・サービス
外部サービスから掲示板に投稿したい
Rara APIを使用することで外部サービスや独自開発のシステムから掲示板に投稿ができます。
本機能を使用には技術的な知識が必要です。
本APIは、APIキーとHMAC署名による認証を行います。クライアントは署名付きヘッダーを送信する必要があります。APIキーおよびシークレットキーは管理画面より発行することができます。
タイムスタンプの誤差は ±5分以内である必要があります。
署名は
シークレットキーは外部に漏洩しないよう厳重に管理してください。
通信は必ず HTTPS 経由で行ってください。
本機能を使用には技術的な知識が必要です。
概要
本APIは、APIキーとHMAC署名による認証を行います。クライアントは署名付きヘッダーを送信する必要があります。APIキーおよびシークレットキーは管理画面より発行することができます。
API情報
| エンドポイント | https://rara.jp/api/newPost |
|---|---|
| メソッド | POST |
| 認証方式 | APIキー + HMAC署名(SHA-256) |
| 返却形式 | JSON |
認証方法
以下のヘッダーを付与してください:
X-API-Key | あなたのAPIキー |
|---|---|
X-Timestamp | UNIXタイムスタンプ(秒) |
X-Signature | 後述の方法で生成した署名 |
署名生成ルール
以下の形式で署名対象文字列を構成します:
HTTPメソッド
リクエストパス
タイムスタンプ
ボディ例:
POST
/api/newPost
1722600000
これに対して、次のように署名を生成します:
$signature = hash_hmac('sha256', $dataToSign, $secretKey);PHPクライアントサンプル
<?php
$apiUrl = "https://rara.jp/api/newPost";
$apiKey = "あなたのAPIキー";
$secretKey = "対応するシークレットキー";
// 送信データ
$params = [
'name' => '投稿者名',
'comment' => 'メッセージ',
'subject' => 'タイトル'
];
$timestamp = time();
$urlParts = parse_url($apiUrl);
$path = $urlParts['path'];
// 署名作成
$jsonData = json_encode($params, JSON_UNESCAPED_UNICODE);
$dataToSign = "POST" . "\n" . $path . "\n" . $timestamp . "\n" . $jsonData;
$signature = hash_hmac('sha256', $dataToSign, $secretKey);
// CURL送信
$ch = curl_init($apiUrl);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'X-API-KEY: ' . $apiKey,
'X-SIGNATURE: ' . $signature,
'X-TIMESTAMP: ' . $timestamp
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Curl error: ' . curl_error($ch);
} else {
echo $result;
}
curl_close($ch);
Pythonクライアントサンプル
import time
import json
import hmac
import hashlib
import requests
from urllib.parse import urlparse
apiUrl = "https://rara.jp/api/newPost"
apiKey = "あなたのAPIキー"
secretKey = "対応するシークレットキー"
# 送信データ
params = {
"name": "投稿者名",
"comment": "メッセージ",
"subject": "タイトル"
}
timestamp = str(int(time.time()))
# URLからpath取得
urlParts = urlparse(apiUrl)
path = urlParts.path
# JSON化
jsonData = json.dumps(params, ensure_ascii=False)
# 署名作成
dataToSign = "POST\n" + path + "\n" + timestamp + "\n" + jsonData
signature = hmac.new(
secretKey.encode(),
dataToSign.encode(),
hashlib.sha256
).hexdigest()
# ヘッダー
headers = {
"X-API-KEY": apiKey,
"X-SIGNATURE": signature,
"X-TIMESTAMP": timestamp
}
try:
response = requests.post(apiUrl, data=params, headers=headers)
print(response.text)
except requests.exceptions.RequestException as e:
print("Request error:", e)
成功レスポンス例
{
"status":"success",
"post_id":"0000000",
"image":""
}エラー例
| 状況 | 例 |
|---|---|
| 署名が無効 | {"error": "Invalid signature"} |
| タイムスタンプがずれている | {"error": "Timestamp is too old"} |
| APIキーが存在しない | {"error": "Invalid API key"} |
注意事項
タイムスタンプの誤差は ±5分以内である必要があります。
署名は
hex形式 を使用してください。シークレットキーは外部に漏洩しないよう厳重に管理してください。
通信は必ず HTTPS 経由で行ってください。
2026-03-31