> For the complete documentation index see https://domscan.net/llms.txt. Markdown versions of every docs page are available by appending .md to the page URL.

Source: https://domscan.net/ko/docs/social

# 소셜 핸들 가용성

DomScan API로 주요 소셜 미디어 플랫폼에서 사용자명의 가용성을 확인합니다.

주요 소셜 미디어 플랫폼에서 사용자명의 가용성을 확인합니다.

GET /v1/social

#### 쿼리 매개변수

| 매개변수 | 유형 | 설명 |
| --- | --- | --- |
| handle 필수 | string | 확인할 사용자 이름/핸들 |
| platforms | string | 확인할 플랫폼 목록을 쉼표로 구분해 입력합니다(기본값: 지원되는 모든 플랫폼) |
| resources | string | 선택 사항인 리소스 유형을 쉼표로 구분해 입력합니다. platforms를 생략하면 지정한 리소스만 확인합니다. |

#### 예제 응답

```json
{
                "handle": "mycompany",
                "availability": {
                "github": { "available": false, "profile_url": "https://github.com/mycompany", "checked": true, "requested": true, "method": "official_api", "confidence": "high" },
                "reddit": { "available": true, "profile_url": null, "checked": true, "requested": true, "method": "public_endpoint", "confidence": "high" },
                "youtube": { "available": true, "profile_url": null, "checked": true, "requested": true, "method": "public_profile", "confidence": "high" }
                },
                "resources": {},
                "resource_summary": {
                "requested_count": 0,
                "checked_count": 0,
                "present_count": 0,
                "absent_count": 0,
                "unknown_count": 0,
                "cached_count": 0,
                "determinacy_rate": 0
                },
                "summary": {
                "available_count": 2,
                "unavailable_count": 1,
                "unknown_count": 0
                },
                "summary_v2": {
                "requested_count": 3,
                "checked_count": 3,
                "available_count": 2,
                "unavailable_count": 1,
                "unknown_count": 0,
                "not_supported_count": 0,
                "determinacy_rate": 1
                }
                }
```

#### 응답 필드

| 필드 | 유형 |
| --- | --- |
| `handle` | string |
| `checked_at` | string |
| `availability` | object |
| `resources` | object |
| `resource_summary` | object |
| `resource_summary.requested_count` | integer |
| `resource_summary.checked_count` | integer |
| `resource_summary.present_count` | integer |
| `resource_summary.absent_count` | integer |
| `resource_summary.unknown_count` | integer |
| `resource_summary.cached_count` | integer |
| `resource_summary.determinacy_rate` | number |
| `summary` | object |
| `summary.available_count` | integer |
| `summary.unavailable_count` | integer |
| `summary.unknown_count` | integer |
| `summary_v2` | object |
| `summary_v2.requested_count` | integer |
| `summary_v2.checked_count` | integer |
| `summary_v2.available_count` | integer |
| `summary_v2.unavailable_count` | integer |
| `summary_v2.unknown_count` | integer |
| `summary_v2.not_supported_count` | integer |
| `summary_v2.determinacy_rate` | number |
| `platform_summary` | object |
| `platform_summary.requested_count` | integer |
| `platform_summary.checked_count` | integer |
| `platform_summary.available_count` | integer |
| `platform_summary.unavailable_count` | integer |
| `platform_summary.unknown_count` | integer |
| `platform_summary.not_supported_count` | integer |
| `platform_summary.cached_count` | integer |
| `platform_summary.high_confidence_count` | integer |
| `platform_summary.live_platform_count` | integer |
| `platform_summary.experimental_count` | integer |
| `platform_summary.blocked_count` | integer |
| `platform_summary.beta_limited_count` | integer |
| `platform_summary.determinacy_rate` | number |
| `platform_summary.method_counts` | object |
| `platform_summary.source_counts` | object |
| `beta_notice` | string |
| `meta` | object |
| `meta.served_by` | string |
| `meta.supported_platforms[]` | string[] |
| `meta.supported_resources[]` | string[] |
| `meta.unsupported_platforms[]` | string[] |
| `meta.latency_ms` | integer |

