Domain API Reference

シンクラウド ドメインAPI リファレンス

シン ドメインAPI は、シンドメインで提供しているドメイン管理機能(ネームサーバー・DNSレコード・Whois情報・レジストラロック)およびドメインの取得・移管・更新を REST API で利用するためのインターフェースです。

API の変更履歴は 更新履歴 を参照してください。

項目
ベースURLhttps://api.shin-server.jp
ベースパス/v1/domain
対象サービスシンドメイン
プロトコルHTTPS
レスポンス形式JSON
OpenAPI仕様openapi.json

認証

すべてのリクエストで Authorization ヘッダーに Bearer トークン(APIキー)を付与してください。

リクエストヘッダー
Authorization: Bearer xs_xxxxxxxxxxxx...

APIキーはシンクラウドアカウント(契約管理画面)の「APIキー管理」から発行できます。ドメイン用のAPIキーはユーザー単位で発行されます。

操作対象(対象ドメイン)

ドメイン用のAPIキーは、発行時に「すべてのドメイン」または「指定ドメインのみ」から操作範囲を選択できます。「指定ドメインのみ」のキーでは、キーが許可されたドメインに対してのみ操作でき、範囲外のドメインを指定しても操作できません。詳細は操作対象のドメインを参照してください。

権限(スコープ)

APIキー発行時に設定する権限によって、利用可能なAPIが異なります。各エンドポイントに表示されている必要な権限を確認してください。

APIキーの権限利用可能なAPI
すべての操作読み取り + 書き込み のすべてのAPI
読み取り専用読み取り のAPIのみ
カスタム個別に選択した権限に応じたAPI

カスタム権限では、以下のカテゴリごとに読み取り・書き込みを個別に設定できます。

カテゴリ対象API
ドメイン情報ドメイン一覧・詳細の取得
ネームサーバーネームサーバーの取得・変更
DNSDNSレコードの取得・追加・変更・削除
WhoisWhois情報の取得・変更
レジストラロックレジストラロックの取得・変更

取得可能性・価格の確認、およびドメインの取得・移管・契約更新APIのご利用には、APIキー発行時に「このキーでドメインの新規取得・移管・更新(お申し込み)を許可する」チェックボックスにチェックを入れる必要があります。この許可は、上記のカスタム権限カテゴリとは別に設定されます。

チェックボックスを選択するには、Whois初期値設定の登録とプリペイド残高のご入金が必要です。また、権限が「読み取り専用」のキーでは、許可を有効にしてもドメインの取得・移管・契約更新は実行できません(取得可能性・価格の確認のみ利用できます)。

レート制限

レスポンスヘッダーでレート制限情報が返されます。

レスポンスヘッダー
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 45
X-RateLimit-Reset: 1709654400
X-RateLimit-Concurrent-Limit: 5
X-RateLimit-Concurrent-Remaining: 4

制限超過時は HTTP 429 と Retry-After ヘッダー(待機すべき秒数を整数で返却)が返されます。同時リクエスト数が上限を超えた場合も HTTP 429 が返されます。

また、認証失敗が短時間に連続した場合はIPアドレス単位で一時的にブロックされ、認証照合前に HTTP 429 が返されます。APIキーや認証ヘッダーの設定を確認してから再試行してください。

ドメインAPIのレート制限はユーザー単位で適用されます。同じユーザーが複数のAPIキーを発行しても、合算値で制限がかかります。

対象リクエスト/分リクエスト/日同時接続数
全ユーザー共通6010,0005

HTTPステータスコード

成功時

リクエストが正常に処理された場合、以下のステータスコードが返されます。

ステータス意味対象
200OKすべてのリクエスト(GET / POST / PUT / DELETE)。ドメインの取得・移管申請・契約更新も同期処理され、200 で結果を返します(「取得・移管・更新の結果確認」参照)

成功時のレスポンスボディは各エンドポイントのレスポンス例を参照してください。

エラーハンドリング

エラー時は以下の形式のJSONが返されます。

エラーレスポンス
{
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "入力値が正しくありません",
    "errors": [
      "エラーメッセージ1",
      "エラーメッセージ2"
    ]
  }
}

エラー時のHTTPステータスコード

ステータス意味説明
400Bad Requestリクエストが不正
401Unauthorized認証エラー(APIキーが無効・期限切れ)
402Payment Requiredプリペイド残高が不足している(取得・移管・更新API)
403Forbidden権限不足(スコープ不足・操作範囲外のドメイン・IP制限等)
404Not Foundリソースまたはエンドポイントが見つからない
405Method Not Allowed対応していないHTTPメソッドを指定した
409Conflictドメイン側の制約により操作を完了できなかった
422Unprocessable Entityバリデーションエラー
429Too Many Requestsレート制限超過
500Internal Server Errorサーバー内部エラー
502Bad Gatewayバックエンドとの通信でエラーが発生
503Service Unavailableレジストラ側のシステムが一時的に利用できない

エラーコード一覧

レスポンスの error.code には以下のいずれかの値が入ります(コードはすべて大文字の文字列で返されます)。

