n8n에서 Claude API 연결하기 — HTTP Request로 직접 호출하는 방법

“어? Claude 노드가 없네?”

n8n으로 자동화 워크플로우를 만들다가 Claude를 연결하려고 했습니다. 당연히 공식 노드가 있을 줄 알았는데, 아무리 찾아도 보이지 않더라고요. Community 노드를 뒤져봐도 버전 문제로 설치가 안 되거나, 설치해도 제대로 작동하지 않았습니다. 결국 HTTP Request 노드로 직접 API를 호출하기로 했는데, 이게 생각보다 삽질의 연속이었습니다. 422 에러, 400 에러를 번갈아가며 만나고 나서야 겨우 성공했죠.

n8n에서 Claude API 연결하기 — HTTP Request로 직접 호출하는 방법 관련 이미지
n8n에서 Claude API 연결하기 — HTTP Request로 직접 호출하는 방법 관련 이미지

왜 이런 문제가 생겼을까

n8n은 정말 다양한 서비스와 연동할 수 있는 자동화 도구입니다. Slack, Google Sheets, OpenAI 같은 인기 서비스들은 공식 노드로 클릭 몇 번이면 연결됩니다.
그런데 Anthropic의 Claude는 상황이 좀 다릅니다.

n8n 공식 노드 목록에 Claude가 아직 포함되어 있지 않습니다. Community에서 만든 비공식 노드가 있긴 하지만,
n8n 버전이 올라가면서 호환성 문제가 생기는 경우가 많습니다. 설치했는데 노드가 보이지 않거나, 실행하면 알 수 없는 에러가 뜨는 식이죠.

이럴 때 가장 확실한 방법은 HTTP Request 노드를 사용하는 겁니다. API 문서만 잘 따라가면 어떤 서비스든 연결할 수 있고,
n8n 버전이 올라가도 크게 영향을 받지 않습니다. 조금 손이 많이 가지만, 한번 세팅해두면 오히려 더 안정적으로 돌아갑니다.

원인 파악

HTTP Request로 Claude API를 호출하려면 몇 가지 필수 요소를 정확히 맞춰줘야 합니다. 저는 처음에 두 가지 실수를 했습니다.

첫 번째는 anthropic-version 헤더를 빠뜨린 것입니다. Anthropic API는 버전 관리를 위해 이 헤더를 필수로 요구합니다. 없으면 422 에러가 발생합니다.
422 에러는 “요청 형식은 맞는데 내용이 처리 불가능하다”는 뜻인데, 처음 보면 뭐가 문제인지 감이 안 잡히죠.

두 번째는 Body에 불필요한 필드를 넣은 것입니다. 다른 API에서 쓰던 습관대로 temperature나 system 같은 필드를 넣었더니 400 에러가 났습니다.
Anthropic API는 예상치 못한 필드가 있으면 거부합니다. 기본적으로 model, max_tokens, messages 이 세 개만 넣으면 됩니다.

해결 방법

전체 과정을 단계별로 정리해 보겠습니다.

1단계: API 키 발급받기

console.anthropic.com에 접속해서 계정을 만들고 API 키를 발급받습니다. API Keys 메뉴에서 새 키를 생성하면 됩니다.
이 키는 한 번만 보여주니까 바로 복사해서 안전한 곳에 저장해두세요.

2단계: n8n에서 HTTP Request 노드 추가

워크플로우에 HTTP Request 노드를 추가합니다. 기본 설정은 다음과 같습니다.

  • Method: POST
  • URL: https://api.anthropic.com/v1/messages

3단계: Headers 설정

Headers 섹션에서 세 가지 헤더를 추가합니다. 이 중 하나라도 빠지면 에러가 납니다.

  • x-api-key: 발급받은 API 키
  • anthropic-version: 2023-06-01
  • content-type: application/json

4단계: Body 설정

Body Type을 JSON으로 선택하고, 딱 세 개의 필드만 넣습니다. 여기서 욕심내서 다른 필드를 추가하면 에러가 나니까 주의하세요.