**플랫폼 리소스**

엔드포인트를 변경하지 않고 리포지토리, 서브레딧, Discord 초대, Substack 프로필, 연합 계정처럼 범위가 지정된 ID를 확인합니다.

```bash
curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/social?handle=github%2Fdocs&resources=github%3Arepository"
```

**소셜 미디어 핸들 일괄 확인**

예. 선택 사항인 플랫폼 목록과 함께 최대 10개의 핸들을 POST /v1/social/bulk로 보내세요. 일괄 확인에는 개별 확인과 동일한 핸들당 크레딧 요금이 적용됩니다.

```bash
curl -X POST "https://domscan.net/v1/social/bulk" \
  -H "X-API-Key: $DOMSCAN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"handles":["mycompany","myproduct"],"platforms":["github","reddit","youtube"]}'
```

POST /v1/social/bulk 크레딧: 2/item

#### 쿼리 매개변수

| 매개변수 | 유형 | 필수 |
| --- | --- | --- |
| dry_run | string 허용된 값 `true` | 선택 사항 |

#### 본문 매개변수

| 매개변수 | 유형 | 필수 |
| --- | --- | --- |
| handles | string[] | 필수 |
| platforms | string[] | 선택 사항 |
| resources | string[] | 선택 사항 |

#### 응답 필드

| 필드 | 유형 |
| --- | --- |
| `results[]` | unknown[] |
| `summary` | object |
| `summary.total` | integer |
| `summary.succeeded` | integer |
| `summary.failed` | integer |
| `beta_notice` | string |
| `meta` | object |
| `meta.served_by` | string |
| `meta.platforms[]` | string[] |
| `meta.resources[]` | string[] |
| `meta.max_handles` | integer |
| `meta.credits_per_handle` | integer |
| `meta.credits_required` | integer |
| `meta.latency_ms` | integer |

#### 예제 요청

```bash
curl -X POST "https://domscan.net/v1/social/bulk" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $DOMSCAN_API_KEY" \
  -d '{
  "handles": [
    "mycompany",
    "myproduct"
  ],
  "platforms": [
    "github",
    "reddit",
    "youtube"
  ]
}'
```

```javascript
const response = await fetch("https://domscan.net/v1/social/bulk", {
  method: "POST",
  headers: { "X-API-Key": process.env.DOMSCAN_API_KEY, "Content-Type": "application/json" },
  body: JSON.stringify({
    "handles": [
      "mycompany",
      "myproduct"
    ],
    "platforms": [
      "github",
      "reddit",
      "youtube"
    ]
  }),
});
const data = await response.json();
console.log(data);
```

```python
import os
import requests

response = requests.post(
    "https://domscan.net/v1/social/bulk",
    headers={"X-API-Key": os.environ["DOMSCAN_API_KEY"]},
    json={
        "handles": [
            "mycompany",
            "myproduct",
        ],
        "platforms": [
            "github",
            "reddit",
            "youtube",
        ],
    },
)
print(response.json())
```

```go
package main

import (
	"fmt"
	"io"
	"net/http"
	"os"
	"strings"
)

func main() {
	body := strings.NewReader(`{
	  "handles": [
	    "mycompany",
	    "myproduct"
	  ],
	  "platforms": [
	    "github",
	    "reddit",
	    "youtube"
	  ]
	}`)
	req, err := http.NewRequest(http.MethodPost, "https://domscan.net/v1/social/bulk", body)
	if err != nil {
		panic(err)
	}
	req.Header.Set("X-API-Key", os.Getenv("DOMSCAN_API_KEY"))
	req.Header.Set("Content-Type", "application/json")

```ruby
require "json"
require "net/http"