コードHTTP説明
BAD_REQUEST400リクエストの形式が不正(JSONのパースエラーなど)
UNAUTHORIZED401APIキーが未指定・無効・期限切れ
FORBIDDEN403APIキーの権限不足、操作範囲外のドメインへの操作、またはIP制限
NOT_FOUND404エンドポイントまたは対象リソースが見つからない場合の汎用コード
METHOD_NOT_ALLOWED405エンドポイントが対応していないHTTPメソッドを指定した
VALIDATION_ERROR422入力値のバリデーションエラー。errors 配列にメッセージが含まれます
DOMAIN_NOT_FOUND404指定したドメインが存在しない、または操作対象外
RECORD_NOT_FOUND404指定したDNSレコードが存在しない
USER_NOT_FOUND404APIキーに紐づくユーザー情報を取得できない
DOMAIN_NOT_ACTIVE409対象ドメインが有効な状態ではないため、操作を実行できない
MIGRATION_LOCKED409サービス統合等に伴う一時的な編集制限中のため、操作を実行できない
WHOIS_NOT_EDITABLE409対象ドメインはWhois情報の編集に対応していない(属性型JPドメイン等)
MAIL_VALIDATION_REQUIRED409メールアドレス有効性確認が未完了のため、Whois情報を変更できない
UNLOCK_BLOCKED409レジストラロックの解除には対象ドメインの解約申請が必要
PAYMENT_REQUIRED402プリペイド残高が不足している(取得・移管・更新API)。契約管理画面から入金のうえ再実行してください
PRICE_MISMATCH422expected_total_price が現在の価格と一致しない(取得・移管・更新API)。取得可能確認APIで最新の価格を取得して再実行してください
EXPIRY_MISMATCH409current_expiry_date が現在の有効期限と一致しない(契約更新API・二重更新の防止)。ドメイン詳細取得APIで最新の有効期限を確認して再実行してください
DUPLICATE_REQUEST409同じ Idempotency-Key のリクエストを処理中。先行リクエストの結果確定後に同じキーで再送すると、保存済みの同一レスポンスが返ります。4xx エラーで失敗した場合は同じキーのまま再送できます。5xx・502 で失敗した場合は、同じキーでの再送は48時間このコードになります
DUPLICATE_OPERATION409対象ドメインに進行中の手続き(取得・移管・更新等)があります。進行中の手続きが完了してから再実行してください
DOMAIN_CONFLICT409ドメインの契約状態を特定できない。サポートまでお問い合わせください
PREMIUM_NOT_SUPPORTED422プレミアムドメインはAPIから取得できない
UNSUPPORTED_TLD_FOR_API422指定したTLDは対象操作のAPIに対応していません。JPドメイン・属性型JPドメインはAPIから移管できません
CREDIT_CARD_REQUIRED422初回限定の0円キャンペーンを利用するには、会員管理画面でクレジットカードを登録する必要があります。
FREE_CAMPAIGN_NOT_AVAILABLE422初回限定の0円キャンペーンの利用条件を満たしていません。会員管理画面から通常価格でお申し込みください。
REGISTRAR_REJECTED409レジストラが要求を受け付けなかった(登録内容や指定値がレジストラ側の条件を満たしていない等)。同じ内容で再試行しても結果は変わりません。message の内容をご確認のうえ、内容を見直して再実行してください
REGISTRAR_ERROR500レジストラ側の処理でエラーが発生(レジストラに到達できない・応答が不正など)。時間をおいて再試行してください
REGISTRAR_UNAVAILABLE503レジストラ側のシステムを一時的に利用できない。時間をおいて再試行してください
RATE_LIMIT_EXCEEDED429分あたり・日あたりのリクエスト上限を超過。Retry-After ヘッダーで待機秒数を確認できます
INTERNAL_ERROR500API内部で予期しないエラーが発生
BACKEND_ERROR502バックエンドとの通信・応答処理でエラーが発生。時間をおいて再試行してください
OPERATION_ERROR状況による上記に分類されないエラーのフォールバック(通常は返りません)

共通仕様

ドメイン名(domain_name)について

APIのURLパスに含まれる {domain_name} には、対象ドメインのドメイン名を指定してください。

日本語ドメイン(国際化ドメイン名)は Punycode に変換して指定します(例: 日本語.jpxn--wgv71a119e.jp)。レスポンスのドメイン名も Punycode 表記で返され、日本語ドメインの場合は decoded_domain フィールドに復号名が含まれます。

リクエスト例
GET /v1/domain/example.com/nameservers

操作対象のドメイン

APIキーを発行したユーザーが保有している契約ドメインが操作対象です。他のユーザーが保有するドメインは、ドメイン名を指定しても操作できません(404 が返されます)。DNSレコード設定のみ、外部ドメイン連携でDNS編集可能な状態のドメインも対象になります。

APIキーの操作範囲が「指定ドメインのみ」の場合は、許可されたドメインだけが操作対象です。ドメイン一覧(GET /v1/domain)も許可されたドメインのみを返します。範囲外のドメインを指定した場合は 403 が返されます。ドメインの取得(POST /v1/domain)は「すべてのドメイン」のキーでのみ利用できます。

取得可能性の確認(GET /v1/domain/check)と料金の確認(GET /v1/domain/pricing)は、特定のご契約に依存しない情報のため、操作範囲の制限を受けません。

DNSレコード設定の対象

DNSレコード設定APIは、当社ネームサーバーを利用している契約ドメイン、または外部ドメイン連携でDNS編集可能な状態のドメインが対象です。他社ネームサーバーを利用している場合、レコードを変更しても名前解決には反映されません。

ネームサーバーの設定が必要です: 取得直後のドメインは当社のドメイン用ネームサーバー(ns1.xdomain.ne.jpns3.xdomain.ne.jp)に向いていない場合があり、その状態では本APIで設定したDNSレコードは名前解決に反映されません。ネームサーバー設定API(PUT /v1/domain/{domain_name}/nameservers)で当社ドメイン用ネームサーバーへ変更してください。

日時について

APIのレスポンスに含まれる日時はすべて日本時間(JST)で、タイムゾーン表記は付きません。

取得・移管・更新の結果確認

ドメインの取得・移管・契約更新は、リクエスト内で同期的に処理され、200 OK とともにレスポンスボディの domain に結果が返ります。ポーリング用のエンドポイントはありません。

取得(新規登録)

通常は domain.statusactive で返り、その時点で取得は完了しています。レジストラ側の処理が保留された場合は、statuspending_create のまま 200 が返ります。この場合も申込は受け付けられており、通常は自動で解消されます(解消されない場合はサポートまでお問い合わせください)。その後の状態は ドメイン詳細取得APIstatus で確認できます。

契約更新

更新の成否は、レスポンスの domain.renewedtrue で更新完了)と、expiry_dateprevious_expiry_date から延長されていることで判定してください。

移管

移管はレジストリ側の承認を伴うため、申請が受け付けられた後も完了までに時間がかかります。申請に成功すると domain.statustransferring で返り、以降の進行は ドメイン詳細取得APIstatus で確認します(完了で active、失敗すると transfer_action_required)。

