GET/v1/campaigns
キャンペーンと掲載申請の上限
キャンペーンの一覧(includeArchived=trueを指定しない限り、アーカイブ済みは除外)と、プランの掲載申請の上限および現在の使用量を返します。無料です。
クエリパラメータ
| フィールド | 型 | 説明 |
|---|
| productId | string | このプロダクトのキャンペーンのみ。 |
| includeArchived | boolean | |
レスポンス200
| フィールド | 型 | 説明 |
|---|
| success | enum | 指定できる値:true |
| data | CampaignList | |
| └campaigns | array<Campaign> | |
| └campaignId | string | |
| └productId | string | |
| └name | string | |
| └status | enum | completedは算出値で、すべてのタスクが掲載中、確認済み、失敗、スキップのいずれかになった状態です。指定できる値:activecompletedarchived |
| └quota | integer | キャンペーン作成時に選んだ掲載先の数。 |
| └startsAt | string | |
| └endsAtnull許容 | string | |
| └counts | object | |
| └total | integer | |
| └submitted | integer | submitted + published + verifiedの合計です。 |
| └live | integer | published + verifiedの合計です。 |
| └blocked | integer | |
| └done | integer | |
| └byStatus | object | |
| └createdAt | string | |
| └quota | DistributionQuota | プランの掲載申請の上限と、現在の使用量です。上限がnullの場合は無制限です。 |
| └plan | string | |
| └limits | object | |
| └channelsnull許容 | integer | 1つのプロダクトがタスクを持てる、異なる掲載先の数。channelsPeriodの期間で数えます。 |
| └channelsPeriod | enum | month(有料プラン):暦月(UTC)ごとに数えるため、毎月新たな掲載先をまとめて追加できます。total(無料プラン):プロダクトの全期間を通じて数えます。指定できる値:monthtotal |
| └tasksPerMonthnull許容 | integer | 暦月(UTC)ごとに作成できるタスクの数(全プロダクトの合計)。 |
| └activeCampaignsnull許容 | integer | 同時に進行できるキャンペーンの数。 |
| └usage | object | |
| └activeCampaigns | integer | |
| └tasksThisMonth | integer | |
| └channelsnull許容 | integer | リクエストでプロダクトを指定した場合のみ。 |
例
bash
curl "https://www.querywin.com/api/v1/campaigns" \
-H "Authorization: Bearer $QUERYWIN_API_KEY"
json — レスポンス
{
"success": true,
"data": {
"campaigns": [
{
"campaignId": "string",
"productId": "string",
"name": "string",
"status": "active",
"quota": 0,
"startsAt": "2026-09-01T00:00:00.000Z",
"endsAt": "2026-09-01T00:00:00.000Z",
"counts": {
"total": 0,
"submitted": 0,
"live": 0,
"blocked": 0,
"done": 0,
"byStatus": null
},
"createdAt": "2026-09-01T00:00:00.000Z"
}
],
"quota": {
"plan": "string",
"limits": {
"channels": 0,
"channelsPeriod": "month",
"tasksPerMonth": 0,
"activeCampaigns": 0
},
"usage": {
"activeCampaigns": 0,
"tasksThisMonth": 0,
"channels": 0
}
}
}
}
POST/v1/campaigns
明示した掲載先のリストからキャンペーンを作成
掲載先IDごとに1件のタスクを作成し、プロダクト情報から掲載素材をその場で無料で用意します。実際に選んだ掲載先だけを渡してください。キャンペーンは申請先として決めた場所の記録であり、サーバー側で対象を広げるフィルターではありません。
そのプロダクトで進行中または申請済みのタスクがある掲載先はスキップされ、理由(already_open、already_submitted、not_found、broken、inactive、other_product、locked)とともにskippedに列挙されます。何も残らない場合は、HTTP 200でok: falseとfailure: "no_valid_targets"を返します。プランの掲載申請の上限を超える場合は、409で拒否されます(quota_exceeded。dimension、limit、used、requestedを含みます)。何も作成されず、上限内に収まったはずの分も作成されません。
リクエストボディ
| フィールド | 型 | 説明 |
|---|
| productId必須 | string | |
| name必須 | string | |
| targetIds必須 | array<string> | GET /v1/channelsで取得した掲載先ID。選んだ掲載先だけを指定します。 |
| endsAt | string | 任意の期限。ダッシュボードに表示されますが、自動で終了することはありません。 |
レスポンス200
| フィールド | 型 | 説明 |
|---|
| success | enum | 指定できる値:true |
| data | CreateCampaignOutcome | |
| └ok | boolean | |
| └failure | enum | okがfalseの場合に含まれます。指定できる値:no_valid_targets |
| └campaign | Campaign | |
| └campaignId | string | |
| └productId | string | |
| └name | string | |
| └status | enum | completedは算出値で、すべてのタスクが掲載中、確認済み、失敗、スキップのいずれかになった状態です。指定できる値:activecompletedarchived |
| └quota | integer | キャンペーン作成時に選んだ掲載先の数。 |
| └startsAt | string | |
| └endsAtnull許容 | string | |
| └counts | object | |
| └total | integer | |
| └submitted | integer | submitted + published + verifiedの合計です。 |
| └live | integer | published + verifiedの合計です。 |
| └blocked | integer | |
| └done | integer | |
| └byStatus | object | |
| └createdAt | string | |
| └tasks | array<Task> | |
| └taskId | string | |
| └campaignId | string | |
| └productId | string | |
| └status | enum | publishedはご自身が報告した状態、verifiedはQueryWinが掲載ページで確認した状態です(ディレクトリとAIツールのディレクトリではリンク、それ以外では言及)。報告の際は両者を区別してください。指定できる値:plannedpreparedin_progressblockedsubmittedpublishedverifiedfailedskipped |
| └blockedReasonnull許容 | enum | 指定できる値:logincaptchapaymentmissing_materialothernull |
| └missing | array<string> | プロダクト情報に欠けている必須の掲載素材。ダッシュボードでプロダクト情報を補うと、タスクは自動的に準備し直されます。 |
| └listingUrlnull許容 | string | |
| └markedBy | enum | 最後にステータスを変更した主体:人(またはこのAPI)、ブラウザ拡張機能、QueryWin自身のいずれか。指定できる値:userdevicesystem |
| └hasGenerated | boolean | この掲載先向けに書き直したバージョンがあります。 |
| └reviewDueAtnull許容 | string | 申請後に結果を確認する日時(submittedAtに掲載先の審査日数を足したもの)。 |
| └submittedAtnull許容 | string | |
| └publishedAtnull許容 | string | |
| └verifiedAtnull許容 | string | |
| └next | array<string> | 現在のステータスから、POST /v1/tasks/{id}/statusで設定できるステータス。 |
| └target | object | |
| └targetId | string | |
| └name | string | |
| └url | string | |
| └submitUrl | string | |
| └kind | string | |
| └source | enum | 指定できる値:seeduserrivals |
| └language | string | |
| └requiresBacklink | boolean | |
| └checknull許容 | object | 掲載後に、QueryWinが掲載ページに対して行う再確認。タスクが掲載中になるまではnullです。 |
| └kind | enum | 確認する対象:プロダクトへのリンク(ディレクトリ、AIツールのディレクトリ)またはブランドへの言及(それ以外)。指定できる値:link_livemention_seen |
| └statenull許容 | enum | confirmed:確認できた。unconfirmed:1回の確認で見つからなかった(ステータスは変わりません。URLを確認してください)。lost:以前はあったが、なくなった(タスクは失敗になります)。指定できる値:confirmedunconfirmedlostnull |
| └checkedAtnull許容 | string | |
| └dueAtnull許容 | string | |
| └updatedAt | string | |
| └skipped | array<object> | |
| └targetId | string | |
| └reason | enum | other_product:別のプロダクトに属する、AIに引用されている候補サイト。inactive:無効化された、または無視された掲載先。locked:無料プランで閲覧できる掲載先ライブラリの範囲外(GET /v1/channelsが返す、相性順の上位window件。ご自身で追加した掲載先、お気に入り、AIに引用されているサイトは制限されません)。指定できる値:not_foundbrokeninactiveother_productalready_openalready_submittedlocked |
発生しうるエラー400product_id_required、name_required/name_too_long(80文字)、target_ids_required/too_many_targets(100件)、またはinvalid_date
401認証エラー
403missing_scope_publish(このキーにはpublishスコープが付与されていません)
404product_not_found(このproductIdはこのアカウントに属していません)
409quota_exceeded。レスポンス本文にdimension(active_campaigns/tasks_per_month/channels)、limit、used、requestedを含みます。channelsの場合は、period(month/total。DistributionQuota.limits.channelsPeriodと同じ)も含みます
例
bash
curl -X POST https://www.querywin.com/api/v1/campaigns \
-H "Authorization: Bearer $QUERYWIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"productId": "clx1prod000",
"name": "Directories, September",
"targetIds": [
"clx1tgt001",
"clx1tgt002"
]
}'
json — レスポンス
{
"success": true,
"data": {
"ok": true,
"failure": "no_valid_targets",
"campaign": {
"campaignId": "string",
"productId": "string",
"name": "string",
"status": "active",
"quota": 0,
"startsAt": "2026-09-01T00:00:00.000Z",
"endsAt": "2026-09-01T00:00:00.000Z",
"counts": {
"total": 0,
"submitted": 0,
"live": 0,
"blocked": 0,
"done": 0,
"byStatus": null
},
"createdAt": "2026-09-01T00:00:00.000Z"
},
"tasks": [
{
"taskId": "string",
"campaignId": "string",
"productId": "string",
"status": "planned",
"blockedReason": "login",
"missing": [
"string"
],
"listingUrl": "string",
"markedBy": "user",
"hasGenerated": true,
"reviewDueAt": "2026-09-01T00:00:00.000Z",
"submittedAt": "2026-09-01T00:00:00.000Z",
"publishedAt": "2026-09-01T00:00:00.000Z",
"verifiedAt": "2026-09-01T00:00:00.000Z",
"next": [
"string"
],
"target": {
"targetId": "string",
"name": "string",
"url": "string",
"submitUrl": "string",
"kind": "string",
"source": "seed",
"language": "string",
"requiresBacklink": true
},
"check": {
"kind": "link_live",
"state": "confirmed",
"checkedAt": "2026-09-01T00:00:00.000Z",
"dueAt": "2026-09-01T00:00:00.000Z"
},
"updatedAt": "2026-09-01T00:00:00.000Z"
}
],
"skipped": [
{
"targetId": "string",
"reason": "not_found"
}
]
}
}
GET/v1/campaigns/{id}
キャンペーンとそのタスク
キャンペーンと、そのすべてのタスクを返します。無料です。
レスポンス200
| フィールド | 型 | 説明 |
|---|
| success | enum | 指定できる値:true |
| data | CampaignDetail | |
| └campaign | Campaign | |
| └campaignId | string | |
| └productId | string | |
| └name | string | |
| └status | enum | completedは算出値で、すべてのタスクが掲載中、確認済み、失敗、スキップのいずれかになった状態です。指定できる値:activecompletedarchived |
| └quota | integer | キャンペーン作成時に選んだ掲載先の数。 |
| └startsAt | string | |
| └endsAtnull許容 | string | |
| └counts | object | |
| └total | integer | |
| └submitted | integer | submitted + published + verifiedの合計です。 |
| └live | integer | published + verifiedの合計です。 |
| └blocked | integer | |
| └done | integer | |
| └byStatus | object | |
| └createdAt | string | |
| └tasks | array<Task> | |
| └taskId | string | |
| └campaignId | string | |
| └productId | string | |
| └status | enum | publishedはご自身が報告した状態、verifiedはQueryWinが掲載ページで確認した状態です(ディレクトリとAIツールのディレクトリではリンク、それ以外では言及)。報告の際は両者を区別してください。指定できる値:plannedpreparedin_progressblockedsubmittedpublishedverifiedfailedskipped |
| └blockedReasonnull許容 | enum | 指定できる値:logincaptchapaymentmissing_materialothernull |
| └missing | array<string> | プロダクト情報に欠けている必須の掲載素材。ダッシュボードでプロダクト情報を補うと、タスクは自動的に準備し直されます。 |
| └listingUrlnull許容 | string | |
| └markedBy | enum | 最後にステータスを変更した主体:人(またはこのAPI)、ブラウザ拡張機能、QueryWin自身のいずれか。指定できる値:userdevicesystem |
| └hasGenerated | boolean | この掲載先向けに書き直したバージョンがあります。 |
| └reviewDueAtnull許容 | string | 申請後に結果を確認する日時(submittedAtに掲載先の審査日数を足したもの)。 |
| └submittedAtnull許容 | string | |
| └publishedAtnull許容 | string | |
| └verifiedAtnull許容 | string | |
| └next | array<string> | 現在のステータスから、POST /v1/tasks/{id}/statusで設定できるステータス。 |
| └target | object | |
| └targetId | string | |
| └name | string | |
| └url | string | |
| └submitUrl | string | |
| └kind | string | |
| └source | enum | 指定できる値:seeduserrivals |
| └language | string | |
| └requiresBacklink | boolean | |
| └checknull許容 | object | 掲載後に、QueryWinが掲載ページに対して行う再確認。タスクが掲載中になるまではnullです。 |
| └kind | enum | 確認する対象:プロダクトへのリンク(ディレクトリ、AIツールのディレクトリ)またはブランドへの言及(それ以外)。指定できる値:link_livemention_seen |
| └statenull許容 | enum | confirmed:確認できた。unconfirmed:1回の確認で見つからなかった(ステータスは変わりません。URLを確認してください)。lost:以前はあったが、なくなった(タスクは失敗になります)。指定できる値:confirmedunconfirmedlostnull |
| └checkedAtnull許容 | string | |
| └dueAtnull許容 | string | |
| └updatedAt | string | |
発生しうるエラー401認証エラー
404campaign_not_found
例
bash
curl "https://www.querywin.com/api/v1/campaigns/{id}" \
-H "Authorization: Bearer $QUERYWIN_API_KEY"
json — レスポンス
{
"success": true,
"data": {
"campaign": {
"campaignId": "string",
"productId": "string",
"name": "string",
"status": "active",
"quota": 0,
"startsAt": "2026-09-01T00:00:00.000Z",
"endsAt": "2026-09-01T00:00:00.000Z",
"counts": {
"total": 0,
"submitted": 0,
"live": 0,
"blocked": 0,
"done": 0,
"byStatus": null
},
"createdAt": "2026-09-01T00:00:00.000Z"
},
"tasks": [
{
"taskId": "string",
"campaignId": "string",
"productId": "string",
"status": "planned",
"blockedReason": "login",
"missing": [
"string"
],
"listingUrl": "string",
"markedBy": "user",
"hasGenerated": true,
"reviewDueAt": "2026-09-01T00:00:00.000Z",
"submittedAt": "2026-09-01T00:00:00.000Z",
"publishedAt": "2026-09-01T00:00:00.000Z",
"verifiedAt": "2026-09-01T00:00:00.000Z",
"next": [
"string"
],
"target": {
"targetId": "string",
"name": "string",
"url": "string",
"submitUrl": "string",
"kind": "string",
"source": "seed",
"language": "string",
"requiresBacklink": true
},
"check": {
"kind": "link_live",
"state": "confirmed",
"checkedAt": "2026-09-01T00:00:00.000Z",
"dueAt": "2026-09-01T00:00:00.000Z"
},
"updatedAt": "2026-09-01T00:00:00.000Z"
}
]
}
}
GET/v1/channels
プロダクトの申請先候補(相性の高い順)
掲載先ライブラリ(ディレクトリ、ローンチプラットフォーム、AIツールのディレクトリ、コミュニティ、記事投稿サービス)、ご自身で追加した掲載先、さらにproductIdを指定した場合は、そのプロダクトの検索キーワードに対するAIの回答ですでに引用されているサイト(source: "rivals")を返します。productIdを指定すると関連度順に並び、各掲載先にtaskStatusが付きます(そのプロダクトに、その掲載先のタスクがすでにある場合はnull以外)。無料です。
citedByAiが示すのは、AIの回答が、自社の検索キーワードでそのサイトを引用したということです。そのサイトがプロダクトを掲載してくれるという意味ではありません。掲載を依頼するのが、タスクの役割です。
クエリパラメータ
| フィールド | 型 | 説明 |
|---|
| productId | string | このプロダクトとの相性順に並べ、taskStatusを付け、AIに引用されている候補サイトも含めます。 |
| kind | string | 掲載先の種類。指定できる値:directorylaunchai_directorycommunitycontentother |
| source | string | seed:掲載先ライブラリ、user:ご自身で追加、rivals:このプロダクトについてAIに引用されているサイト。指定できる値:seeduserrivals |
| pricing | string | 申請にかかる費用。指定できる値:freeconditionalpaidunknown |
| submitMethod | string | 申請方法:フォームに入力する、コミュニティに投稿する、または紹介メールを送る。指定できる値:formpostemail |
| q | string | 名前、ドメイン、トピックを検索します。 |
| hideSubmitted | boolean | このプロダクトで、進行中または申請済みのタスクがある掲載先を除外します。productIdが必要です。 |
| page | integer | デフォルトは1。 |
| pageSize | integer | デフォルトは30。 |
レスポンス200
| フィールド | 型 | 説明 |
|---|
| success | enum | 指定できる値:true |
| data | ChannelList | |
| └productIdnull許容 | string | |
| └items | array<Channel> | |
| └targetId | string | POST /v1/campaignsのtargetIdsに渡す値。 |
| └name | string | |
| └url | string | |
| └submitUrl | string | 申請フォームまたは投稿ページ。AIに引用されているサイトの場合は、AIの回答で最も多く引用されているページ。 |
| └kind | enum | 指定できる値:directorylaunchai_directorycommunitycontentother |
| └submitMethod | enum | form:申請フォームに入力する、post:ご自身でコミュニティに投稿する、email:編集者に紹介メールを送る(アドレスはページを開いた時点でページから読み取り、保存はしません)。指定できる値:formpostemail |
| └source | enum | seed:掲載先ライブラリ、user:ご自身で追加、rivals:このプロダクトの検索キーワードでAIの回答に引用されているサイト。指定できる値:seeduserrivals |
| └pricingType | enum | 指定できる値:freeconditionalpaidunknown |
| └priceNotenull許容 | string | |
| └language | string | en、zh、multi、またはAIに引用されているサイトの場合は、検索キーワードから判定した言語コード。 |
| └topics | array<string> | |
| └requiresAccount | boolean | |
| └requiresBacklink | boolean | |
| └reviewDaysnull許容 | integer | 通常の審査期間。この期間が過ぎたら確認するよう、タスクがお知らせします。 |
| └siteRanknull許容 | integer | 公開されているTrancoリストでの世界順位(小さいほどアクセスが多い)。null:上位100万位の圏外。Domain Ratingではありません。 |
| └hasFormSpec | boolean | この掲載先のフォーム項目が登録済みのため、掲載素材はその制限に正確に合わせて切り詰められます。 |
| └relevancenull許容 | integer | リクエストで指定したプロダクトとの相性スコア。並べ替えにのみ使います。 |
| └taskStatusnull許容 | string | この掲載先における、そのプロダクトの進行中または完了済みのタスク(ある場合)。null:まだない。 |
| └citedByAinull許容 | object | source: "rivals"の場合のみ。AIの回答が、列挙された検索キーワードでこのサイトを引用しました。そのサイトがプロダクトを掲載してくれる保証ではありません。掲載を依頼するのが、タスクの役割です。 |
| └queries | integer | 引用された、異なる検索キーワードの数。 |
| └samples | integer | このサイトを引用したAI回答サンプルの数。 |
| └searches | array<string> | |
| └pages | array<string> | 引用されたページ(引用の多い順)。ドメインしか記録していなかった古いサンプルでは空です。 |
| └total | integer | |
| └page | integer | |
| └pageSize | integer | |
| └limited | boolean | 無料プランでは、デフォルトの並び順(productIdとの相性順)で先頭window件の掲載先だけを返し、絞り込み・検索・並べ替えのパラメータは403 library_lockedで拒否します。totalは掲載先ライブラリ全体の件数のままです。 |
| └windownull許容 | integer | 無料プランで閲覧できる範囲の大きさです。基本は20件で、紹介リンクから新規登録した友だち1人につき20件追加されます(ご自身が紹介リンク経由で登録した場合は、さらに20件)。リストに制限がない場合はnullです。 |
例
bash
curl "https://www.querywin.com/api/v1/channels" \
-H "Authorization: Bearer $QUERYWIN_API_KEY"
json — レスポンス
{
"success": true,
"data": {
"productId": "string",
"items": [
{
"targetId": "string",
"name": "string",
"url": "string",
"submitUrl": "string",
"kind": "directory",
"submitMethod": "form",
"source": "seed",
"pricingType": "free",
"priceNote": "string",
"language": "string",
"topics": [
"string"
],
"requiresAccount": true,
"requiresBacklink": true,
"reviewDays": 0,
"siteRank": 0,
"hasFormSpec": true,
"relevance": 0,
"taskStatus": "string",
"citedByAi": {
"queries": 0,
"samples": 0,
"searches": [],
"pages": []
}
}
],
"total": 0,
"page": 0,
"pageSize": 0,
"limited": true,
"window": 0
}
}
GET/v1/products
プロダクト一覧と、各プロダクト情報の完成度
掲載申請のパイプラインはここから始めます。ほかの掲載申請系エンドポイントは、すべてproductIdを受け取ります。completenessとmissingは、保存済みのプロダクト情報から算出します。プロダクト情報で空のフィールドは、すべての申請でも空になります。必須項目が欠けていると、プロダクト情報が埋まるまでタスクはblocked/missing_materialで止まります。プロダクト情報はGET /v1/products/{id}で取得し、PATCH /v1/products/{id}で入力してください。無料です。
レスポンス200
| フィールド | 型 | 説明 |
|---|
| success | enum | 指定できる値:true |
| data | ProductList | |
| └products | array<Product> | |
| └productId | string | |
| └name | string | |
| └url | string | |
| └domain | string | |
| └primaryLanguage | enum | 指定できる値:enzhjakodefresptitrunlpltrarthviid |
| └topics | array<string> | |
| └completeness | integer | プロダクト情報の完成度(0〜100)。未入力のフィールドは、ダッシュボードまたはPATCH /v1/products/{id}で入力してください。 |
| └missing | array<string> | プロダクト情報のうち、空のフィールド。それぞれが、すべての申請で空欄になります。 |
| └sites | array<object> | |
| └siteId | string | |
| └domain | string | |
| └syncedThroughnull許容 | string | |
例
bash
curl "https://www.querywin.com/api/v1/products" \
-H "Authorization: Bearer $QUERYWIN_API_KEY"
json — レスポンス
{
"success": true,
"data": {
"products": [
{
"productId": "string",
"name": "string",
"url": "string",
"domain": "string",
"primaryLanguage": "en",
"topics": [
"string"
],
"completeness": 0,
"missing": [
"string"
],
"sites": [
{
"siteId": null,
"domain": null,
"syncedThrough": null
}
]
}
]
}
}
POST/v1/products
プロダクトを作成
publishスコープと有料プランが必要です。公開されているホームページのURLと、任意のプロダクト名からプロダクトを作成します。プロダクト数の上限枠を使いますが、クレジットは消費しません。保存されたプロダクト情報をすべて返すので、続けてPATCH /v1/products/{id}で内容を入力してください。サイトのクロールやAIの実行は行いません。登録済みのドメインを指定すると、既存のproductIdとともに409 product_existsが返ります。レスポンスを受け取れなかった場合は、そのproductIdを再利用できます。プロダクトの初期値は編集可能な値であり、サイトについて確認済みの事実ではありません。
リクエストボディ
| フィールド | 型 | 説明 |
|---|
| url必須 | string | |
| name | string | |
レスポンス201
| フィールド | 型 | 説明 |
|---|
| success | boolean | |
| data | ProductDetail | |
| └name | string | |
| └url | string | |
| └primaryLanguage | enum | 指定できる値:enzhjakodefresptitrunlpltrarthviid |
| └businessType | enum | 指定できる値:saastoolecommercecontentserviceother |
| └launchStatus | enum | 指定できる値:livebeta |
| └pricingModel | enum | 指定できる値:freefreemiumpaidtrial |
| └taglinenull許容 | object | |
| └shortDescnull許容 | object | |
| └longDescnull許容 | object | |
| └firstCommentnull許容 | object | |
| └topics | array<string> | |
| └promoCodenull許容 | string | |
| └videoUrlnull許容 | string | |
| └demoUrlnull許容 | string | |
| └linksnull許容 | object | |
| └webApp | string | |
| └appStore | string | |
| └playStore | string | |
| └chromeExtension | string | |
| └macos | string | |
| └windows | string | |
| └socialsnull許容 | object | |
| └x | string | |
| └linkedin | string | |
| └github | string | |
| └instagram | string | |
| └youtube | string | |
| └facebook | string | |
| └contactNamenull許容 | string | |
| └contactEmailnull許容 | string | |
| └gallery | array<string> | |
| └productId | string | |
| └domain | string | |
| └thumbnailUrlnull許容 | string | |
| └completeness | integer | (0–100) |
| └missing | array<string> | |
| └createdAt | string | |
| └updatedAt | string | |
| └sites | array<object> | |
| └siteId | string | |
| └domain | string | |
| └syncedThroughnull許容 | string | |
発生しうるエラー400invalid_product_input、invalid_url、url_not_public
401認証エラー
403plan_required、または書き込み操作でのmissing_scope_publish
409product_exists(既存のproductIdを含む)またはproduct_limit_reached
429rate_limited(キーごとに毎分120リクエストまで)
例
bash
curl -X POST https://www.querywin.com/api/v1/products \
-H "Authorization: Bearer $QUERYWIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com",
"name": "Example"
}'
json — レスポンス
{
"success": true,
"data": {
"name": "string",
"url": "string",
"primaryLanguage": "en",
"businessType": "saas",
"launchStatus": "live",
"pricingModel": "free",
"tagline": null,
"shortDesc": null,
"longDesc": null,
"firstComment": null,
"topics": [
"string"
],
"promoCode": "string",
"videoUrl": "string",
"demoUrl": "string",
"links": {
"webApp": "string",
"appStore": "string",
"playStore": "string",
"chromeExtension": "string",
"macos": "string",
"windows": "string"
},
"socials": {
"x": "string",
"linkedin": "string",
"github": "string",
"instagram": "string",
"youtube": "string",
"facebook": "string"
},
"contactName": "string",
"contactEmail": "string",
"gallery": [
"string"
],
"productId": "string",
"domain": "string",
"thumbnailUrl": "string",
"completeness": 0,
"missing": [
"string"
],
"createdAt": "2026-09-01T00:00:00.000Z",
"updatedAt": "2026-09-01T00:00:00.000Z",
"sites": [
{
"siteId": "string",
"domain": "string",
"syncedThrough": "string"
}
]
}
}
PATCH/v1/products/{id}
プロダクト情報を入力・更新
publishスコープが必要です。送信したフィールドだけを即座に保存します。オブジェクト(各言語のテキストを含む)と配列はフィールド全体を置き換えるため、ほかの言語を残すには、先にプロダクト情報を取得してください。クレジットの消費やAIによる生成はありません。申請前の掲載素材は非同期で更新されます。確かな事実だけを使い、不足しているプロダクト情報を推測で補わないでください。
リクエストボディ
| フィールド | 型 | 説明 |
|---|
| name | string | |
| url | string | |
| primaryLanguage | enum | 指定できる値:enzhjakodefresptitrunlpltrarthviid |
| businessType | enum | 指定できる値:saastoolecommercecontentserviceother |
| launchStatus | enum | 指定できる値:livebeta |
| pricingModel | enum | 指定できる値:freefreemiumpaidtrial |
| tagline | object | |
| shortDesc | object | |
| longDesc | object | |
| firstComment | object | |
| topics | array<string> | |
| promoCode | string | |
| videoUrl | string | |
| demoUrl | string | |
| links | object | |
| └webApp | string | |
| └appStore | string | |
| └playStore | string | |
| └chromeExtension | string | |
| └macos | string | |
| └windows | string | |
| socials | object | |
| └x | string | |
| └linkedin | string | |
| └github | string | |
| └instagram | string | |
| └youtube | string | |
| └facebook | string | |
| contactName | string | |
| contactEmail | string | |
| gallery | array<string> | |
レスポンス200
| フィールド | 型 | 説明 |
|---|
| success | boolean | |
| data | ProductDetail | |
| └name | string | |
| └url | string | |
| └primaryLanguage | enum | 指定できる値:enzhjakodefresptitrunlpltrarthviid |
| └businessType | enum | 指定できる値:saastoolecommercecontentserviceother |
| └launchStatus | enum | 指定できる値:livebeta |
| └pricingModel | enum | 指定できる値:freefreemiumpaidtrial |
| └taglinenull許容 | object | |
| └shortDescnull許容 | object | |
| └longDescnull許容 | object | |
| └firstCommentnull許容 | object | |
| └topics | array<string> | |
| └promoCodenull許容 | string | |
| └videoUrlnull許容 | string | |
| └demoUrlnull許容 | string | |
| └linksnull許容 | object | |
| └webApp | string | |
| └appStore | string | |
| └playStore | string | |
| └chromeExtension | string | |
| └macos | string | |
| └windows | string | |
| └socialsnull許容 | object | |
| └x | string | |
| └linkedin | string | |
| └github | string | |
| └instagram | string | |
| └youtube | string | |
| └facebook | string | |
| └contactNamenull許容 | string | |
| └contactEmailnull許容 | string | |
| └gallery | array<string> | |
| └productId | string | |
| └domain | string | |
| └thumbnailUrlnull許容 | string | |
| └completeness | integer | (0–100) |
| └missing | array<string> | |
| └createdAt | string | |
| └updatedAt | string | |
| └sites | array<object> | |
| └siteId | string | |
| └domain | string | |
| └syncedThroughnull許容 | string | |
発生しうるエラー400invalid_product_input、invalid_url、url_not_public、invalid_email、またはinvalid_gallery
401認証エラー
403plan_required、または書き込み操作でのmissing_scope_publish
404product_not_found
409product_exists(既存のproductIdを含む)
429rate_limited(キーごとに毎分120リクエストまで)
例
bash
curl -X PATCH https://www.querywin.com/api/v1/products/{id} \
-H "Authorization: Bearer $QUERYWIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"tagline": {
"en": "Your product tagline",
"zh": "你的产品标语"
},
"shortDesc": {
"en": "A factual description of the product."
},
"topics": [
"productivity",
"developer-tools"
],
"contactEmail": "hello@example.com"
}'
json — レスポンス
{
"success": true,
"data": {
"name": "string",
"url": "string",
"primaryLanguage": "en",
"businessType": "saas",
"launchStatus": "live",
"pricingModel": "free",
"tagline": null,
"shortDesc": null,
"longDesc": null,
"firstComment": null,
"topics": [
"string"
],
"promoCode": "string",
"videoUrl": "string",
"demoUrl": "string",
"links": {
"webApp": "string",
"appStore": "string",
"playStore": "string",
"chromeExtension": "string",
"macos": "string",
"windows": "string"
},
"socials": {
"x": "string",
"linkedin": "string",
"github": "string",
"instagram": "string",
"youtube": "string",
"facebook": "string"
},
"contactName": "string",
"contactEmail": "string",
"gallery": [
"string"
],
"productId": "string",
"domain": "string",
"thumbnailUrl": "string",
"completeness": 0,
"missing": [
"string"
],
"createdAt": "2026-09-01T00:00:00.000Z",
"updatedAt": "2026-09-01T00:00:00.000Z",
"sites": [
{
"siteId": "string",
"domain": "string",
"syncedThrough": "string"
}
]
}
}
GET/v1/products/{id}
プロダクト情報をすべて取得
保存済みの各言語のテキスト、リンク、連絡先、画像、完成度、未入力のフィールドを返します。readスコープで利用でき、クレジットは消費しません。このワークスペースに属さないプロダクトを指定した場合も、product_not_foundが返ります。
レスポンス200
| フィールド | 型 | 説明 |
|---|
| success | boolean | |
| data | ProductDetail | |
| └name | string | |
| └url | string | |
| └primaryLanguage | enum | 指定できる値:enzhjakodefresptitrunlpltrarthviid |
| └businessType | enum | 指定できる値:saastoolecommercecontentserviceother |
| └launchStatus | enum | 指定できる値:livebeta |
| └pricingModel | enum | 指定できる値:freefreemiumpaidtrial |
| └taglinenull許容 | object | |
| └shortDescnull許容 | object | |
| └longDescnull許容 | object | |
| └firstCommentnull許容 | object | |
| └topics | array<string> | |
| └promoCodenull許容 | string | |
| └videoUrlnull許容 | string | |
| └demoUrlnull許容 | string | |
| └linksnull許容 | object | |
| └webApp | string | |
| └appStore | string | |
| └playStore | string | |
| └chromeExtension | string | |
| └macos | string | |
| └windows | string | |
| └socialsnull許容 | object | |
| └x | string | |
| └linkedin | string | |
| └github | string | |
| └instagram | string | |
| └youtube | string | |
| └facebook | string | |
| └contactNamenull許容 | string | |
| └contactEmailnull許容 | string | |
| └gallery | array<string> | |
| └productId | string | |
| └domain | string | |
| └thumbnailUrlnull許容 | string | |
| └completeness | integer | (0–100) |
| └missing | array<string> | |
| └createdAt | string | |
| └updatedAt | string | |
| └sites | array<object> | |
| └siteId | string | |
| └domain | string | |
| └syncedThroughnull許容 | string | |
発生しうるエラー401認証エラー
403plan_required、または書き込み操作でのmissing_scope_publish
404product_not_found
429rate_limited(キーごとに毎分120リクエストまで)
例
bash
curl "https://www.querywin.com/api/v1/products/{id}" \
-H "Authorization: Bearer $QUERYWIN_API_KEY"
json — レスポンス
{
"success": true,
"data": {
"name": "string",
"url": "string",
"primaryLanguage": "en",
"businessType": "saas",
"launchStatus": "live",
"pricingModel": "free",
"tagline": null,
"shortDesc": null,
"longDesc": null,
"firstComment": null,
"topics": [
"string"
],
"promoCode": "string",
"videoUrl": "string",
"demoUrl": "string",
"links": {
"webApp": "string",
"appStore": "string",
"playStore": "string",
"chromeExtension": "string",
"macos": "string",
"windows": "string"
},
"socials": {
"x": "string",
"linkedin": "string",
"github": "string",
"instagram": "string",
"youtube": "string",
"facebook": "string"
},
"contactName": "string",
"contactEmail": "string",
"gallery": [
"string"
],
"productId": "string",
"domain": "string",
"thumbnailUrl": "string",
"completeness": 0,
"missing": [
"string"
],
"createdAt": "2026-09-01T00:00:00.000Z",
"updatedAt": "2026-09-01T00:00:00.000Z",
"sites": [
{
"siteId": "string",
"domain": "string",
"syncedThrough": "string"
}
]
}
}
POST/v1/products/{id}/images/from-url
URLからプロダクト画像をインポート
publishスコープが必要です。HTTP(S)で公開されている画像を取得し、そのコピーをサムネイル(現在の画像を置き換え)またはギャラリー(末尾に追加、最大6枚)として保存します。対応形式はJPEG、PNG、WebP、SVGで、サイズは4MBまでです。SVGはPNGに変換されます。プライベートネットワークへのアクセスや安全でないリダイレクトは、既存の画像取得処理がブロックします。クレジットは消費しません。ギャラリーへのインポートを繰り返すと、同じ画像が重複することがあります。レスポンスを受け取れなかった場合は、再試行する前にGETでプロダクトを取得し直してください。
リクエストボディ
| フィールド | 型 | 説明 |
|---|
| url必須 | string | |
| kind | enum | 指定できる値:thumbnailgalleryデフォルト値: gallery |
レスポンス200
| フィールド | 型 | 説明 |
|---|
| success | boolean | |
| data | ProductDetail | |
| └name | string | |
| └url | string | |
| └primaryLanguage | enum | 指定できる値:enzhjakodefresptitrunlpltrarthviid |
| └businessType | enum | 指定できる値:saastoolecommercecontentserviceother |
| └launchStatus | enum | 指定できる値:livebeta |
| └pricingModel | enum | 指定できる値:freefreemiumpaidtrial |
| └taglinenull許容 | object | |
| └shortDescnull許容 | object | |
| └longDescnull許容 | object | |
| └firstCommentnull許容 | object | |
| └topics | array<string> | |
| └promoCodenull許容 | string | |
| └videoUrlnull許容 | string | |
| └demoUrlnull許容 | string | |
| └linksnull許容 | object | |
| └webApp | string | |
| └appStore | string | |
| └playStore | string | |
| └chromeExtension | string | |
| └macos | string | |
| └windows | string | |
| └socialsnull許容 | object | |
| └x | string | |
| └linkedin | string | |
| └github | string | |
| └instagram | string | |
| └youtube | string | |
| └facebook | string | |
| └contactNamenull許容 | string | |
| └contactEmailnull許容 | string | |
| └gallery | array<string> | |
| └productId | string | |
| └domain | string | |
| └thumbnailUrlnull許容 | string | |
| └completeness | integer | (0–100) |
| └missing | array<string> | |
| └createdAt | string | |
| └updatedAt | string | |
| └sites | array<object> | |
| └siteId | string | |
| └domain | string | |
| └syncedThroughnull許容 | string | |
発生しうるエラー400invalid_product_inputまたはinvalid_url
401認証エラー
403plan_required、または書き込み操作でのmissing_scope_publish
404product_not_found
409gallery_full
413image_too_large
415image_type
429rate_limited(キーごとに毎分120リクエストまで)
502image_unreachable
503storage_unavailable
例
bash
curl -X POST https://www.querywin.com/api/v1/products/{id}/images/from-url \
-H "Authorization: Bearer $QUERYWIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/logo.png",
"kind": "thumbnail"
}'
json — レスポンス
{
"success": true,
"data": {
"name": "string",
"url": "string",
"primaryLanguage": "en",
"businessType": "saas",
"launchStatus": "live",
"pricingModel": "free",
"tagline": null,
"shortDesc": null,
"longDesc": null,
"firstComment": null,
"topics": [
"string"
],
"promoCode": "string",
"videoUrl": "string",
"demoUrl": "string",
"links": {
"webApp": "string",
"appStore": "string",
"playStore": "string",
"chromeExtension": "string",
"macos": "string",
"windows": "string"
},
"socials": {
"x": "string",
"linkedin": "string",
"github": "string",
"instagram": "string",
"youtube": "string",
"facebook": "string"
},
"contactName": "string",
"contactEmail": "string",
"gallery": [
"string"
],
"productId": "string",
"domain": "string",
"thumbnailUrl": "string",
"completeness": 0,
"missing": [
"string"
],
"createdAt": "2026-09-01T00:00:00.000Z",
"updatedAt": "2026-09-01T00:00:00.000Z",
"sites": [
{
"siteId": "string",
"domain": "string",
"syncedThrough": "string"
}
]
}
}
GET/v1/tasks
全キャンペーンのタスク
申請履歴を、最近の動きがあった順に返します。プロダクト、キャンペーン、またはカンマ区切りのステータスで絞り込めます。byStatusは、ステータスで絞り込む前の対象タスクをすべて数えます。無料です。
クエリパラメータ
| フィールド | 型 | 説明 |
|---|
| productId | string | このプロダクトのタスクのみ。 |
| campaignId | string | |
| status | string | カンマ区切り。例:prepared,in_progress。 |
| page | integer | デフォルトは1。 |
| pageSize | integer | デフォルトは30。 |
レスポンス200
| フィールド | 型 | 説明 |
|---|
| success | enum | 指定できる値:true |
| data | TaskList | |
| └items | array<Task> | |
| └taskId | string | |
| └campaignId | string | |
| └productId | string | |
| └status | enum | publishedはご自身が報告した状態、verifiedはQueryWinが掲載ページで確認した状態です(ディレクトリとAIツールのディレクトリではリンク、それ以外では言及)。報告の際は両者を区別してください。指定できる値:plannedpreparedin_progressblockedsubmittedpublishedverifiedfailedskipped |
| └blockedReasonnull許容 | enum | 指定できる値:logincaptchapaymentmissing_materialothernull |
| └missing | array<string> | プロダクト情報に欠けている必須の掲載素材。ダッシュボードでプロダクト情報を補うと、タスクは自動的に準備し直されます。 |
| └listingUrlnull許容 | string | |
| └markedBy | enum | 最後にステータスを変更した主体:人(またはこのAPI)、ブラウザ拡張機能、QueryWin自身のいずれか。指定できる値:userdevicesystem |
| └hasGenerated | boolean | この掲載先向けに書き直したバージョンがあります。 |
| └reviewDueAtnull許容 | string | 申請後に結果を確認する日時(submittedAtに掲載先の審査日数を足したもの)。 |
| └submittedAtnull許容 | string | |
| └publishedAtnull許容 | string | |
| └verifiedAtnull許容 | string | |
| └next | array<string> | 現在のステータスから、POST /v1/tasks/{id}/statusで設定できるステータス。 |
| └target | object | |
| └targetId | string | |
| └name | string | |
| └url | string | |
| └submitUrl | string | |
| └kind | string | |
| └source | enum | 指定できる値:seeduserrivals |
| └language | string | |
| └requiresBacklink | boolean | |
| └checknull許容 | object | 掲載後に、QueryWinが掲載ページに対して行う再確認。タスクが掲載中になるまではnullです。 |
| └kind | enum | 確認する対象:プロダクトへのリンク(ディレクトリ、AIツールのディレクトリ)またはブランドへの言及(それ以外)。指定できる値:link_livemention_seen |
| └statenull許容 | enum | confirmed:確認できた。unconfirmed:1回の確認で見つからなかった(ステータスは変わりません。URLを確認してください)。lost:以前はあったが、なくなった(タスクは失敗になります)。指定できる値:confirmedunconfirmedlostnull |
| └checkedAtnull許容 | string | |
| └dueAtnull許容 | string | |
| └updatedAt | string | |
| └total | integer | |
| └page | integer | |
| └pageSize | integer | |
| └byStatus | object | |
例
bash
curl "https://www.querywin.com/api/v1/tasks" \
-H "Authorization: Bearer $QUERYWIN_API_KEY"
json — レスポンス
{
"success": true,
"data": {
"items": [
{
"taskId": "string",
"campaignId": "string",
"productId": "string",
"status": "planned",
"blockedReason": "login",
"missing": [
"string"
],
"listingUrl": "string",
"markedBy": "user",
"hasGenerated": true,
"reviewDueAt": "2026-09-01T00:00:00.000Z",
"submittedAt": "2026-09-01T00:00:00.000Z",
"publishedAt": "2026-09-01T00:00:00.000Z",
"verifiedAt": "2026-09-01T00:00:00.000Z",
"next": [
"string"
],
"target": {
"targetId": "string",
"name": "string",
"url": "string",
"submitUrl": "string",
"kind": "string",
"source": "seed",
"language": "string",
"requiresBacklink": true
},
"check": {
"kind": "link_live",
"state": "confirmed",
"checkedAt": "2026-09-01T00:00:00.000Z",
"dueAt": "2026-09-01T00:00:00.000Z"
},
"updatedAt": "2026-09-01T00:00:00.000Z"
}
],
"total": 0,
"page": 0,
"pageSize": 0,
"byStatus": null
}
}
GET/v1/tasks/{id}
タスクと、申請に使う掲載素材
掲載先のフォームが求めるすべてのフィールドを返します。値はプロダクト情報を掲載先の制限に合わせて切り詰めたもの(source: "profile")で、掲載先向けの書き直しがあればそれ(source: "ai")、ダッシュボードでの編集内容(source: "override")も含みます。source: "none"は、そのフィールドに当たる内容がプロダクト情報にないことを示します。推測で埋めないでください。書き直しは一切行わず、費用もかかりません。
レスポンス200
| フィールド | 型 | 説明 |
|---|
| success | enum | 指定できる値:true |
| data | TaskDetailResult | |
| └task | TaskDetail | |
発生しうるエラー401認証エラー
404task_not_found
例
bash
curl "https://www.querywin.com/api/v1/tasks/{id}" \
-H "Authorization: Bearer $QUERYWIN_API_KEY"
json — レスポンス
{
"success": true,
"data": {
"task": null
}
}
POST/v1/tasks/{id}/materials
掲載先に合わせて掲載素材を書き直す(クレジット消費)
AIが1回の処理で、プロダクト情報をこの掲載先に合わせて書き直します。ディレクトリ向けの引き締まった説明文、メーカーとしての最初のコメント、コミュニティへの投稿、編集者への紹介メール、AIに引用されているサイトの場合は紹介メールとページの管理者が追記できる段落、のいずれかです。同期処理で、数秒で終わります。使うのはプロダクト情報にある事実だけで、プロダクト情報にないリンクを含む部分は破棄され、その分のクレジットは消費されません。
入力が同じであれば前回のバージョンが返り、クレジットは消費されません(cached: true)。force: trueを指定すると強制的に書き直し、クレジットを消費します。ディレクトリなら、GET /v1/tasks/{id}で得られるプロダクト情報ベースの掲載素材でたいてい足ります。掲載先が別の文体を求める場合に書き直してください。
検証を通った部分が何もない場合は、HTTP 200でok: falseとfailure: "engine_failed"を返します。クレジット不足は、処理結果ではなく402エラーとして返ります。
リクエストボディ
| フィールド | 型 | 説明 |
|---|
| confirmSpend必須 | integer | クレジットの承認上限。意味はアウトラインや下書きと同じです。価格はGET /v1/usage(materials.pricePerTask)で確認してください。無料枠が残っていても必須です。 (min 0) |
| force | boolean | 前回のバージョンから何も変わっていなくても書き直します。クレジットを消費します。 |
レスポンス200
| フィールド | 型 | 説明 |
|---|
| success | enum | 指定できる値:true |
| data | WriteMaterialsOutcome | |
| └ok | boolean | |
| └failure | enum | okがfalseの場合に含まれます。クレジットは消費されません。指定できる値:engine_failedengine_unavailable |
| └cached | boolean | 入力に変更がなかったため、前回のバージョンを返しました。クレジットは消費されていません。 |
| └freeUsed | boolean | |
| └creditsSpent | integer | |
| └task | TaskDetail | |
発生しうるエラー400confirm_spend_requiredまたはconfirm_spend_too_low(レスポンス本文に現在のpriceを含む)
401認証エラー
402insufficient_credits(レスポンス本文にrequiredCredits、currentBalance、shortfallを含む)
403missing_scope_spend(このキーにはspendスコープが付与されていません)
404task_not_found
429rate_limitedまたはdaily_limit_reached(レスポンス本文にresetAtを含む)
例
bash
curl -X POST https://www.querywin.com/api/v1/tasks/{id}/materials \
-H "Authorization: Bearer $QUERYWIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"confirmSpend": 10
}'
json — レスポンス
{
"success": true,
"data": {
"ok": true,
"failure": "engine_failed",
"cached": true,
"freeUsed": true,
"creditsSpent": 0,
"task": null
}
}
POST/v1/tasks/{id}/status
申請の結果を報告
ご自身のアカウントで行った申請の結果を記録します。QueryWin自身がどこかへ申請することはありません。フォームを送信したらsubmittedに、掲載されたら掲載ページのURL(サイトのトップページではなく、掲載された項目や投稿そのもの)とともにpublishedにします。QueryWinは約72時間後にそのページを再確認し、プロダクトへのリンク(ディレクトリ、AIツールのディレクトリ)または言及(それ以外)があれば、QueryWin自身がverifiedにします。このステータスは設定できません。
blockedは「人の対応が必要」という意味で、reason(login、captcha、payment、missing_material、other)を渡します。failed/skippedはタスクを終了し、preparedは申請待ちに戻します。状態遷移のルールで許可されていない遷移は409エラー(transition_not_allowed)になります。現在のステータスから設定できるものは、タスクのnextフィールドに列挙されています。
リクエストボディ
| フィールド | 型 | 説明 |
|---|
| status必須 | enum | verifiedは設定できません。QueryWinが掲載ページを再確認したうえで設定します。指定できる値:preparedin_progressblockedsubmittedpublishedfailedskipped |
| listingUrl | string | publishedでは必須:サイトのトップページではなく、公開された項目や投稿のURL。http/httpsのみ。すでに分かっている場合は、submittedで指定することもできます(任意)。 |
| note | string | |
| reason | enum | blockedでは必須。指定できる値:logincaptchapaymentmissing_materialother |
レスポンス200
| フィールド | 型 | 説明 |
|---|
| success | enum | 指定できる値:true |
| data | TaskDetailResult | |
| └task | TaskDetail | |
発生しうるエラー400invalid_status、listing_url_required(publishedにはlistingUrlが必要)、invalid_listing_url、またはreason_required(blockedにはreasonが必要)
401認証エラー
403missing_scope_publish(このキーにはpublishスコープが付与されていません)
404task_not_found
409transition_not_allowed(タスクを取得し、nextで許可されたステータスを確認してください)
例
bash
curl -X POST https://www.querywin.com/api/v1/tasks/{id}/status \
-H "Authorization: Bearer $QUERYWIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"status": "published",
"listingUrl": "https://example-directory.com/tools/your-product"
}'
json — レスポンス
{
"success": true,
"data": {
"task": null
}
}