uri = URI("https://domscan.net/v1/social/bulk")
request = Net::HTTP::Post.new(uri)
request["X-API-Key"] = ENV.fetch("DOMSCAN_API_KEY")
request["Content-Type"] = "application/json"
request.body = JSON.generate({
  "handles" => [
    "mycompany",
    "myproduct"
  ],
  "platforms" => [
    "github",
    "reddit",
    "youtube"
  ]
})

#### 예제 응답

```json
{
  "results": [
    {
      "handle": "mycompany",
      "availability": {
        "github": {
          "available": false,
          "profile_url": "https://github.com/mycompany",
          "checked": true,
          "requested": true,
          "method": "official_api",
          "confidence": "high"
        }
      },
      "resources": {},
      "resource_summary": {
        "requested_count": 0,
        "checked_count": 0,
        "present_count": 0,
        "absent_count": 0,
        "unknown_count": 0,
        "cached_count": 0,
        "determinacy_rate": 0
      },
      "summary": {
        "available_count": 0,
        "unavailable_count": 1,
        "unknown_count": 0
      },
      "checked_at": "2026-07-09T20:45:00.000Z"
    },
    {
      "handle": "myproduct",
      "availability": {
        "github": {
          "available": true,
          "profile_url": null,
          "checked": true,
          "requested": true,
          "method": "official_api",
          "confidence": "high"
        }
      },
      "resources": {},
      "resource_summary": {
        "requested_count": 0,
        "checked_count": 0,
        "present_count": 0,
        "absent_count": 0,
        "unknown_count": 0,
        "cached_count": 0,
        "determinacy_rate": 0
      },
      "summary": {
        "available_count": 1,
        "unavailable_count": 0,
        "unknown_count": 0
      },
      "checked_at": "2026-07-09T20:45:00.000Z"
    }
  ],
  "summary": {
    "total": 2,
    "succeeded": 2,
    "failed": 0
  },
  "beta_notice": "Social handle checks are in beta; verify critical results directly.",
  "meta": {
    "served_by": "pop=MAD country=ES",
    "platforms": [
      "github"
    ],
    "resources": [],
    "max_handles": 10,
    "credits_per_handle": 2,
    "credits_required": 4,
    "latency_ms": 420
  }
}
```

#### HTTP 상태 코드

- `200` 성공
- `400` 잘못된 요청
- `401` 인증되지 않음
- `402` 결제 필요
- `409` HTTP 409
- `422` HTTP 422
- `429` 요청 과다

GET /v1/social/info 크레딧: 0

#### 응답 필드

| 필드 | 유형 |
| --- | --- |
| `endpoint` | string |
| `description` | string |
| `parameters` | object |
| `bulk` | object |
| `bulk.endpoint` | string |
| `bulk.method` | string |
| `bulk.max_handles` | integer |
| `bulk.credits_per_handle` | integer |
| `bulk.pricing_formula` | string |
| `bulk.bulk_discount` | boolean |
| `bulk.invalid_handles_charged` | boolean |
| `bulk.partial_results` | boolean |
| `bulk.parameters` | object |
| `bulk.example_request` | object |
| `platforms` | object |
| `platforms.supported[]` | string[] |
| `platforms.coming_soon[]` | string[] |
| `platforms.experimental[]` | string[] |
| `platforms.planned[]` | string[] |
| `platforms.blocked[]` | string[] |
| `platforms.details[]` | object[] |
| `platforms.details[]` | object |
| `platforms.details[].id` | string |
| `platforms.details[].display_name` | string |
| `platforms.details[].aliases[]` | string[] |
| `platforms.details[].category` | string |
| `platforms.details[].tier` | integer |
| `platforms.details[].status` | string |
| `platforms.details[].method` | string |
| `platforms.details[].confidence` | string |
| `platforms.details[].logo_key` | string |
| `platforms.details[].profile_url_template` | string \| null |
| `platforms.details[].docs_anchor` | string |
| `platforms.details[].caveat_codes[]` | string[] |
| `platforms.details[].cache_ttl_s` | object |
| `platforms.details[].cache_ttl_s.available` | integer |
| `platforms.details[].cache_ttl_s.taken` | integer |
| `platforms.details[].cache_ttl_s.unknown` | integer |
| `platforms.details[].cache_ttl_s.rate_limited` | integer |
| `platforms.details[].handle_rules` | object |
| `platforms.details[].handle_rules.min_length` | integer |
| `platforms.details[].handle_rules.max_length` | integer |
| `platforms.details[].handle_rules.description` | string |
| `resource_types` | object |
| `resource_types.supported[]` | string[] |
| `resource_types.details[]` | object[] |
| `resource_types.details[]` | object |
| `example_request` | string |
| `resource_example_request` | string |
| `example_response` | object |