補足

  • 同一ドメインで同時に進行できる手続きは1つです。進行中に新しい申込を行うと 409 DUPLICATE_OPERATION になります。
  • 課金を伴うAPIは、dry_run=true の場合を除き Idempotency-Key ヘッダーが必須です。8〜64文字の英数字・ハイフン・アンダースコアで指定してください(UUID推奨)。同じキー・同じ内容で48時間以内に再送した場合は二重課金されず、初回と同じレスポンスが返ります。
  • 同じ Idempotency-Key で内容の異なるリクエストを送信した場合は、422 VALIDATION_ERROR が返ります。
  • 4xx エラー(残高不足・価格不一致等)で失敗した場合は課金前に失敗しているため、同じキーのまま内容を修正して再送できます。5xx・502 で失敗した場合は処理結果が確定していない可能性があるため、同じキーでの再送は48時間 409 DUPLICATE_REQUEST になります。まずドメイン詳細取得と請求履歴で状態を確認し、未実行を確認できた場合のみ新しいキーで再申請してください。

APIキー情報

GET /v1/me 読み取り

認証中のAPIキー情報を取得

現在認証に使用しているAPIキーの情報を返します。有効期限・サービス種別を確認できます。

すべてのサービス(サーバー / ドメイン / XServer for WordPress)で共通のエンドポイントです。APIキーの疎通確認や、鍵の有効期限が切れていないかの確認に利用できます。

リクエスト例

cURL
curl \
  "https://api.shin-server.jp/v1/me" \
  -H "Authorization: Bearer YOUR_API_KEY"

レスポンスフィールド

名前説明
service_type string APIキーのサービス種別。ドメイン用のキーでは domain
expires_at string|null 有効期限。無期限の場合は null

レスポンス例

200 OK
{
  "service_type": "domain",
  "expires_at": "2027-04-16 00:00:00"
}

ドメイン情報

GET /v1/domain 読み取り

ドメイン一覧を取得

APIキーで操作できるドメインの一覧を返します。取得申込の処理中(pending_create)や移管中(transferring)のドメインも含まれます。解約済みの契約は含まれず、同じドメイン名の契約が複数ある場合は代表1件に集約して返します。

ドメイン用のAPIキーはユーザー単位で発行されます。操作範囲が「すべてのドメイン」のキーではユーザーが保有する全ドメイン、「指定ドメインのみ」のキーでは許可されたドメインだけを返します。

現在は全件を返します。将来ページングパラメータを追加する場合も、パラメータ未指定時の挙動(全件返却)は変更しません。

リクエスト例

cURL
curl \
  "https://api.shin-server.jp/v1/domain" \
  -H "Authorization: Bearer YOUR_API_KEY"

レスポンスフィールド

名前説明
domains[].domain_name string ドメイン名(Punycode表記)
domains[].expiry_date string|null 有効期限(YYYY-MM-DD)。取得申込の処理中など有効期限が未確定の場合は null
domains[].status string ドメインの状態
  • active有効
  • expired失効
  • transferring移管申請中
  • transfer_action_required移管失敗・再申請待ち
  • pending_create取得申込の処理中
domains[].decoded_domain string|null 日本語ドメインの復号名。日本語ドメイン以外は null

レスポンス例

200 OK
{
  "domains": [
    {
      "domain_name": "example.com",
      "expiry_date": "2026-12-31",
      "status": "active",
      "decoded_domain": null
    },
    {
      "domain_name": "xn--wgv71a119e.jp",
      "expiry_date": "2027-03-31",
      "status": "active",
      "decoded_domain": "日本語.jp"
    }
  ]
}
GET /v1/domain/{domain_name} 読み取り

ドメイン詳細を取得

指定したドメインの詳細情報を返します。取得申込の処理中は status が pending_create、移管の進行中は transferring になります(「取得・移管・更新の結果確認」参照)。

パスパラメータ

名前説明
domain_nameドメイン名(Punycode表記)

リクエスト例

cURL
curl \
  "https://api.shin-server.jp/v1/domain/{domain_name}" \
  -H "Authorization: Bearer YOUR_API_KEY"

レスポンスフィールド

名前説明
domain_name string ドメイン名(Punycode表記)
expiry_date string|null 有効期限(YYYY-MM-DD)。取得申込の処理中など有効期限が未確定の場合は null
status string ドメインの状態
  • active有効
  • expired失効
  • transferring移管申請中
  • transfer_action_required移管失敗・再申請待ち
  • pending_create取得申込の処理中
auto_renew boolean 自動更新設定の有無
epp_statuses string[] 当社側で把握しているEPPステータス
  • pendingCreate登録処理中
  • pendingTransfer移管処理中
  • clientTransferProhibitedレジストラロック中
  • redemptionPeriod失効後の復旧可能期間。レジストリへのリアルタイム照会は行っていないため、レジストリ側でのみ確定する状態(clientHold 等)は含まれません
decoded_domain string 日本語ドメインの復号名(日本語ドメインの場合のみ含まれる)

レスポンス例

200 OK
{
  "domain_name": "example.com",
  "expiry_date": "2026-12-31",
  "status": "active",
  "auto_renew": true,
  "epp_statuses": []
}

ネームサーバー設定

GET /v1/domain/{domain_name}/nameservers 読み取り

ネームサーバーを取得

有効(active)なドメインに設定されているネームサーバーの一覧を返します。

パスパラメータ

名前説明
domain_nameドメイン名(Punycode表記)

リクエスト例

cURL
curl \
  "https://api.shin-server.jp/v1/domain/{domain_name}/nameservers" \
  -H "Authorization: Bearer YOUR_API_KEY"

レスポンスフィールド

名前説明
nameservers string[] ネームサーバーの配列

レスポンス例

200 OK
{
  "nameservers": ["ns1.example.jp", "ns2.example.jp"]
}
PUT /v1/domain/{domain_name}/nameservers 書き込み

ネームサーバーを変更

ドメインのネームサーバーを、送信した内容で全件置き換えます。現在の設定への追加ではないため、設定したいネームサーバーをすべて指定してください。

パスパラメータ

名前説明
domain_nameドメイン名(Punycode表記)

リクエストボディ

