---
title: "SNS API"
description: "Reddit, TikTok, YouTube, Instagram, Threads, LinkedIn, X를 하나의 오퍼레이션 세트와 하나의 소셜 스키마로 제공합니다."
---

SNS API는 일곱 개의 소셜 플랫폼을 **같은 오퍼레이션 8개와 하나의 스키마**로 제공합니다. 오퍼레이션
이름은 돌려주는 것을 가리키고, 무엇을 넘기느냐에 따라 무엇을 읽을지 정해집니다. TikTok 크리에이터와
YouTube 채널은 모두 `profile`입니다. 서브레딧의 게시물, 해시태그의 영상, 계정의 릴스는
모두 `posts`입니다. 한 플랫폼을 읽는 코드가 모든 플랫폼을 읽습니다.

```bash
curl "https://gateway.apinoa.com/v1/tiktok/posts?username=tiktok" -H "x-api-key: $APINOA_API_KEY"
curl "https://gateway.apinoa.com/v1/youtube/posts?username=@mkbhd&type=shorts" -H "x-api-key: $APINOA_API_KEY"
curl "https://gateway.apinoa.com/v1/reddit/posts?community=technology&sort=top" -H "x-api-key: $APINOA_API_KEY"
```

## 오퍼레이션

| 오퍼레이션 | 반환 | 넘기는 값에 따라 읽는 것 |
|---|---|---|
| `profile` | `Account` | 계정 하나: `username`(또는 `userId`) |
| `profiles` | `Page<Account>` | 계정 목록: 검색(`query`), 또는 계정의 팔로워/팔로잉 |
| `post` | `Post` | 게시물 하나: `id` |
| `posts` | `Page<Post>` | 게시물 목록: 계정의 게시물(`username`), 검색(`query`), `hashtag`, `community`, `sound`, `location`, `company`, `playlist`, 한 게시물과 관련된 게시물(`relatedTo`) — 또는 아무것도 넘기지 않으면 플랫폼의 인기 피드 |
| `comments` | `Page<Comment>` | `post`의 댓글, 한 `comment`의 답글, 또는 계정의 댓글 |
| `group` | `Group` | 커뮤니티, 해시태그, 사운드, 위치, 회사 하나 |
| `groups` | `Page<Group>` | 검색한 커뮤니티, 또는 계정의 재생목록·하이라이트·커뮤니티 |
| `media` | 미디어 파일 | 게시물의 미디어 파일 |

## 플랫폼별 지원 범위

| | profile | profiles | post | posts | comments | group | groups | media |
|---|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
| [Reddit](/docs/api-reference/reddit) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |
| [TikTok](/docs/api-reference/tiktok) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| [YouTube](/docs/api-reference/youtube) | ✓ | ✓ | ✓ | ✓ | ✓ | | ✓ | |
| [Instagram](/docs/api-reference/instagram) | ✓ | | ✓ | ✓ | ✓ | ✓ | ✓ | |
| [Threads](/docs/api-reference/threads) | ✓ | | ✓ | ✓ | ✓ | | | |
| [LinkedIn](/docs/api-reference/linkedin) | ✓ | | ✓ | ✓ | ✓ | ✓ | | |
| [X](/docs/api-reference/x) | ✓ | | ✓ | ✓ | | ✓ | | |

LinkedIn에는 다른 플랫폼에 없는 레코드인 `job`과 `jobs`도 있습니다. 각 플랫폼 페이지에 오퍼레이션마다
정확히 어떤 입력을 받는지 나와 있습니다.

## 입력

하나의 이름은 모든 플랫폼에서 같은 것을 뜻합니다.

| 입력 | 의미 |
|---|---|
| `username` | 계정 핸들(`@`, `u/`, `in/`은 있어도 없어도 됩니다) |
| `userId` | 계정 고유 id(TikTok secUid, YouTube UC… id, X/Threads 숫자 id). 조회가 필요한 플랫폼에서 조회 한 번을 절약합니다 |
| `id` | 오퍼레이션이 돌려주는 대상: 게시물 id나 shortcode, 채용 공고 id |
| `post`, `comment` | 댓글을 읽을 게시물(또는 댓글) |
| `query` | 키워드. 자동 완성은 `prefix` |
| `hashtag` `community` `sound` `location` `company` `playlist` | 게시물 — 또는 상세 정보 — 를 읽을 그룹 |
| `relatedTo` | 게시물. 그와 관련된 게시물을 돌려줍니다 |
| `type` | 소스의 어떤 목록인지: `reels`, `shorts`, `reposts`, `likes`, `followers`… |
| `sort` `period` `country` | 정렬, 기간, 지역 피드의 국가 |
| `include` | `ext` 아래에 붙는 추가 조회(Reddit 커뮤니티의 `rules`). 조회마다 과금됩니다 |
| `limit` | 페이지당 항목 수. 플랫폼이 허용하는 경우 |
| `cursor` | 다음 페이지 |

모든 식별자는 페이지 URL도 받습니다. 프로필, 게시물, 커뮤니티 링크를 id 자리에 그대로 붙여 넣으세요.
호출마다 소스는 하나만 넘기세요. 두 개를 넘기거나(소스가 필요한 오퍼레이션에서) 하나도 넘기지 않으면 선택지를 밝힌
`400 INVALID_PARAMS`로 응답합니다.

## 모든 곳에서 같은 것

- **형태.** 모든 오퍼레이션은 네 타입 — `Account`, `Post`, `Comment`, `Group` — 중 하나 또는 그
  `Page`를 돌려주며, [Response Schema](/docs/api-reference/sns/response-schema)에 설명되어 있습니다. 한
  플랫폼에만 있는 것(TikTok 사운드의 음악 id, Reddit 게시물의 점수)은 해당 객체의 `ext`에 있습니다.
- **페이지네이션.** 목록은 불투명한 `cursor`와 함께 응답합니다. 다음 페이지는 같은 오퍼레이션을
  `cursor`만 넘겨 호출하세요. 첫 호출에서 요청한 모든 것이 담겨 있습니다. `cursor`가 없으면 다음
  페이지가 없습니다.
- **없음은 0이 아닙니다.** 플랫폼이 숨긴 수는 `0`으로 보고하지 않고 생략합니다. 시각은
  UTC 기준 ISO 8601입니다.
- **가격.** 단위당 $0.001입니다. 대부분의 호출은 1단위이며, 더 비쌀 수 있는 경우는 각 오퍼레이션 페이지에 나와 있습니다.

## 에러

나머지 API와 같은 봉투와 코드를 씁니다. [Errors](/docs/errors)를 참고하세요. 비공개·삭제·연령
제한 상태의 계정, 게시물, 커뮤니티는 `404 NOT_FOUND`로 응답합니다. 플랫폼이 없는 페이지와 차단된 페이지를
똑같이 보여 주는 경우, 빈 결과가 아니라 에러로 응답합니다.

## 레퍼런스

- [Response Schema](/docs/api-reference/sns/response-schema): 모든 타입의 모든 필드
- [Errors](/docs/errors): 모든 에러 코드