#### 예제 요청

```bash
curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/social/info"
```

```javascript
const response = await fetch("https://domscan.net/v1/social/info", {
  headers: { "X-API-Key": process.env.DOMSCAN_API_KEY },
});
const data = await response.json();
console.log(data);
```

```python
import os
import requests

response = requests.get(
    "https://domscan.net/v1/social/info",
    headers={"X-API-Key": os.environ["DOMSCAN_API_KEY"]},
)
print(response.json())
```

```go
package main

func main() {
	req, err := http.NewRequest(http.MethodGet, "https://domscan.net/v1/social/info", nil)
	if err != nil {
		panic(err)
	}
	req.Header.Set("X-API-Key", os.Getenv("DOMSCAN_API_KEY"))

```ruby
require "json"
require "net/http"

uri = URI("https://domscan.net/v1/social/info")
request = Net::HTTP::Get.new(uri)
request["X-API-Key"] = ENV.fetch("DOMSCAN_API_KEY")

#### 예제 응답

```json
{
  "endpoint": "/v1/social",
  "description": "Check if a username is available on supported social platforms.",
  "parameters": {
    "handle": {
      "type": "string",
      "required": true,
      "description": "Username to check"
    },
    "platforms": {
      "type": "string",
      "required": false,
      "description": "Comma-separated platform list",
      "example": "github,gitlab,reddit"
    },
    "resources": {
      "type": "string",
      "required": false,
      "description": "Comma-separated resource type list",
      "example": "github:repository"
    }
  },
  "bulk": {
    "endpoint": "/v1/social/bulk",
    "method": "POST",
    "max_handles": 10,
    "credits_per_handle": 2,
    "pricing_formula": "valid_handle_count * credits_per_handle",
    "bulk_discount": false,
    "invalid_handles_charged": false,
    "partial_results": true,
    "parameters": {
      "handles": {
        "type": "array",
        "required": true,
        "min_items": 1,
        "max_items": 10
      },
      "platforms": {
        "type": "array",
        "required": false
      },
      "resources": {
        "type": "array",
        "required": false
      }
    },
    "example_request": {
      "handles": [
        "mycompany",
        "myproduct"
      ],
      "platforms": [
        "github",
        "reddit",
        "youtube"
      ]
    }
  },
  "platforms": {
    "supported": [
      "github",
      "gitlab",
      "bitbucket",
      "devto",
      "huggingface",
      "dribbble",
      "soundcloud",
      "gumroad",
      "buymeacoffee",
      "substack",
      "itchio",
      "behance",
      "dockerhub",
      "hashnode",
      "rubygems",
      "hackernews",
      "reddit",
      "bluesky",
      "twitter",
      "instagram",
      "facebook",
      "threads",
      "pinterest",
      "snapchat",
      "telegram",
      "twitch",
      "patreon",
      "tiktok",
      "youtube",
      "linkedin",
      "steam",
      "tumblr",
      "vimeo",
      "letterboxd",
      "linktree",
      "kick",
      "medium",
      "mastodon",
      "roblox",
      "minecraft",
      "chesscom",
      "lichess",
      "npm",
      "discord"
    ],
    "coming_soon": [],
    "experimental": [],
    "planned": [],
    "blocked": [],
    "details": [
      {
        "id": "github",
        "display_name": "GitHub",
        "aliases": [
          "github"
        ],
        "category": "developer",
        "tier": 0,
        "status": "live",
        "method": "official_api",
        "confidence": "high",
        "logo_key": "github",
        "profile_url_template": "https://github.com/{handle}",
        "docs_anchor": "github",
        "caveat_codes": [],
        "cache_ttl_s": {
          "available": 300,
          "taken": 3600,
          "unknown": 60,
          "rate_limited": 60
        },
        "handle_rules": {
          "min_length": 1,
          "max_length": 39,
          "description": "1-39 chars, alphanumeric and hyphens, cannot start/end with hyphen"
        }
      }
    ]
  },
  "resource_types": {
    "supported": [
      "reddit:subreddit",
      "discord:invite",
      "github:repository",
      "gitlab:project",
      "dockerhub:repository",
      "activitypub:account",
      "substack:profile"
    ]
  },
  "example_request": "/v1/social?handle=myusername&platforms=github,gitlab,reddit",
  "resource_example_request": "/v1/social?handle=github/docs&resources=github:repository",
  "example_response": {
    "handle": "myusername",
    "checked_at": "2026-07-14T12:00:00Z",
    "availability": {
      "github": {
        "available": true,
        "profile_url": null,
        "checked": true,
        "requested": true
      },
      "reddit": {
        "available": false,
        "profile_url": "https://reddit.com/user/myusername",
        "checked": true,
        "requested": true
      },
      "gitlab": {
        "available": true,
        "profile_url": null,
        "checked": true,
        "requested": true
      }
    },
    "resources": {},
    "resource_summary": {
      "requested_count": 0,
      "checked_count": 0,
      "present_count": 0,
      "absent_count": 0,
      "unknown_count": 0,
      "cached_count": 0,
      "determinacy_rate": 0
    },
    "summary": {
      "available_count": 2,
      "unavailable_count": 1,
      "unknown_count": 0
    },
    "summary_v2": {
      "requested_count": 3,
      "checked_count": 3,
      "available_count": 2,
      "unavailable_count": 1,
      "unknown_count": 0,
      "not_supported_count": 0,
      "determinacy_rate": 1
    }
  }
}
```