名前必須説明
nameservers string[] 必須 ネームサーバーの配列(1〜13件、各253文字以内)。ホスト名で指定し、同じ値は重複指定できません

リクエスト例

cURL
curl \
  -X PUT \
  "https://api.shin-server.jp/v1/domain/{domain_name}/nameservers" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "nameservers": [
        "ns1.example.jp",
        "ns2.example.jp"
    ]
}'

レスポンスフィールド

名前説明
nameservers string[] 変更後のネームサーバーの配列
message string 処理結果メッセージ

レスポンス例

200 OK
{
  "nameservers": ["ns1.example.jp", "ns2.example.jp"],
  "message": "ネームサーバーを変更しました"
}

DNSレコード設定

GET /v1/domain/{domain_name}/dns 読み取り

DNSレコード一覧を取得

ドメインのDNSレコードを一覧で返します。対応レコードタイプは A / AAAA / CNAME / MX / TXT / NS / SRV です(SOAレコードは取得・編集の対象外)。当社ネームサーバーを利用しているドメインが対象です。

ネームサーバーの設定が必要です: 取得直後のドメインは当社のドメイン用ネームサーバー(ns1.xdomain.ne.jp 〜 ns3.xdomain.ne.jp)に向いていない場合があり、その状態では本APIで設定したDNSレコードは名前解決に反映されません。ネームサーバー設定API(PUT /v1/domain/{domain_name}/nameservers)で当社ドメイン用ネームサーバーへ変更してください。

パスパラメータ

名前説明
domain_nameドメイン名(Punycode表記)

リクエスト例

cURL
curl \
  "https://api.shin-server.jp/v1/domain/{domain_name}/dns" \
  -H "Authorization: Bearer YOUR_API_KEY"

レスポンスフィールド

名前説明
records[].id integer レコードID(更新・削除で使用)
records[].type string レコードタイプAAAAACNAMEMXTXTNSSRV
records[].host string ホスト名(@ は apex)
records[].content string レコードの内容(IPアドレス・ホスト名・テキスト等)
records[].ttl integer TTL(秒)
records[].priority integer 優先度(MX / SRV で使用。それ以外は 0)

レスポンス例

200 OK
{
  "records": [
    {
      "id": 1,
      "type": "A",
      "host": "www",
      "content": "192.0.2.1",
      "ttl": 3600,
      "priority": 0
    }
  ]
}
POST /v1/domain/{domain_name}/dns 書き込み

DNSレコードを追加

ドメインにDNSレコードを追加します。レスポンスの id は後続の更新・削除で使用します。

ネームサーバーの設定が必要です: 取得直後のドメインは当社のドメイン用ネームサーバー(ns1.xdomain.ne.jp 〜 ns3.xdomain.ne.jp)に向いていない場合があり、その状態では本APIで設定したDNSレコードは名前解決に反映されません。ネームサーバー設定API(PUT /v1/domain/{domain_name}/nameservers)で当社ドメイン用ネームサーバーへ変更してください。

パスパラメータ

名前説明
domain_nameドメイン名(Punycode表記)

リクエストボディ

名前必須説明
type string 必須 レコードタイプAAAAACNAMEMXTXTNSSRV
host string 必須 ホスト名(@ で apex、最大64文字)
content string 必須 レコードの内容(最大1024文字)
ttl integer 任意 TTL(秒)。60〜86400。省略時は 3600
priority integer 任意 優先度0〜999。MXSRV で使用(省略時は 0)。それ以外のレコードタイプでは 0 になります

リクエスト例

cURL
curl \
  -X POST \
  "https://api.shin-server.jp/v1/domain/{domain_name}/dns" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "A",
    "host": "www",
    "content": "192.0.2.1",
    "ttl": 3600,
    "priority": 0
}'

レスポンスフィールド

名前説明
id integer 追加されたDNSレコードのID(更新・削除で使用)
type string レコードタイプ
host string ホスト名
content string レコードの内容
ttl integer TTL(秒)
priority integer 優先度
message string 処理結果メッセージ

レスポンス例

200 OK
{
  "id": 1,
  "type": "A",
  "host": "www",
  "content": "192.0.2.1",
  "ttl": 3600,
  "priority": 0,
  "message": "DNSレコードを追加しました"
}
PUT /v1/domain/{domain_name}/dns/{dns_id} 書き込み

DNSレコードを変更

既存のDNSレコードを変更します。送信した項目のみ更新され、省略した項目は現在の設定が維持されます。存在しないDNSレコードID、または他のユーザーのDNSレコードIDを指定した場合は 404(RECORD_NOT_FOUND)になります。

ネームサーバーの設定が必要です: 取得直後のドメインは当社のドメイン用ネームサーバー(ns1.xdomain.ne.jp 〜 ns3.xdomain.ne.jp)に向いていない場合があり、その状態では本APIで設定したDNSレコードは名前解決に反映されません。ネームサーバー設定API(PUT /v1/domain/{domain_name}/nameservers)で当社ドメイン用ネームサーバーへ変更してください。

パスパラメータ

名前説明
domain_nameドメイン名(Punycode表記)
dns_idDNSレコードID

リクエストボディ

名前必須説明
type string 任意 レコードタイプAAAAACNAMEMXTXTNSSRV
host string 任意 ホスト名(@ で apex、最大64文字)
content string 任意 レコードの内容(最大1024文字)
ttl integer 任意 TTL(秒)。60〜86400
priority integer 任意 優先度0〜999。MXSRV 以外のレコードタイプでは 0 になります

リクエスト例

cURL
curl \
  -X PUT \
  "https://api.shin-server.jp/v1/domain/{domain_name}/dns/{dns_id}" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "A",
    "host": "www",
    "content": "192.0.2.2",
    "ttl": 3600,
    "priority": 0
}'

レスポンスフィールド

名前説明
id integer DNSレコードID
type string レコードタイプ
host string ホスト名
content string レコードの内容
ttl integer TTL(秒)
priority integer 優先度
message string 処理結果メッセージ

レスポンス例

200 OK
{
  "id": 1,
  "type": "A",
  "host": "www",
  "content": "192.0.2.2",
  "ttl": 3600,
  "priority": 0,
  "message": "DNSレコードを更新しました"
}
DELETE /v1/domain/{domain_name}/dns/{dns_id} 書き込み

