DocsAPI 활용GraphQL API 사용하기

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 레시피의 일괄 생성 패턴을 참고하세요.

다음 단계