#### HTTP 상태 코드

- `200` 성공
- `401` 인증되지 않음
- `429` 요청 과다

GET /v1/name-check 크레딧: 5

#### 쿼리 매개변수

| 매개변수 | 유형 | 필수 |
| --- | --- | --- |
| name | string | 필수 |
| tlds | string | 선택 사항 |
| platforms | string | 선택 사항 |
| packages | string | 선택 사항 |

#### 응답 필드

| 필드 | 유형 |
| --- | --- |
| `name` | string |
| `status` | string |
| `checked_at` | string |
| `verdict` | string |
| `score` | integer \| null |
| `determinacy` | integer |
| `summary` | object |
| `summary.com_available` | boolean \| null |
| `summary.domains` | object |
| `summary.domains.checked` | integer |
| `summary.domains.free` | integer |
| `summary.domains.taken` | integer |
| `summary.domains.unknown` | integer |
| `summary.handles` | object |
| `summary.handles.checked` | integer |
| `summary.handles.free` | integer |
| `summary.handles.taken` | integer |
| `summary.handles.unknown` | integer |
| `summary.packages` | object |
| `summary.packages.checked` | integer |
| `summary.packages.free` | integer |
| `summary.packages.taken` | integer |
| `summary.packages.unknown` | integer |
| `domains[]` | object[] |
| `domains[]` | object |
| `domains[].domain` | string |
| `domains[].tld` | string |
| `domains[].status` | string |
| `domains[].reason` | string \| null |
| `handles[]` | object[] |
| `handles[]` | object |
| `handles[].platform` | string |
| `handles[].status` | string |
| `handles[].url` | string \| null |
| `handles[].reason` | string \| null |
| `packages[]` | object[] |
| `packages[]` | object |
| `packages[].registry` | string |
| `packages[].name` | string |
| `packages[].status` | string |
| `packages[].url` | string \| null |
| `packages[].reason` | string \| null |
| `meta` | object |
| `meta.duration_ms` | integer |