DNSレコードを削除

指定したDNSレコードを削除します。存在しないDNSレコードID、または他のユーザーのDNSレコードIDを指定した場合は 404(RECORD_NOT_FOUND)になります。

ネームサーバーの設定が必要です: 取得直後のドメインは当社のドメイン用ネームサーバー(ns1.xdomain.ne.jp 〜 ns3.xdomain.ne.jp)に向いていない場合があり、その状態では本APIで設定したDNSレコードは名前解決に反映されません。ネームサーバー設定API(PUT /v1/domain/{domain_name}/nameservers)で当社ドメイン用ネームサーバーへ変更してください。

パスパラメータ

名前説明
domain_nameドメイン名(Punycode表記)
dns_idDNSレコードID

リクエスト例

cURL
curl \
  -X DELETE \
  "https://api.shin-server.jp/v1/domain/{domain_name}/dns/{dns_id}" \
  -H "Authorization: Bearer YOUR_API_KEY"

レスポンスフィールド

名前説明
message string 処理結果メッセージ

レスポンス例

200 OK
{
  "message": "DNSレコードを削除しました"
}

Whois情報設定

GET /v1/domain/{domain_name}/whois 読み取り

Whois情報を取得

有効(active)かつWhois編集に対応しているドメインのWhois登録情報と代理公開設定を返します。属性型JPドメイン(co.jp 等)は対象外です。

パスパラメータ

名前説明
domain_nameドメイン名(Punycode表記)

リクエスト例

cURL
curl \
  "https://api.shin-server.jp/v1/domain/{domain_name}/whois" \
  -H "Authorization: Bearer YOUR_API_KEY"

レスポンスフィールド

名前説明
domain_name string ドメイン名
whois_privacy boolean 代理公開設定
  • true代理公開ON
  • false代理公開OFF
is_whois_privacy_available boolean 代理公開を利用できるか(TLDにより異なる)
locked_by_migration boolean 当社レジストラ切替に伴う一時制限中かどうか。true の間は Whois 変更・レジストラロック変更が MIGRATION_LOCKED(409)で拒否されます(期間終了後に自動解除)
fields.organization_name string 組織名
fields.first_name string
fields.last_name string
fields.postal_code string 郵便番号
fields.state_province string 都道府県
fields.city string 市区町村
fields.address1 string 住所1
fields.address2 string 住所2
fields.email string メールアドレス
fields.phone string 電話番号(例: +81.9012345678)
fields.fax string FAX番号
fields.country string 国コード(例: JP)
fields.role string 担当区分
mail_validation_required boolean 現在の登録情報についてメールアドレス有効性確認が必要な状態か。true の場合、確認が完了するまでAPIからのWhois情報変更はできません。false は代理公開OFFへの変更可否を保証する値ではありません

レスポンス例

200 OK
{
  "domain_name": "example.com",
  "whois_privacy": false,
  "is_whois_privacy_available": true,
  "locked_by_migration": false,
  "fields": {
    "organization_name": "",
    "first_name": "Taro",
    "last_name": "Yamada",
    "postal_code": "1000001",
    "state_province": "Tokyo",
    "city": "Chiyoda",
    "address1": "1-1-1",
    "address2": "",
    "email": "admin@example.com",
    "phone": "+81.9012345678",
    "fax": "",
    "country": "JP",
    "role": ""
  },
  "mail_validation_required": false
}
PUT /v1/domain/{domain_name}/whois 書き込み

Whois情報を変更

ドメインのWhois登録情報と代理公開設定を変更します。

fields と whois_privacy の少なくとも一方を指定してください。省略した項目は現在値を維持し、両方を省略すると 422 になります。

代理公開ONでは fields に空のオブジェクトを指定できます。代理公開OFFでは、fields に13キーすべてを含めてください。9項目は値必須(空文字不可)、4項目は値任意(空文字可)です。

メールアドレス有効性確認が未完了のドメイン、および属性型JPドメイン(co.jp 等)は、APIからの変更に対応していません。

レジストラが登録内容を受け付けなかった場合は 409(REGISTRAR_REJECTED)を返します。同じ内容で再試行しても結果は変わらないため、message の内容をご確認のうえ、指定値を見直して再実行してください。レジストラに到達できない場合は 500(REGISTRAR_ERROR)となり、こちらは時間をおいての再試行で回復する可能性があります。

パスパラメータ

名前説明
domain_nameドメイン名(Punycode表記)

リクエストボディ

名前必須説明
whois_privacy boolean 任意 代理公開設定
  • true代理公開ON
  • false代理公開OFF。省略時は現在の設定を維持します
fields object 任意 Whois登録情報のオブジェクト。省略時は現在値を維持します。代理公開ONでは空のオブジェクトを指定できます。代理公開OFFでは13キーすべてが必要です。9項目は値必須(空文字不可)、4項目は値任意(空文字可)です
fields.organization_name string 任意 組織名。代理公開OFFでfields指定時はキー必須、空文字可
fields.first_name string 任意 名(英字)。代理公開OFFでfields指定時はキー・値必須
fields.last_name string 任意 姓(英字)。代理公開OFFでfields指定時はキー・値必須
fields.postal_code string 任意 郵便番号。代理公開OFFでfields指定時はキー・値必須
fields.state_province string 任意 都道府県(英字)。代理公開OFFでfields指定時はキー・値必須
fields.city string 任意 市区町村(英字)。代理公開OFFでfields指定時はキー・値必須
fields.address1 string 任意 住所1(英字)。代理公開OFFでfields指定時はキー・値必須
fields.address2 string 任意 住所2(英字)。代理公開OFFでfields指定時はキー必須、空文字可
fields.email string 任意 メールアドレス。代理公開OFFでfields指定時はキー・値必須
fields.phone string 任意 電話番号(例: +81.9012345678)。代理公開OFFでfields指定時はキー・値必須
fields.fax string 任意 FAX番号。代理公開OFFでfields指定時はキー必須、空文字可
fields.country string 任意 国コード(例: JP)。代理公開OFFでfields指定時はキー・値必須
fields.role string 任意 担当区分。代理公開OFFでfields指定時はキー必須、空文字可

