トップページ ヘルプ 機能・サービス Rara APIを使用することで外…
機能・サービス
外部サービスから掲示板に投稿したい
Rara APIを使用することで外部サービスや独自開発のシステムから掲示板に投稿ができます。
本機能を使用には技術的な知識が必要です。

概要


本APIは、APIキーHMAC署名による認証を行います。クライアントは署名付きヘッダーを送信する必要があります。APIキーおよびシークレットキーは管理画面より発行することができます。

API情報


エンドポイントhttps://rara.jp/api/newPost
メソッドPOST
認証方式APIキー + HMAC署名(SHA-256)
返却形式JSON


認証方法


以下のヘッダーを付与してください:

X-API-KeyあなたのAPIキー
X-TimestampUNIXタイムスタンプ(秒)
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 経由で行ってください。
Post
2026-03-31
関連する記事
機能・サービス