5단계: 응답 파싱

Claude의 응답은 content 배열 안에 들어옵니다. 다음 노드에서 {{ $json.content[0].text }}로 텍스트만 뽑아서 사용하면 됩니다.

핵심 코드 / 설정값

실제로 n8n에 입력해야 하는 값들을 정리했습니다.

Headers:

x-api-key: sk-ant-api03-xxxxx (발급받은 키)
anthropic-version: 2023-06-01
content-type: application/json

Body (JSON):

{
  "model": "claude-opus-4-5",
  "max_tokens": 1000,
  "messages": [
    { "role": "user", "content": "여기에 프롬프트 입력" }
  ]
}

만약 이전 노드에서 넘어온 데이터를 프롬프트에 넣고 싶다면, n8n의 Expression 문법을 사용합니다.

{
  "model": "claude-opus-4-5",
  "max_tokens": 1000,
  "messages": [
    { "role": "user", "content": "{{ $json.news }}" }
    ]
}

응답에서 텍스트 추출:

{{ $json.content[0].text }}

이렇게 확인했다

설정을 마치고 노드를 실행해봤습니다. 처음에는 422 에러가 떴는데, anthropic-version 헤더를 추가하니까 해결됐습니다.
그 다음에는 400 에러가 났는데, Body에서 temperature 필드를 제거하니까 정상 작동했습니다.

성공하면 응답 데이터에 content 배열이 보이고, 그 안에 Claude가 생성한 텍스트가 들어있습니다.
role은 assistant로 표시되고, type은 text입니다. 여기서 content[0].text만 뽑아서 다음 노드로 넘기면 됩니다.

테스트할 때 팁이 하나 있습니다. max_tokens을 100 정도로 낮게 설정하고 간단한 프롬프트로 먼저 테스트하세요.
API 비용도 아끼고, 응답도 빨리 옵니다. 제대로 작동하는 걸 확인한 다음에 실제 값으로 바꾸면 됩니다.

정리하면

n8n에서 Claude API를 사용하려면 HTTP Request 노드로 직접 호출하는 게 가장 확실합니다. 핵심은 세 가지입니다.

  1. anthropic-version: 2023-06-01 헤더를 반드시 포함할 것
  2. Body에는 model, max_tokens, messages 세 개만 넣을 것
  3. 응답은 $json.content[0].text로 파싱할 것

한번 세팅해두면 뉴스 요약, 이메일 작성, 데이터 분석 등 다양한 자동화 워크플로우에 Claude를 붙일 수 있습니다.
공식 노드가 없다고 포기하지 마세요. HTTP Request만 있으면 어떤 API든 연결할 수 있습니다.

자주 묻는 질문 (FAQ)

Q. 422 에러가 계속 나는데 어떻게 해야 하나요?

A. 대부분 anthropic-version 헤더가 빠졌을 때 발생합니다. Headers 섹션에서 anthropic-version: 2023-06-01이 제대로 들어갔는지 확인하세요.
오타가 있어도 같은 에러가 나니까 철자도 꼼꼼히 체크해보세요.

Q. 다른 Claude 모델도 사용할 수 있나요?

A. 네, Body의 model 필드 값만 바꾸면 됩니다. claude-sonnet-4-20250514이나 claude-3-5-haiku-20241022 등 Anthropic에서 제공하는 모델명을 넣으면 됩니다.
모델별로 가격과 성능이 다르니까 용도에 맞게 선택하세요.

Q. system 프롬프트는 어떻게 넣나요?

A. system 필드를 Body에 추가하면 됩니다. 단, 최상위 레벨에 넣어야 합니다.
{"model": "...", "max_tokens": 1000, "system": "당신은 뉴스 요약 전문가입니다.", "messages": [...]} 이런 식으로요.
기본 3개 필드 외에 system은 허용되는 옵션 필드입니다.

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