#### 예제 요청

```bash
curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/name-check?name=acmeflow&tlds=com%2Cio%2Cai&platforms=github%2Cinstagram%2Ctiktok&packages=npm%2Cpypi"
```

```javascript
const response = await fetch("https://domscan.net/v1/name-check?name=acmeflow&tlds=com%2Cio%2Cai&platforms=github%2Cinstagram%2Ctiktok&packages=npm%2Cpypi", {
  headers: { "X-API-Key": process.env.DOMSCAN_API_KEY },
});
const data = await response.json();
console.log(data);
```

```python
import os
import requests

response = requests.get(
    "https://domscan.net/v1/name-check?name=acmeflow&tlds=com%2Cio%2Cai&platforms=github%2Cinstagram%2Ctiktok&packages=npm%2Cpypi",
    headers={"X-API-Key": os.environ["DOMSCAN_API_KEY"]},
)
print(response.json())
```

```go
package main

import (
	"fmt"
	"io"
	"net/http"
	"os"
)

func main() {
	req, err := http.NewRequest(http.MethodGet, "https://domscan.net/v1/name-check?name=acmeflow&tlds=com%2Cio%2Cai&platforms=github%2Cinstagram%2Ctiktok&packages=npm%2Cpypi", nil)
	if err != nil {
		panic(err)
	}
	req.Header.Set("X-API-Key", os.Getenv("DOMSCAN_API_KEY"))

	resp, err := http.DefaultClient.Do(req)
	if err != nil {
		panic(err)
	}
	defer resp.Body.Close()

	data, err := io.ReadAll(resp.Body)
	if err != nil {
		panic(err)
	}
	fmt.Println(resp.Status, string(data))
}
```

```ruby
require "json"
require "net/http"

uri = URI("https://domscan.net/v1/name-check?name=acmeflow&tlds=com%2Cio%2Cai&platforms=github%2Cinstagram%2Ctiktok&packages=npm%2Cpypi")
request = Net::HTTP::Get.new(uri)
request["X-API-Key"] = ENV.fetch("DOMSCAN_API_KEY")

response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
  http.request(request)
end
puts JSON.pretty_generate(JSON.parse(response.body))
```

#### 예제 응답

```json
{
  "name": "acmeflow",
  "status": "ok",
  "checked_at": "2026-10-13T18:00:00.000Z",
  "verdict": "mostly_available",
  "score": 80,
  "determinacy": 100,
  "summary": {
    "com_available": false,
    "domains": {
      "checked": 2,
      "free": 1,
      "taken": 1,
      "unknown": 0
    },
    "handles": {
      "checked": 2,
      "free": 2,
      "taken": 0,
      "unknown": 0
    },
    "packages": {
      "checked": 1,
      "free": 1,
      "taken": 0,
      "unknown": 0
    }
  },
  "domains": [
    {
      "domain": "acmeflow.com",
      "tld": "com",
      "status": "taken",
      "reason": null
    },
    {
      "domain": "acmeflow.io",
      "tld": "io",
      "status": "available",
      "reason": null
    }
  ],
  "handles": [
    {
      "platform": "github",
      "status": "available",
      "url": null,
      "reason": null
    },
    {
      "platform": "instagram",
      "status": "available",
      "url": null,
      "reason": null
    }
  ],
  "packages": [
    {
      "registry": "npm",
      "name": "acmeflow",
      "status": "not_found",
      "url": null,
      "reason": "similar_name_rules"
    }
  ],
  "meta": {
    "duration_ms": 4210
  }
}
```

#### HTTP 상태 코드

- `200` 성공
- `400` 잘못된 요청
- `401` 인증되지 않음
- `402` 결제 필요
- `429` 요청 과다
