curl Bearer 토큰: Authorization 헤더 보내는 법
curl에서 bearer 토큰은 $TOKEN이 확장되도록 큰따옴표로 감싼 Authorization: Bearer 헤더나 --oauth2-bearer로 보내세요. 401별 해결법도 담았습니다.

curl로 bearer 토큰을 보내려면 Authorization 헤더에 넣으세요. curl -H "Authorization: Bearer $TOKEN" https://api.example.com/... 형태입니다. 셸이 $TOKEN을 확장하도록 큰따옴표를 쓰고, Bearer와 토큰 사이에는 공백을 하나 두세요. curl에 내장된 대안으로 --oauth2-bearer "$TOKEN" 옵션도 있으며, 이때는 토큰만 넘기면 됩니다.
curl 옵션은 curl의 man 페이지와 everything curl에서, 셸 따옴표 규칙은 Bash 매뉴얼의 작은따옴표와 큰따옴표 페이지에서, 헤더 형식은 RFC 6750에서 인용했습니다. 모두 2026-09-28에 확인했습니다. Sume 예시는 인증 문서를 따르며, 401 메시지는 현재 API 코드에서 읽었습니다.
curl 명령에 bearer 토큰은 어떻게 넣나요?
토큰은 환경 변수에 두고 큰따옴표 안에서 참조하세요. RFC 6750은 이 헤더를 Bearer라는 단어, 공백 하나 이상, 그리고 토큰 순으로 정의하며, 클라이언트가 한 요청에서 토큰을 두 가지 이상의 방법으로 보내면 안 된다고 말합니다. curl의 --oauth2-bearer는 RFC 6750에 맞춰 토큰의 형식을 갖춰 주므로 Bearer 접두사는 빼고 넘기세요.
Sume API 키도 같은 규칙을 따릅니다. 키는 Authorization: Bearer나 x-api-key 중 하나로만 보내고, 절대 둘 다 보내지 마세요. 스코프와 호스트는 Sume API 키 동작 방식에서 다룹니다. 아래 두 명령은 모두 키를 bearer 토큰으로 보냅니다.
export SUME_API_KEY="sume_live_..."
curl https://api.sume.com/v1/me \
-H "Authorization: Bearer $SUME_API_KEY"
curl https://api.sume.com/v1/me --oauth2-bearer "$SUME_API_KEY"curl로 bearer 토큰을 보냈는데 왜 401이 나오나요?
대개 서버에 도착한 헤더가 의도한 헤더가 아니거나, 서버가 더 이상 그 토큰을 받지 않기 때문입니다. 헤더를 보려면 -v를 붙이세요. curl은 보내는 헤더마다 >로 시작하는 줄에 토큰까지 그대로 출력하므로, 그 출력은 티켓이나 스크린샷에 넣지 마세요.
403은 다른 문제입니다. 401 vs 403 vs 404 차이에서 설명하듯, 키는 받아들여졌지만 권한이 부족한 경우입니다. Sume API에서는 현재 코드 기준으로 401을 부르는 실수마다 메시지가 따로 있습니다.
| curl이 보낸 것 | Sume의 401 메시지 | 해결 방법 |
|---|---|---|
Authorization이나 x-api-key 헤더 없음 | Missing API key. Send x-api-key or Authorization: Bearer. | 헤더를 추가하세요. |
설정되지 않았거나 빈 변수 때문에 뒤에 아무것도 없는 Bearer | Authorization header must use Bearer authentication. | curl을 실행하는 셸에서 변수를 export하세요. |
Bearer 없는 토큰, 또는 Token 같은 다른 스킴 | Authorization header must use Bearer authentication. | 토큰 앞에 Bearer 를 붙이세요. |
| 중간에 공백이 들어간 토큰 | Malformed Authorization header. | 공백 없이 토큰을 다시 복사하세요. |
Authorization: Bearer와 x-api-key를 둘 다 보냄 | Send only one API key credential. | 둘 중 하나를 빼세요. |
$SUME_API_KEY라는 글자 그대로, 또는 알 수 없거나 폐기된 키 | Missing or invalid API key. | 큰따옴표를 쓰거나 새 키를 만드세요. |
헤더는 큰따옴표로 감싸야 하나요, 작은따옴표로 감싸야 하나요?
토큰이 변수에 들어 있다면 큰따옴표를 쓰세요. Bash 매뉴얼에 따르면 작은따옴표는 그 안의 모든 문자를 글자 그대로 보존하므로, 'Authorization: Bearer $SUME_API_KEY'는 $SUME_API_KEY라는 글자를 그대로 보냅니다. 큰따옴표 안에서는 $가 특수한 의미를 유지하므로 변수가 확장됩니다.
Windows에서는 작은따옴표가 지원되지 않는다고 everything curl은 설명합니다. 또 PowerShell에서는 curl이라고 입력하면 별칭(alias)이 다른 도구를 실행할 수 있으므로 curl.exe라고 입력하세요.
변수가 없을 때 빈 토큰을 보내는 대신 분명하게 실패하도록 하려면, curl 8.3.0 이상에서는 변수를 가져오면 됩니다. --variable '%SUME_API_KEY'는 변수가 설정되지 않았으면 오류를 내며 종료하고, --expand-header "Authorization: Bearer {{SUME_API_KEY}}"는 그 값을 헤더에 넣어 줍니다.
테스트하는 동안 토큰은 어떻게 안전하게 지키나요?
모든 bearer 토큰은 Sume 문서가 API 키를 다루는 방식대로 다루세요. 프론트엔드 JavaScript, 모바일 앱, 지원 티켓, 스크린샷에는 절대 넣지 마세요. 안전한 보관 장소는 API 키는 어디에 저장해야 하나요?에서 다룹니다. 테스트할 때는 curl 습관 두 가지가 도움이 됩니다.
-H @file은 파일에서 헤더를 한 줄에 하나씩 읽으므로, 토큰이 명령줄에 드러나지 않습니다.-L을 쓸 때 curl은--location-trusted를 추가하지 않는 한, 다른 출처(origin)로 가는 리다이렉트에는Authorization헤더를 넘기지 않습니다. Sume에서 이 점이 중요한 곳은 Sume API에서 생성한 영상 다운로드하기에서 보여 줍니다.
출처
관련 글
개발자 카테고리의 다른 글
- fal.ai와 Replicate 대안: AI 영상 생성 API 비교
AI 영상 생성에서 fal.ai와 Replicate의 대안은 Kling과 Runway의 자체 API, Higgsfield, Sume입니다. 모델과 과금 방식으로 비교했습니다.
- FFmpeg로 영상 합치기: concat 디먹서 vs concat 필터
FFmpeg로 영상을 이어 붙일 때 설정이 같은 파일은 concat 디먹서와 -c copy로 재인코딩 없이 잇고, 서로 다른 클립은 concat 필터로 재인코딩해 잇습니다.
- FFmpeg로 영상에서 오디오 추출하기: 복사, MP3, WAV
FFmpeg로 영상에서 오디오를 추출하려면 -vn으로 화면을 빼고, -c:a copy로 오디오를 그대로 두거나 인코더로 WAV나 MP3를 쓰세요.
- FFmpeg로 영상에서 프레임 추출하기: 한 장, 매초, 전체
FFmpeg로 프레임을 추출할 때 -frames:v 1은 이미지 한 장을, -r 1은 초당 한 장을 저장하고, 번호를 붙인 파일 패턴은 모든 프레임을 씁니다.
작성자 Sume