概要
- 「API連携オプション」(有料)のお申込が必要です。
- 貴社がお使いのシステムで生成したCSVファイルを、APIを通じて「楽楽請求」のマスタに取り込むことができます。また、CSV取込の状況を確認することができます。
※API連携を行うための連携プログラム(システム構築)は「楽楽請求」外に貴社側でご用意いただく必要があります。
(サンプルプログラムはご提供可能です。)
- 取込可能なマスタ情報は、以下「API連携で取込可能なマスタ」よりご確認ください。
- HTTPヘッダに「楽楽請求」が発行するAPIトークンを埋め込むことで認証を実現します。
API連携で取込可能なマスタ
取引先設定
社員設定
役職設定
部門設定
プロジェクト設定
勘定科目設定
補助科目設定
税区分設定
汎用マスタ設定
「楽楽請求」できること
APIトークンの管理
-
APIトークンの発行
- APIのアクセス制限(アクセスを許可するIPアドレスの登録)
APIトークン
「楽楽請求」のAPIの利用時に認証用キーとして使用する文字列です。
APIトークンは、「楽楽請求」の管理者権限のみ発行できます。
APIトークンの発行
「設定」タブ>「システム設定」>「API連携設定」画面にて「生成」をクリックすることで「APIトークン」が発行されます。
※「システム設定」の操作には管理者権限が必要です。

APIトークンは生成直後のみ表示されます。
もし紛失した場合は再生成を実施ください。
APIトークンの再生成
「再生成」ボタンをクリック後に表示される「APIトークンの再生成」画面で「再生成」をクリックすることで、APIトークンが再生成されます。

※上記記載の通り再生成した場合、APIトークンは上書きされ過去生成されていたAPIトークンは利用できなくなります。
APIトークンの削除
「削除」ボタンをクリック後に表示される「APIトークンの削除」画面で「削除」をクリックすることで、APIトークンが削除され、APIが使用できない状態になります。

APIのアクセス制限
API専用の接続を許可するIPアドレスを制限することが可能です。
設定手順
-
「設定」タブ>「システム設定」>「セキュリティ設定」をクリック
-
「APIのアクセス制限」項目を「制限する」を選択
-
許可するIPアドレスを入力
-
「保存」をクリック

API基本シーケンス
リクエスト、レスポンスに関する基本シーケンスは以下の通りです。
※貴社のシステムと「楽楽請求」の間に中間サーバーが存在する場合を想定しています。
中間サーバーとは「楽楽請求」のAPIを実行するためのプログラムが配置されているサーバーを想定しています。
※中間サーバーが存在しない場合は、貴社のシステムと「楽楽請求」が直接連携することになります。

