GraphQL API 사용하기
Edgelink GraphQL 스키마와 프로그래밍 방식의 링크 관리 인증 방식을 알아봅니다.
GraphQL API 사용하기
Edgelink의 핵심 데이터 모델은 GraphQL 스키마로 정의되어 있습니다. 이 문서에서는 GraphQL 스키마의 주요 타입과 함께, API Key를 사용해 프로그래밍 방식으로 링크를 관리하는 방법을 설명합니다.
시작하기 전에
- API Key 관리 문서를 먼저 읽고 API Key를 발급받으세요.
- 시작하기에서 워크스페이스가 생성되어 있어야 합니다.
엔드포인트
| 구분 | URL |
|---|---|
| 웹 대시보드 | https://app.edgelink.me |
| GraphQL 엔드포인트 | https://api.edgelink.me/api/graphql |
| MCP 엔드포인트 | https://api.edgelink.me/mcp |
API 인증은 어떻게 하나요?
Edgelink의 API Key 인증은 MCP 엔드포인트(/mcp)를 통해 제공됩니다. API Key는 el_ 접두사로 시작하며, Authorization: Bearer 헤더로 전달합니다.
Authorization: Bearer el_aBcDeFgHiJkLmNoPqRsTuVwXyZ0123456789abcd
참고: GraphQL 엔드포인트(
/api/graphql)는 웹 대시보드에서 사용하는 스키마 정의입니다. API Key를 사용한 프로그래밍 방식의 링크 생성·조회·분석은 MCP 서버의 도구를 통해 수행하는 것을 권장합니다. MCP는 JSON-RPC 2.0 기반 HTTP 호출이므로 curl로도 직접 호출할 수 있습니다.
GraphQL 스키마 개요
링크 관리와 관련된 주요 타입은 다음과 같습니다. 모든 작업은 워크스페이스 ID(wid)를 기준으로 동작합니다.
링크 생성 입력 타입
input CreateShortenedLinkInput {
originalUrl: String!
shortenedKey: String!
domainId: ID!
expiresAt: Date
expirationUrl: String
note: String
tagIds: [ID!]
folderId: ID
urlMetadata: UrlMetadataInput
isCustomPreview: Boolean
password: String
googleOAuthProtection: Boolean
}
링크 생성 뮤테이션
type Mutation {
createShortenedLink(wid: ID!, createShortenedLinkInput: CreateShortenedLinkInput!): CreateShortenedLinkPayload!
}
type CreateShortenedLinkPayload {
shortenedLinkEdge: ShortenedLinkEdge!
onboardingProgress: OnboardingProgress!
workspace: Workspace!
}
링크 조회 쿼리
type Query {
shortenedLinks(
wid: ID!
first: Int!
after: String
filter: ShortenedLinkFilter
sortBy: ShortenedLinkSortBy
): ShortenedLinkConnection!
shortenedLink(wid: ID!, linkId: ID!): ShortenedLink!
}
type ShortenedLink {
id: ID!
originalUrl: String!
shortenedKey: String!
clickCount: Int!
isActive: Boolean!
isArchived: Boolean!
expiresAt: Date
note: String
createdAt: Date!
updatedAt: Date!
}
클릭 분석 쿼리
type Query {
workspaceAnalytics(wid: ID!, dateRange: DateRangeInput!): WorkspaceAnalyticsSummary!
shortenedLinkAnalytics(wid: ID!, linkId: ID!, dateRange: DateRangeInput!): ShortenedLinkAnalytics!
}
input DateRangeInput {
startDate: Date!
endDate: Date!
}
type ShortenedLinkAnalytics {
linkId: ID!
totalClicks: Int!
uniqueClicks: Int!
clicksByDate: [ClicksByDate!]!
countryDistribution: [CountryStats!]!
deviceDistribution: [DeviceStats!]!
browserDistribution: [BrowserStats!]!
referrerDistribution: [ReferrerStats!]!
}
참고: 분석 스키마의
unique*필드는 Pro 플랜 전용입니다. Free 또는 Hobby 플랜에서 해당 필드를 요청하면FEATURE_NOT_AVAILABLE에러로 차단됩니다.
프로그래밍 방식 호출 예제 (MCP HTTP)
API Key를 사용한 프로그래밍 방식 호출은 MCP 엔드포인트로 JSON-RPC 2.0 요청을 보내는 방식입니다. 아래는 단축 링크를 생성하는 create_short_link 도구를 curl로 직접 호출하는 예제입니다.
링크 생성 요청
curl -X POST https://api.edgelink.me/mcp \
-H "Authorization: Bearer el_aBcDeFgHiJkLmNoPqRsTuVwXyZ0123456789abcd" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "create_short_link",
"arguments": {
"url": "https://example.com/landing",
"custom_key": "spring-event"
}
}
}'
응답 예시
MCP 도구는 사람이 읽을 수 있는 텍스트 콘텐츠를 반환합니다.
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"content": [
{
"type": "text",
"text": "단축 링크가 생성되었습니다!\n\n단축 URL: https://edgelink.me/spring-event\n원본 URL: https://example.com/landing\n링크 ID: clxxxxxxxxxxxxxxxxxxxxxxx"
}
]
}
}
링크 목록 조회
curl -X POST https://api.edgelink.me/mcp \
-H "Authorization: Bearer el_aBcDeFgHiJkLmNoPqRsTuVwXyZ0123456789abcd" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "list_links",
"arguments": { "first": 10 }
}
}'
클릭 분석 조회
curl -X POST https://api.edgelink.me/mcp \
-H "Authorization: Bearer el_aBcDeFgHiJkLmNoPqRsTuVwXyZ0123456789abcd" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "get_link_analytics",
"arguments": {
"link_id": "clxxxxxxxxxxxxxxxxxxxxxxx",
"start_date": "2026-05-01",
"end_date": "2026-05-18"
}
}
}'
API 호출이 실패하면 어떻게 처리하나요?
MCP 도구 호출 시 실패하면 결과 텍스트가 Error: 접두사로 시작합니다.
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"content": [
{
"type": "text",
"text": "Error: 사용 가능한 기본 도메인이 없습니다."
}
]
}
}
인증에 실패한 경우 HTTP 401과 함께 다음 응답을 받습니다.
{ "error": "Invalid API key" }
자주 발생하는 에러 상황은 다음과 같습니다.
| 상황 | 원인 및 해결 방법 |
|---|---|
Invalid API key (401) | API Key가 잘못되었거나 폐기되었습니다. 새 키를 발급받으세요. |
인증 컨텍스트를 찾을 수 없습니다. | API Key 헤더가 누락되었습니다. Authorization 헤더를 확인하세요. |
사용 가능한 기본 도메인이 없습니다. | 워크스페이스에 기본 도메인이 설정되어 있지 않습니다. |
| 할당량 초과 메시지 | 플랜의 링크 생성 한도를 초과했습니다. 플랜 업그레이드가 필요합니다. |
요청 제한: MCP 엔드포인트는 초당 5회, 분당 60회의 요청 제한이 적용됩니다. 대량 작업 시 링크 관리 API 레시피의 일괄 생성 패턴을 참고하세요.
다음 단계
- 링크 관리 API 레시피 - 캠페인 일괄 생성, UTM 링크, 통계 조회 실무 예제
- MCP 활용 레시피 - Claude 및 AI 에이전트를 통한 자동화
- API Key 관리 - API Key 발급 및 보안 권장 사항