튜토리얼
Grok 4.7 API 사용법? 5분 만에 첫 호출 실행하기
xAI가 코딩 및 agentic 작업을 겨냥한 텍스트 모델: OpenAI Chat Completions 프로토콜, 네 단계 추론, JSON 출력과 도구 호출, HiAPI 가격 $0.84/$2.52, 바로 실행 가능한 curl과 Python 예제 포함
TL;DR
- Grok 4.7은 xAI가 코딩 및 agentic 작업을 겨냥한 텍스트 모델이며 HiAPI에 출시되었습니다. 모델 페이지 열기에서 바로 대화할 수 있고, 신규 사용자 가입 시 200 포인트를 지급합니다.
- 플랫폼 가격 $0.84 입력 / $2.52 출력(1M tokens당, 캐시 읽기 $0.21)으로 공식 가격의 약 58% 할인입니다. 2K 입력 + 1K 출력 요청 한 번은 약 $0.0042이며, 총 3K token의 중간 규모 요청(약 $0.0084/회) 기준으로 $10이면 약 1200회 실행할 수 있습니다.
- 가장 빠른 호출:
POST https://api.hiapi.ai/v1/chat/completions,model에grok-4.7을 쓰면 되며, 기존 OpenAI SDK 코드에서 base_url과 model 두 값만 바꾸면 됩니다.
Grok 4.7이란 무엇이고 무엇이 새로운가
2026-09-21에 출시된 Grok 4.7은 xAI의 현재 기본 권장 모델로, 코딩, agentic 작업, 지식 작업을 주력으로 합니다. 공식 자체 보고 기준 Terminal-Bench 4.0 점수는 4.6의 20.3%에서 38.0%로 거의 두 배가 되었습니다(자체 보고 기준). 호출하는 입장에서 주목할 변화는 네 가지입니다:
- 코딩과 agentic이 주력 시나리오: 공식적으로 Cursor, GitHub Copilot 같은 코딩 도구에 연동했으며, 장기 작업 계획 능력이 이 버전의 핵심입니다.
- 네 단계 추론:
reasoning_effort는 low / medium / high / xhigh를 지원하고 기본값은 high입니다. 사고 과정은reasoning_content필드로 별도 반환되어 표시 여부를 직접 결정할 수 있습니다. - JSON 객체 + 도구 호출:
response_format: {"type": "json_object"}로 유효한 JSON 출력을 강제하고, 함수 호출은 표준 OpenAI tools 형식을 사용하므로 구조화 추출과 agent 루프에 별도 래핑이 필요 없습니다. - 500K 컨텍스트: 한 번의 요청에 전체 코드베이스나 대용량 문서를 넣을 수 있습니다.
실제 결과물: pandas 데이터 분석 코드
아래 출력은 HiAPI에서 Grok 4.7로 실제 실행해 얻은 것입니다(전체 프롬프트는 아래 링크 참조). 작업은 이커머스 주문 데이터 분석으로, 월별 GMV, 사용자 누적 소비 Top 20, 신규 사용자 첫 주문 추이를 구하고 created_at이 문자열인 상황을 처리하는 것이었습니다. 모델은 18.5초 만에 완료했고 코드는 완전히 실행 가능하며 문자열 날짜 변환을 스스로 처리했습니다:
# ---------- 0. 날짜 처리: 문자열을 datetime으로 변환 ----------
df["created_at"] = pd.to_datetime(df["created_at"], errors="coerce")
df = df.dropna(subset=["created_at", "amount", "user_id"])
# 유효 주문만 집계 (실제 비즈니스에 맞게 status 값 조정)
df_valid = df[df["status"] == "paid"].copy()
# ---------- 1. 월별 GMV와 주문 수 ----------
df_valid["month"] = df_valid["created_at"].dt.to_period("M")
monthly = (
df_valid.groupby("month", as_index=False)
.agg(GMV=("amount", "sum"), order_count=("order_id", "count"))
.sort_values("month")
)
이번 실행은 입력 3440 tokens, 출력 1427 tokens로 플랫폼 가격 기준 약 $0.007입니다. 같은 결과를 원한다면 이 프롬프트로 모델 페이지에서 실행해 보기 →
두 가지 시작 경로
경로 1: 브라우저, 3단계, 코드 없음
- Grok 4.7 모델 페이지를 열고 로그인 또는 가입합니다(신규 사용자 200 포인트 지급).
- 대화 상자에 프롬프트를 붙여 넣습니다. 예를 들어 이 링크를 누르면 프롬프트가 자동으로 채워집니다.
- 바로 전송하면 실제 token 사용량에 따라 크레딧이 차감됩니다.
경로 2: API, 3단계, 애플리케이션 연동
- HiAPI 콘솔에서 API Key를 생성합니다.
- 아래 curl의
YOUR_HIAPI_API_KEY를 본인 Key로 바꾸고 실행합니다. model을grok-4.7로 고정하고messages를 비즈니스 입력으로 바꾸면 끝입니다.
curl: 첫 호출
curl https://api.hiapi.ai/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_HIAPI_API_KEY" \
-d '{
"model": "grok-4.7",
"messages": [
{"role": "system", "content": "You are a senior backend engineer."},
{"role": "user", "content": "Explain what a database connection pool is in two sentences."}
],
"reasoning_effort": "high",
"max_tokens": 2000
}'
응답에서 choices[0].message.content는 본문, reasoning_content는 사고 과정이며, usage.completion_tokens_details.reasoning_tokens는 이번 추론에 사용한 token 수를 따로 알려 줍니다. 스트리밍을 원하면 "stream": true를 추가하고 SSE로 파싱하면 됩니다.
Python: 비스트리밍 + 스트리밍
비스트리밍은 requests만 있으면 충분합니다:
import requests
resp = requests.post(
"https://api.hiapi.ai/v1/chat/completions",
headers={"Authorization": "Bearer YOUR_HIAPI_API_KEY"},
json={
"model": "grok-4.7",
"messages": [
{"role": "user", "content": "Write a Python function that merges two sorted lists into one sorted list."}
],
"reasoning_effort": "medium",
"max_tokens": 4000,
},
timeout=120,
)
resp.raise_for_status()
data = resp.json()
print(data["choices"][0]["message"]["content"])
스트리밍에서 주의할 점 두 가지: 먼저 오는 delta.reasoning_content는 사고 과정이고 뒤에 오는 delta.content가 본문입니다. usage는 마지막 chunk에만 있으며(choices가 비어 있음), data: [DONE]으로 끝납니다:
import json
import requests
with requests.post(
"https://api.hiapi.ai/v1/chat/completions",
headers={"Authorization": "Bearer YOUR_HIAPI_API_KEY"},
json={
"model": "grok-4.7",
"messages": [{"role": "user", "content": "Plan a Redis-based online presence system."}],
"reasoning_effort": "high",
"stream": True,
},
stream=True,
timeout=300,
) as resp:
resp.raise_for_status()
for line in resp.iter_lines(decode_unicode=True):
if not line or not line.startswith("data:"):
continue
payload = line[len("data:"):].strip()
if payload == "[DONE]":
break
chunk = json.loads(payload)
if not chunk["choices"]:
print("\nusage:", chunk["usage"]) # 마지막 chunk에만 usage가 있음
continue
delta = chunk["choices"][0]["delta"]
if delta.get("reasoning_content"):
print(delta["reasoning_content"], end="", flush=True)
elif delta.get("content"):
print(delta["content"], end="", flush=True)
파라미터 표
| 필드 | 필수 | 값 | 설명 |
|---|---|---|---|
| model | 예 | grok-4.7 |
이 ID로 고정 |
| messages | 예 | OpenAI 형식 메시지 배열 | system / user / assistant / tool 역할 모두 지원 |
| reasoning_effort | 아니오 | low / medium / high / xhigh, 기본 high |
추론 강도; 사고 과정은 reasoning_content로 반환 |
| max_tokens | 아니오 | 양의 정수 | 출력 상한, reasoning tokens 포함, 너무 작게 설정하면 사고가 먼저 잘림 |
| response_format | 아니오 | {"type": "json_object"} |
유효한 JSON 출력 강제, 구조화 추출에 적합 |
| tools | 아니오 | OpenAI function calling 배열 | 도구 호출, 다중 턴 tool 결과 반환 지원 |
| stream | 아니오 | true / false, 기본 false |
SSE 스트리밍; usage는 마지막 chunk에 있음 |
마주치게 될 오류
다른 모델에서 코드를 이전할 때 가장 흔히 밟는 함정: grok-4.7은 frequency_penalty, presence_penalty, stop 세 파라미터를 지원하지 않으며 포함하면 바로 400이 납니다. reasoning_effort는 low / medium / high / xhigh 네 단계만 인정하므로 잘못된 값을 쓰면 인터페이스가 reasoning_effort: is outside allowed values를 그대로 반환합니다. 프로토콜 밖의 필드도 전달할 수 없으며, 저희가 탐색할 때 미등록 필드를 추가하자 인터페이스가 request.zz: unregistered public parameter를 반환했습니다.
해결 방법은 간단합니다. 이 세 파라미터를 삭제하고 단계 값을 올바르게 쓴 뒤 다시 보내면 됩니다. 다른 4xx는 먼저 error.code를 확인한 뒤 코드를 수정하고, 추측하지 마세요.
출시 전 주의사항
- reasoning tokens는 출력으로 과금됩니다.
high단계의 한 답변에는 수만 token의 사고 과정이 포함될 수 있고, 이는 $2.52/M로 청구됩니다. 간단한 작업에서는reasoning_effort를low또는medium으로 낮추는 것이 가장 직접적인 비용 절감 스위치입니다.usage.completion_tokens_details.reasoning_tokens로 이 수치를 따로 확인할 수 있습니다. - 200K 전체 요청은 가격 단계가 바뀝니다. prompt가 200K tokens(계약 임계값 199,999)에 도달하면 요청 전체가 장문 가격으로 계산됩니다: 입력 $1.68 / 출력 $5.04 / 캐시 읽기 $0.42로 일반 단계의 두 배입니다. 일반 트래픽은 200K 이하로 유지하고, 전체 코드베이스를 무작정 넣지 마세요.
- 캐시 읽기는 정가의 4분의 1. 반복되는 긴 system prompt와 다중 턴 대화 접두사는 자동으로 캐시에 적중되며, 캐시 읽기는 $0.21/M(정가 $0.84/M의 4분의 1)입니다. agent 루프를 만들 때 접두사를 안정적으로 유지하면 청구서가 눈에 띄게 좋아집니다.
자주 묻는 질문
Grok 4.7과 Grok 4.6 중 무엇을 선택해야 하나요? 플랫폼 가격은 완전히 같습니다($0.84/$2.52). 복잡한 코딩과 agentic 작업에는 4.7(공식 기본 권장)을, 간단한 작업에서 token을 아끼고 싶다면 4.6을 유지해도 됩니다. 자세한 비교는 Grok 4.7 vs Grok 4.6을 참조하세요.
스트리밍 출력을 지원하나요?
지원합니다, 표준 SSE입니다. usage는 마지막 chunk에서만 반환되며 앞선 chunk의 usage는 모두 비어 있습니다.
reasoning_content는 추가 요금이 있나요? 별도 스위치를 켤 필요는 없지만, 그것이 생성하는 reasoning tokens는 출력 사용량에 포함되어 출력 가격으로 과금되므로 단계가 높을수록 청구서가 커집니다.
컨텍스트 500K는 입력 상한인가요? 500K는 입력과 출력을 합친 창입니다. 입력이 200K에 가까워지면 장문 가격이 적용되며, 자세한 내용은 위의 「출시 전 주의사항」을 참조하세요.
더 깊이 알아보려면: 가격 계산은 Grok 4.7 API 얼마인가, 바로 복사할 수 있는 5가지 시나리오 프롬프트는 Grok 4.7 프롬프트 모음, 이전 세대 사용법은 Grok 4.6 모델 페이지를 참조하세요. 위의 pandas 프롬프트를 복사해 모델 페이지에서 첫 호출을 실행해 보세요.
관련 글
모든 아티클 보기 →-
튜토리얼
Recraft Creative Upscale 사례: 풍경과 수채화 업스케일
통나무집, 호수, 수채화 마을의 텍스처 변화를 살펴보고 전체 결과와 미리보기를 구분하며 재화 디테일을 점검하세요.
-
튜토리얼
OpenAI API 키 무효: 401, 환경 변수 및 프로젝트 설정 점검
OpenAI 401, 403, 429를 구분하고 환경 변수, 조직 및 프로젝트 설정을 점검하며 읽기 전용 요청으로 자격 증명을 검증하세요.
-
튜토리얼
Kling 4.0 프롬프트 모음: 6가지 장면에서 바로 복사해 영상 만들기
이커머스 제품, 음식, 여행 풍경, 일상 장면, 소리가 있는 빈 풍경, 이미지→영상까지, 각 장면마다 실제 결과물과 전체 프롬프트, 원클릭 자동 입력 링크가 있습니다.