リクエスト例

cURL
curl \
  -X PUT \
  "https://api.shin-server.jp/v1/domain/{domain_name}/whois" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "whois_privacy": true,
    "fields": {

    }
}'

レスポンスフィールド

名前説明
message string 処理結果メッセージ

レスポンス例

200 OK
{
  "message": "Whois情報を保存しました。"
}

レジストラロック設定

GET /v1/domain/{domain_name}/registrar-lock 読み取り

レジストラロック状態を取得

レジストラロックに対応している有効(active)なドメインの移管ロック状態を返します。ロックが有効な間は他社への移管申請が承認されません。

他社への移管に必要な認証鍵(AuthCode)の取得は、APIでは提供していません。契約管理画面のドメインパネル「別サービスに移管」から取得してください。

パスパラメータ

名前説明
domain_nameドメイン名(Punycode表記)

リクエスト例

cURL
curl \
  "https://api.shin-server.jp/v1/domain/{domain_name}/registrar-lock" \
  -H "Authorization: Bearer YOUR_API_KEY"

レスポンスフィールド

名前説明
domain_name string ドメイン名
locked boolean レジストラロックが有効か
locked_by_migration boolean 当社レジストラ切替に伴う一時制限中かどうか。true の間はレジストラロック変更・Whois情報変更が MIGRATION_LOCKED(409)で拒否されます(期間終了後に自動解除)
unlock_blocked boolean true の場合、ロック解除には対象ドメインの解約申請が必要です(解除リクエストは UNLOCK_BLOCKED(409)になります)
warn_on_lock boolean true の場合、現在は解除中ですが、一度レジストラロックを設定するとドメイン解約時まで解除できません。設定前に画面と同じ注意を表示するためのフラグです

レスポンス例

200 OK
{
  "domain_name": "example.com",
  "locked": true,
  "locked_by_migration": false,
  "unlock_blocked": false,
  "warn_on_lock": false
}
PUT /v1/domain/{domain_name}/registrar-lock 書き込み

レジストラロックを変更

レジストラロックに対応している有効(active)なドメインの移管ロックを設定・解除します。契約種別によっては、解除前に対象ドメインの解約申請が必要です。上位レジストラの変更期間中は操作できません。

パスパラメータ

名前説明
domain_nameドメイン名(Punycode表記)

リクエストボディ

名前必須説明
locked boolean 必須 true: ロックを設定 / false: ロックを解除

リクエスト例

cURL
curl \
  -X PUT \
  "https://api.shin-server.jp/v1/domain/{domain_name}/registrar-lock" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "locked": true
}'

レスポンスフィールド

名前説明
locked boolean 変更後のロック状態
message string 処理結果メッセージ

レスポンス例

200 OK
{
  "locked": true,
  "message": "レジストラロックを設定しました"
}

取得可能性・価格

GET /v1/domain/check 読み取り

取得可能かを確認(空き確認+見積)

ドメインが取得可能かどうかと、取得・更新・移管の価格(税込・キャンペーン適用後)を返します。

各APIの expected_total_price には、取得・更新では価格に対象年数を掛けた合計金額、移管では transfer の金額を指定します。

取得できない場合は available が false になり、理由は reason と reason_message で確認できます。prices は、形式不正・取扱対象外TLD等で価格を判定できない場合に null になります。登録済み(reason: registered)の場合は、移管の見積等に利用できる参考価格を返します。プレミアムドメインはAPIから取得できないため、reason に premium が入ります。

クエリパラメータ

名前必須説明
domain_name string 必須 確認するドメイン名(最大255文字)。日本語ドメインは Punycode(xn-- 形式)で指定してください。日本語のまま指定した場合は形式不正(reason: invalid_name)になります

リクエスト例

cURL
curl \
  "https://api.shin-server.jp/v1/domain/check?domain_name=VALUE" \
  -H "Authorization: Bearer YOUR_API_KEY"

レスポンスフィールド

名前説明
domain_name string ドメイン名(Punycode表記)
available boolean 取得可能か
reason string|null 取得できない理由
  • registered登録済み
  • unsupported_tld未対応TLD
  • invalid_name形式不正
  • external_conflict外部連携ドメインとして利用中
  • premiumプレミアムドメイン
reason_message string 取得できない理由の詳細(available が false の場合のみ)
premium boolean プレミアム判定の互換フィールド(現行は false)。プレミアムドメインが取得対象外の場合は reason に premium が入ります
prices object|null 取得・更新・移管価格。形式不正・取扱対象外TLD等で価格を判定できない場合は null。登録済み(reason: registered)の場合は、移管の見積等に利用できる参考価格を返します
prices.register integer 取得価格(初年度・税込・円)
prices.renew integer|null 更新価格(1年あたり・税込・円)。価格を取得できない場合は null
prices.transfer integer|null 移管価格(税込・円)。移管API対象外のTLDは null
prices.currency string 通貨(JPY)
prices.campaign_applied boolean キャンペーン価格が適用されているか

レスポンス例

200 OK
{
  "domain_name": "example.com",
  "available": true,
  "reason": null,
  "premium": false,
  "prices": {
    "register": 1602,
    "renew": 1602,
    "transfer": 1602,
    "currency": "JPY",
    "campaign_applied": false
  }
}
GET /v1/domain/pricing 読み取り

TLD別価格一覧を取得

ドメイン取得APIに対応しているTLDごとの取得・更新・移管価格(税込)を一覧で返します。

対応TLDは300件を超えるため、必要なTLDだけを取得したい場合は tld パラメータで絞り込んでください。

クエリパラメータ

名前必須説明
tld 任意 取得するTLDを指定します。カンマ区切りで複数指定できます(例: com,net,jp)。先頭のドットは省略可。未指定の場合は全TLDを返します

リクエスト例

cURL
curl \
  "https://api.shin-server.jp/v1/domain/pricing" \
  -H "Authorization: Bearer YOUR_API_KEY"

レスポンスフィールド