リクエスト方法
APIへのリクエストを行う際の基本的な情報は以下の通りです。
マスタインポートAPI
CSV取込予約を行うためのAPIです。
-
通信方式:HTTPS
- メソッド:POST
- 文字コード:UTF-8
- URL:https://【ドメイン】/【テナント】/api/v1/masters/import
※詳細については、別途記載されている「URL例」をご参照ください。
- ヘッダ:X-SK-apitoken: {APIトークン}
※上記のAPIトークンを含むリクエストヘッダを必ず指定してください。
※APIトークンは、別途記載されている「APIトークンの発行」をご確認ください。
■URL例
https://app.rakurakuseikyu.jp/xxxxxx/api/v1/masters/import
◆rakurakuseikyu.jp →利用するドメイン
◆xxxxxxx →利用するテナント
◆api/v1 →APIバージョンの指定
◆masters/import →API名
リクエスト
-
ヘッダ
|
ヘッダ
|
値
|
必須
|
|
X-SK-apitoken
|
{ APIトークン }
|
〇
|
|
Content-Type
|
multipart/form-data
|
〇
|
- ボディ
|
パラメータ名
|
項目名
|
型
|
必須
|
内容
|
備考
|
|
data
|
リクエスト情報
|
オブジェクト
|
〇
|
ー
|
Content-Type: application/json
|
|
type
|
マスタ種別
|
整数
|
◯
|
1:取引先
2:社員
3:部門
4:プロジェクト
5:勘定科目
6:補助科目
7:税区分
8:汎用マスタ
9:役職
|
|
|
isSkippedFirstLine
|
1行目をスキップするかどうかのフラグ
|
真偽値
|
◯
|
true: CSVの1行目をスキップして2行目から取り込む
false:CSVの1行目から取り込む
|
|
|
isSendPasswordMail
|
登録時のメール送信フラグ
|
真偽値
|
|
true: 社員登録成功時にパスワードメールを送信する
false:社員登録成功時にパスワードメールを送信しない
|
type = 2の場合は必須
|
|
customMasterSettingName
|
汎用マスタ名
|
文字列
|
|
汎用マスタ管理で登録されている"汎用マスタ名"を指定
|
type = 8の場合は必須
|
|
file
|
アップロードするファイル
|
文字列
|
◯
|
-
|
Content-Type: text/csv
|
(例)curl -i -X 'POST' \
'https://【ドメイン】/【テナント】api/v1/masters/import'\
-H 'Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryAdkAiG0rxRpZeTrW' \
-H 'X-SK-apitoken: {APIトークン}' \
--data-raw $'
------WebKitFormBoundaryAdkAiG0rxRpZeTrW
Content-Disposition: form-data; name="data"; filename="blob"
Content-Type: application/json
{
"type": 8,
"isSkippedFirstLine": true,
"customMasterName": "店舗No"
}
------WebKitFormBoundaryAdkAiG0rxRpZeTrW
Content-Disposition: form-data; name="file"; filename="custom_master_2025082.csv"
Content-Type: text/csv
....
------WebKitFormBoundaryAdkAiG0rxRpZeTrW--'
レスポンス
|
パラメータ名
|
項目名
|
型
|
必須
|
内容
|
|
masterImportJobId
|
インポート状況ID
|
整数
|
〇
|
インポート状況の確認に使用するID
|
(例)
HTTP/1.1 200
....
{
"masterImportJobId": 1
}
マスタインポート状況取得API
CSV取込の状況確認を行うためのAPIです。
リクエスト
-
ヘッダ
|
ヘッダ
|
値
|
必須
|
|
X-SK-apitoken
|
{ APIトークン }
|
〇
|
-
パスパラメータ
|
パラメータ名
|
項目名
|
型
|
必須
|
内容
|
|
masterImportJobId
|
インポート状況ID
|
整数
|
〇
|
マスタインポートAPIで取得したID
|
(例)
curl -i -X 'GET' \
https://ドメイン】/【テナント】api/v1/masters/import/1 \
-H 'X-SK-apitoken: {APIトークン}'\
レスポンス
-
ボディ
|
パラメータ名
|
項目名
|
型
|
必須
|
内容
|
備考
|
|
type
|
マスタ種別
|
整数
|
◯
|
1:取引先
2:社員
3:部門
4:プロジェクト
5:勘定科目
6:補助科目
7:税区分
8:汎用マスタ
9:役職
|
|
|
customMasterSetting
|
汎用マスタ情報
|
オブジェクト
|
|
-
|
type = 8の場合は必須
|
|
name
|
汎用マスタ名
|
文字列
|
|
汎用マスタ管理で登録されている"汎用マスタ名"を指定
|
type = 8 and isDeleted = falseの場合は必須
|
|
isDeleted
|
削除フラグ
|
真偽値
|
◯
|
true:削除済みの汎用マスタ
false:未削除の汎用マスタ
|
type = 8の場合は必須
|
|
methodType
|
インポート方法
|
整数
|
◯
|
1:画面からCSVアップロードした場合
2:APIからCSVアップロードした場合
|
|
|
status
|
ステータス
|
整数
|
◯
|
1:取込準備中
2:取込中
3:成功
4:失敗
|
|
|
startedAt
|
マスタインポートの処理を開始した日時
|
文字列
|
|
YYYY-MM-DDTHH:MM:SS
|
status = 2 or 3 or 4の場合は必須
|
|
finishedAt
|
マスタインポートの処理を終了した日時
|
文字列
|
|
YYYY-MM-DDTHH:MM:SS
|
status = 3 or 4の場合は必須
|
|
employee
|
社員
|
オブジェクト
|
|
インポートを実行した社員情報
|
methodType = 1の場合は必須
|
|
code
|
社員コード
|
文字列
|
◯
|
-
|
methodType = 1の場合は必須
|
|
name
|
社員名
|
文字列
|
◯
|
-
|
methodType = 1の場合は必須
|
|
isDeleted
|
削除フラグ
|
真偽値
|
◯
|
true:削除済みの社員
false:未削除の社員
|
methodType = 1の場合は必須
|
|
successCount
|
インポートに成功した件数
|
整数
|
|
インポートに成功した件数
|
status = 3 or 4の場合は必須
|
|
errorCount
|
インポートに失敗した件数
|
整数
|
|
インポートに失敗した件数
|
status = 3 or 4の場合は必須
|
(例)
HTTP/1.1 200
....
{
"type": 8,
"customMasterSetting": {
"name": "福岡支店"
"isDeleted": false
},
"methodType": 2,
"status": 3,
"startedAt": "2026--01-23T18:13:34",
"finishedAt":"2026--01-23T18:20:34",
"employee": {
"code": "10001",
"name": "営業太郎",
"isDeleted": false
},
"successCount": 10,
"errorCount": 0
}
マスタ削除API
-
通信方式:HTTPS
-
メソッド:POST
-
文字コード:UTF-8
- URL:https://【ドメイン】/【テナント】/api/v1/masters/delete
リクエスト
-
ヘッダ
|
ヘッダ
|
値
|
必須
|
|
X-SK-apitoken
|
{ APIトークン }
|
〇
|
|
Content-Type
|
application/json
|
〇
|
- ボディ
|
パラメータ名
|
項目名
|
型
|
必須
|
内容
|
備考
|
|
type
|
マスタ種別
|
整数
|
◯
|
1:取引先
2:社員
3:部門
4:プロジェクト
5:勘定科目
6:補助科目
7:税区分
8:汎用マスタ
9:役職
|
|
|
code
|
マスタコード
|
文字列
|
◯
|
各マスタで設定しているコードを指定
|
|
|
customMasterSettingName
|
汎用マスタ名
|
文字列
|
|
汎用マスタ管理で登録されている"汎用マスタ名"を指定
|
type = 8の場合は必須
|
(例)
curl -i -X 'POST' \
' https://【ドメイン】/【テナント】api/master/delete' \
-H 'Content-Type: application/json' \
-H 'X-SK-apitoken: vJvhs6U-4RQcXPf7YyLl_ppPgqIK8n0dB2MWCL875JJj4E-lxCUhAKVAngan7cHQ' \
-d '{
"type": 8,
"code": "0001",
"customMasterSettingName": "店舗"
}'
レスポンス
ステータスコード
レスポンスのボディ部に書かれたステータスコードから、リクエスト成功・失敗を判別することができます。
HTTPのステータスコードも同様の値を返却します。
| コード |
状態 |
詳細 |
ボディ(例) |
備考 |
| 200 |
成功 |
- |
{ "masterImportJobId ": 1 } |
|
| 400 |
通常エラー |
入力エラー等、アプリケーションが検出するエラー |
{ "errors": [ { "name": "fieldName", "msg": "エラーメッセ ージ" } ] } |
|
| 401 |
認証エラー |
認証失敗、必要な権限がない場合のエラー |
|
|
| 403 |
オプション未契約・IPアドレス制限エラー |
API機能が利用できない場合のエラー |
{"code":"FORBIDDE N_ACCESS"} |
FORBIDDEN_ ACCESS: オプション未契約
FORBIDDEN_ POLICY: IPアドレス制限エラー |
| 404 |
対象URIなし |
URIの指定が間違っている場合のエラー |
|
|
| 405 |
対応していないメソッド |
対応していないHTTPメソッドでリクエストされた場合のエラー |
|
|
| 406 |
対応していないヘッダ |
Acceptヘッダの値がレスポンス形式と一致しない場合のエラー |
|
|
| 415 |
対応していないファイルタイプ |
対応していないファイルタイプでリクエストされた場合のエラー |
|
|
| 409 |
リソースの競合 |
複数のユーザーが同時に操作した場合のエラー |
|
|
| 429 |
リクエスト回数超過 |
最大アクセス数を超える回数のリクエストが送信された場合のエラー |
|
|
| 500 |
内部エラー |
予期しないエラー ※問い合わせ |
|
|
| 503 |
メンテナンス中 |
「楽楽請求」のメンテナンス中に返すエラー |
|
|
レスポンス
|
ヘッダ
|
値
|
|
Content-Type
|
application/json
JSON以外の場合は、ファイル形式に準じた値
|
|
X-Content-Type-Options
|
nosniff
|
|
Cache-Control
|
private, no-store, no-cache, must-revalidate
|
|
Pragma
|
no-cache
|
|
X-XSS-Protection
|
1; mode=block
|
|
X-Frame-Options
|
deny
|
|
Strict-Transport-Security
|
max-age=31536000; includeSubDomains
|
|
Content-Security-Policy
|
default-src 'none'
|
|
X-Content-Security-Policy
|
default-src 'none'
|
|
X-WebKit-CSP
|
default-src 'none'
|
|
content-disposition
|
ファイルに準じた値
inline; filename*=UTF-8''〇〇.csv
|
|
connection
|
keep-alive
|
|
content-length
|
ex) 100
|
|
Date
|
ex) Thu, 22 Jan 2026 06:32:53 GMT
|
|
content-encoding
|
gzip
|
|
vary
|
accept-encoding
|
|
transfer-encoding
|
chunked
|
サービスメンテナンス時の注意点
サービス停止ありのメンテナンス中はAPI実行をすることはできません。
メンテナンス終了後に実行をお願いいたします。
なお、メンテナンス時間は
サービス稼働状況に掲載しております。
サービス停止なしのメンテナンス中はAPIの実行が可能です。
サンプルプログラム
サンプルプログラムに関しては、サンプルソースを別途用意しております。
ご希望のお客様は以下フォームよりお問い合わせください。
(記事ID:6011)