名前説明
prices[].tld string TLD(例: com)
prices[].register integer 取得価格(初年度・税込・円)
prices[].renew integer|null 更新価格(1年あたり・税込・円)。価格を取得できない場合は null
prices[].transfer integer|null 移管価格(税込・円)。移管API対象外のTLDは null
prices[].currency string 通貨(JPY)
prices[].campaign_applied boolean キャンペーン価格が適用されているか

レスポンス例

200 OK
{
  "prices": [
    {
      "tld": "com",
      "register": 1602,
      "renew": 1602,
      "transfer": 1602,
      "currency": "JPY",
      "campaign_applied": false
    }
  ]
}

ドメイン取得

POST /v1/domain 書き込み

ドメインを取得(新規登録)

ドメインの新規取得を申し込みます。属性型JPドメイン(co.jp 等)とプレミアムドメインには対応していません。また、操作範囲が「指定ドメインのみ」のAPIキーからは利用できません(403 FORBIDDEN)。

通常価格はプリペイド残高から引き落とされます。初回限定0円キャンペーンが適用される場合は、クレジットカードを登録済みの会員に限り無料で取得できます。カード未登録の場合は CREDIT_CARD_REQUIRED、同じカードによる無料申込の重複利用対策に該当する場合は FREE_CAMPAIGN_NOT_AVAILABLE を返します。カードの登録・変更は、会員管理画面の「料金のお支払い」→「自動更新設定」から行ってください。

ご利用には、APIキー発行時に「ドメインの新規取得・移管・更新(お申し込み)を許可する」設定を有効にしておく必要があります。この設定を有効にするには、Whois初期値設定の登録とプリペイド残高のご入金が必要です。申込時のWhois情報には、登録済みの「Whois初期値設定」が使用されます。

dry_run が true の場合は、課金・登録を行わず、HTTP 200 で dry_run と total_price を返します。実申請には Idempotency-Key ヘッダーが必要です(UUID推奨)。

実申請はリクエスト内で登録まで同期的に処理され、成功すると HTTP 200 で domain(取得したドメインの情報)を返します。通常は status が active となり、その時点で取得は完了しています。レジストラ側の処理が保留された場合など、まれに status が pending_create のまま 200 が返ることがあります。この場合も申込は受け付けられており、通常は自動で解消されます(解消されない場合はサポートまでお問い合わせください)。その後の状態はドメイン詳細取得API(GET /v1/domain/{domain_name})の status で確認できます。詳しくは「取得・移管・更新の結果確認」を参照してください。

お支払い完了後にレジストラ側の処理が失敗・保留のまま解消されない場合、自動での返金は行われません。状況の確認・返金のご相談はサポートまでお問い合わせください。

リクエストヘッダー

名前必須説明
Idempotency-Key string dry_run=false時必須 実申請時に必須。8〜64文字の英数字・ハイフン・アンダースコア(UUID推奨)

リクエストボディ

名前必須説明
domain_name string 必須 取得するドメイン名。日本語ドメインは Punycode(xn-- 形式)で指定してください。日本語のまま指定した場合は 422 になります
years integer 任意 契約年数。TLDごとの対応年数から指定します(最大5年、省略時は1)
nameservers string[] 任意 ネームサーバー(最大6件、各255文字以内)。英数字・ハイフン・ドットで指定します。省略時は当社ネームサーバー
expected_total_price integer 必須 合計金額(税込・円・キャンペーン適用後)。取得可能確認APIが返した価格 × 年数を指定します。現在価格と一致しない場合はエラー(PRICE_MISMATCH)になります
agree_to_terms boolean 必須 利用規約への同意(true 必須)
dry_run boolean 任意 true の場合、課金・登録を行わずに実行可否のみ検証

リクエスト例

cURL
curl \
  -X POST \
  "https://api.shin-server.jp/v1/domain" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Idempotency-Key: 550e8400-e29b-41d4-a716-446655440000" \
  -H "Content-Type: application/json" \
  -d '{
    "domain_name": "example.com",
    "years": 1,
    "nameservers": [
        "ns1.example.jp",
        "ns2.example.jp"
    ],
    "expected_total_price": 1602,
    "agree_to_terms": true,
    "dry_run": false
}'

レスポンスフィールド

名前説明
domain.domain_name string 取得したドメイン名(Punycode表記)
domain.status string ドメインの状態
  • active取得完了
  • pending_createレジストラ処理の保留中(通常は自動で解消されます)
domain.expiry_date string|null 有効期限(YYYY-MM-DD)。pending_create の間は null
domain.epp_statuses string[] 当社側で把握しているEPPステータス(ドメイン詳細取得APIと同じ)

レスポンス例

200 OK
{
  "domain": {
    "domain_name": "example.com",
    "status": "active",
    "expiry_date": "2027-08-03",
    "epp_statuses": []
  }
}

レスポンスフィールド(dry_run=true の場合)

課金・登録を行わずに実行可否を検証した結果

名前説明
dry_run boolean dry run であることを示す値(true)
total_price integer 実申請時の合計金額(税込・円)

レスポンス例(dry_run=true の場合)

200 OK
{
  "dry_run": true,
  "total_price": 1602
}

ドメイン移管

POST /v1/domain/{domain_name}/transfer 書き込み

他社からの移管を申請

他社で管理しているドメインの移管(トランスファーイン)を申請します。対象は、価格一覧APIの transfer が null ではないTLDです。JPドメイン・属性型JPドメイン・プレミアムドメインには対応していません。移管料金として1年分の更新料金がプリペイド残高から引き落とされ、移管完了時に有効期限が1年延長されます。

ご利用には、APIキー発行時に「ドメインの新規取得・移管・更新(お申し込み)を許可する」設定を有効にしておく必要があります。

dry_run が true の場合は、課金・移管申請を行わず、HTTP 200 で dry_run と total_price を返します。実申請には Idempotency-Key ヘッダーが必要です(UUID推奨)。実申請は同期的に処理され、申請に成功すると HTTP 200 で domain(status: transferring)を返します。

移管はレジストリ側の承認を伴うため、申請後も完了までに時間がかかります。進行状況はドメイン詳細取得API(GET /v1/domain/{domain_name})の status で確認できます(完了で active、失敗すると transfer_action_required)。進行中の移管が残っている間は再申請できません。詳しくは「取得・移管・更新の結果確認」を参照してください。

お支払い完了後にレジストラ側の処理が失敗・保留のまま解消されない場合、自動での返金は行われません。状況の確認・返金のご相談はサポートまでお問い合わせください。

当社から他社への移管(トランスファーアウト)に必要な認証鍵の取得は、APIでは提供していません。契約管理画面のドメインパネル「別サービスに移管」から取得してください。

パスパラメータ

名前説明
domain_name移管するドメイン名(Punycode表記)

リクエストヘッダー

名前必須説明
Idempotency-Key string dry_run=false時必須 実申請時に必須。8〜64文字の英数字・ハイフン・アンダースコア(UUID推奨)

リクエストボディ

名前必須説明
auth_code string 必須 認証鍵(AuthCode / EPPコード、最大255文字)。現在の管理事業者から取得したもの
expected_total_price integer 必須 合計金額(税込・円・キャンペーン適用後)。取得可能確認APIの transfer 価格を指定。不一致はエラー(PRICE_MISMATCH)
agree_to_terms boolean 必須 利用規約への同意(true 必須)
dry_run boolean 任意 true の場合、課金・申請を行わずに実行可否のみ検証(60日ルール・ロック状態等の事前チェック)

リクエスト例

cURL
curl \
  -X POST \
  "https://api.shin-server.jp/v1/domain/{domain_name}/transfer" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Idempotency-Key: 550e8400-e29b-41d4-a716-446655440000" \
  -H "Content-Type: application/json" \
  -d '{
    "auth_code": "xxxxxxxxxxxx",
    "expected_total_price": 1602,
    "agree_to_terms": true,
    "dry_run": false
}'

レスポンスフィールド

名前説明
domain.domain_name string 移管を申請したドメイン名(Punycode表記)
domain.status string ドメインの状態。申請成功時は transferring: 移管申請中
domain.expiry_date string|null 有効期限(YYYY-MM-DD)。移管完了までは null
domain.epp_statuses string[] 当社側で把握しているEPPステータス(ドメイン詳細取得APIと同じ)

レスポンス例

200 OK
{
  "domain": {
    "domain_name": "example.com",
    "status": "transferring",
    "expiry_date": null,
    "epp_statuses": ["pendingTransfer"]
  }
}

レスポンスフィールド(dry_run=true の場合)

課金・移管申請を行わずに実行可否を検証した結果

名前説明
dry_run boolean dry run であることを示す値(true)
total_price integer 実申請時の合計金額(税込・円)

レスポンス例(dry_run=true の場合)

200 OK
{
  "dry_run": true,
  "total_price": 1602
}

契約更新

POST /v1/domain/{domain_name}/renew 書き込み

契約を更新(期限延長)

ドメインの契約期限を延長します。更新できるのは有効(active)なドメインのみです。失効後の更新・復旧はサポートまでご相談ください。料金はプリペイド残高から引き落とされます。二重更新を防ぐため、現在の有効期限(current_expiry_date)の指定が必須です。ご利用には、APIキー発行時に「ドメインの新規取得・移管・更新(お申し込み)を許可する」設定を有効にしておく必要があります。

dry_run が true の場合は、課金・更新を行わず、HTTP 200 で dry_run と total_price を返します。実申請には Idempotency-Key ヘッダーが必要です(UUID推奨)。

実申請はリクエスト内で更新まで同期的に処理され、成功すると HTTP 200 で domain を返します。更新の成否は renewed(true で更新完了)と、expiry_date が previous_expiry_date から延長されていることで判定してください。詳しくは「取得・移管・更新の結果確認」を参照してください。

パスパラメータ

名前説明
domain_name更新するドメイン名(Punycode表記)

リクエストヘッダー

名前必須説明
Idempotency-Key string dry_run=false時必須 実申請時に必須。8〜64文字の英数字・ハイフン・アンダースコア(UUID推奨)

リクエストボディ

名前必須説明
years integer 必須 延長する年数。TLDごとの対応年数から指定します(最大5年)
current_expiry_date string 必須 現在の有効期限(YYYY-MM-DD)。実際の有効期限と一致しない場合はエラー(EXPIRY_MISMATCH)。二重更新の防止用
expected_total_price integer 必須 合計金額(税込・円・キャンペーン適用後)。更新価格 × 年数。不一致はエラー(PRICE_MISMATCH)
dry_run boolean 任意 true の場合、課金・更新を行わずに検証のみ

リクエスト例

cURL
curl \
  -X POST \
  "https://api.shin-server.jp/v1/domain/{domain_name}/renew" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Idempotency-Key: 550e8400-e29b-41d4-a716-446655440000" \
  -H "Content-Type: application/json" \
  -d '{
    "years": 1,
    "current_expiry_date": "2026-12-31",
    "expected_total_price": 1602,
    "dry_run": false
}'

レスポンスフィールド

名前説明
domain.domain_name string 更新したドメイン名(Punycode表記)
domain.status string ドメインの状態(active: 有効)
domain.expiry_date string 更新後の有効期限(YYYY-MM-DD)
domain.epp_statuses string[] 当社側で把握しているEPPステータス(ドメイン詳細取得APIと同じ)
domain.renewed boolean 更新が完了したか。成否はこの値と expiry_date の延長で判定してください
domain.previous_expiry_date string|null 更新前の有効期限(YYYY-MM-DD)。有効期限を解決できなかった場合は null

レスポンス例

200 OK
{
  "domain": {
    "domain_name": "example.com",
    "status": "active",
    "expiry_date": "2027-12-31",
    "epp_statuses": [],
    "renewed": true,
    "previous_expiry_date": "2026-12-31"
  }
}

レスポンスフィールド(dry_run=true の場合)

課金・更新を行わずに実行可否を検証した結果

名前説明
dry_run boolean dry run であることを示す値(true)
total_price integer 実申請時の合計金額(税込・円)

レスポンス例(dry_run=true の場合)

200 OK
{
  "dry_run": true,
  "total_price": 1602
}