---
title: "API 문서 및 CLI: Node·Python·Go·PHP | SingleFax"
description: "SingleFax REST API와 npm CLI로 백엔드에서 팩스를 보내세요. 선불 크레딧, API 키, OpenAPI, curl·Node·Python·Go·PHP 예제를 제공합니다."
canonical_url: "https://singlefax.com/ko/개발자"
meta:
  "og:description": "SingleFax REST API와 npm CLI로 백엔드에서 팩스를 보내세요. 선불 크레딧, API 키, OpenAPI, curl·Node·Python·Go·PHP 예제를 제공합니다."
  "og:image": "https://singlefax.com/_og/s/o_b931048bb5e56d70.jpeg"
  "og:image:alt": "API 문서 및 CLI: Node·Python·Go·PHP"
  "og:image:height": "630"
  "og:image:type": image/jpeg
  "og:image:width": "1200"
  "og:title": "백엔드에서 팩스 보내기"
---

> Index of every page on this site: [llms.txt](https://singlefax.com/llms.txt)

[singlefax](https://singlefax.com/ko)

[보내기·받기](https://singlefax.com/ko/%ED%8C%A9%EC%8A%A4-%EB%B3%B4%EB%82%B4%EA%B8%B0) [기업 고객](https://singlefax.com/ko/%EA%B8%B0%EC%97%85%EC%9A%A9)솔루션 [요금](https://singlefax.com/ko/%EC%9A%94%EA%B8%88) [블로그](https://singlefax.com/ko/blog)

<details>

<summary>언어</summary>



<a href="https://singlefax.com/developers">English</a><a href="https://singlefax.com/de/entwickler">Deutsch</a><a href="https://singlefax.com/fr/developpeurs">Français</a><a href="https://singlefax.com/es/desarrolladores">Español</a><a href="https://singlefax.com/it/sviluppatori">Italiano</a><a href="https://singlefax.com/zh-tw/%E9%96%8B%E7%99%BC%E4%BA%BA%E5%93%A1">繁體中文</a><a href="https://singlefax.com/pt-br/desenvolvedores">Português do Brasil</a><a href="https://singlefax.com/tr/gelistiriciler">Türkçe</a><a href="https://singlefax.com/ja/%E9%96%8B%E7%99%BA%E8%80%85%E5%90%91%E3%81%91">日本語</a><a href="https://singlefax.com/ar/%D8%A7%D9%84%D9%85%D8%B7%D9%88%D8%B1%D9%88%D9%86">العربية</a>

</details>

[로그인](https://singlefax.com/ko/%EB%A1%9C%EA%B7%B8%EC%9D%B8)

REST · CLI · OpenAPI

# SingleFax API 문서 및 CLI

API 키와 선불 크레딧을 사용합니다. npm 공식 CLI 또는 curl·Node·Python·Go·PHP REST 예제를 이용하세요. 채팅 앱은 MCP를 사용해야 합니다.

[API 키 만들기](https://singlefax.com/ko/%EB%A1%9C%EA%B7%B8%EC%9D%B8?redirect=/dashboard/api-keys) [npm CLI](https://www.npmjs.com/package/@singlefax/cli) [OpenAPI](https://singlefax.com/openapi.json)

## CLI

`npx @singlefax/cli send FILE --to +E164`: Word·Excel·PDF·이미지 원본을 보내고 먼저 PDF로 변환하지 마세요.

## REST

`POST /api/v1/faxes`에 Bearer `sf_live_…` 및 `Idempotency-Key`를 사용합니다.

## 채팅 MCP

Cursor·Claude·Codex·ChatGPT는 API 키가 아닌 OAuth를 사용합니다. [MCP 설치](https://singlefax.com/ko/ai-%EC%97%90%EC%9D%B4%EC%A0%84%ED%8A%B8).

## 빠른 시작

1. [API 키](https://singlefax.com/ko/%EB%A1%9C%EA%B7%B8%EC%9D%B8?redirect=/dashboard/api-keys)에서 범위를 제한한 키를 만드세요( `fax:send`, `fax:read`, `inbox:read`, `credits:read`).
2. 대시보드 또는 `npx @singlefax/cli credits buy`에서 크레딧을 선결제하세요.
3. 아래 CLI 또는 `POST /api/v1/faxes`로 보내세요.

기본 URL은 `https://api.singlefax.com`이며 `https://singlefax.com`에서도 경로는 같습니다. `sf_test_` 키는 실제 전송에 사용할 수 없습니다. 브라우저에 키를 넣지 마세요.

## CLI

Node 20 이상. 설정: `SINGLEFAX_API_KEY` 또는 `~/.config/singlefax/config.json`. Word·Excel·PowerPoint·PDF·텍스트·이미지 원본을 보내고 먼저 PDF로 변환하지 마세요. MCP OAuth·Stripe MPP용이 아닙니다.

terminal복사

```
export SINGLEFAX_API_KEY=sf_live_…

npx @singlefax/cli send ./document.docx --to +14155552671
npx @singlefax/cli send ./document.pdf --to +14155552671 --wait --json
```

quote, status, credits복사

```
npx @singlefax/cli quote --to +14155552671 --pages 12
npx @singlefax/cli status <id>
npx @singlefax/cli list
npx @singlefax/cli numbers
npx @singlefax/cli numbers buy
npx @singlefax/cli credits
npx @singlefax/cli credits buy --dollars 20
```

## 팩스 보내기

요청 하나에 base64 문서와 수신지를 담습니다. PDF·Word·Excel·PowerPoint·텍스트·이미지를 지원하며 `Idempotency-Key`가 필수입니다. 다른 본문에 같은 키를 재사용하면 409를 반환합니다.

curlJavaScriptPythonGoPHP

terminal복사

```
PDF_B64="$(base64 < document.pdf | tr -d '\n')"

curl -sS https://api.singlefax.com/api/v1/faxes \
  -H "Authorization: Bearer $SINGLEFAX_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d "{\"to\":\"+14155552671\",\"base64\":\"$PDF_B64\"}"
```

send.mjs복사

```
import { readFile } from 'node:fs/promises'
import { randomUUID } from 'node:crypto'

const api = 'https://api.singlefax.com'
const key = process.env.SINGLEFAX_API_KEY
const pdf = await readFile('./document.pdf')

const res = await fetch(`${api}/api/v1/faxes`, {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${key}`,
    'Content-Type': 'application/json',
    'Idempotency-Key': randomUUID(),
  },
  body: JSON.stringify({
    to: '+14155552671',
    base64: pdf.toString('base64'),
  }),
})
console.log(await res.json())
```

send.py복사

```
import base64, json, os, urllib.request, uuid
from pathlib import Path

API = "https://api.singlefax.com"
KEY = os.environ["SINGLEFAX_API_KEY"]
pdf = Path("document.pdf").read_bytes()

req = urllib.request.Request(
    f"{API}/api/v1/faxes",
    data=json.dumps({
        "to": "+14155552671",
        "base64": base64.b64encode(pdf).decode(),
    }).encode(),
    headers={
        "Authorization": f"Bearer {KEY}",
        "Content-Type": "application/json",
        "Idempotency-Key": str(uuid.uuid4()),
    },
    method="POST",
)
with urllib.request.urlopen(req) as res:
    print(res.read().decode())
```

send.go복사

```
package main

import (
	"bytes"
	"encoding/base64"
	"encoding/json"
	"fmt"
	"io"
	"net/http"
	"os"
)

func main() {
	pdf, err := os.ReadFile("document.pdf")
	if err != nil {
		panic(err)
	}
	body, _ := json.Marshal(map[string]string{
		"to":     "+14155552671",
		"base64": base64.StdEncoding.EncodeToString(pdf),
	})
	req, _ := http.NewRequest("POST", "https://api.singlefax.com/api/v1/faxes", bytes.NewReader(body))
	req.Header.Set("Authorization", "Bearer "+os.Getenv("SINGLEFAX_API_KEY"))
	req.Header.Set("Content-Type", "application/json")
	req.Header.Set("Idempotency-Key", "send-document-1")
	res, err := http.DefaultClient.Do(req)
	if err != nil {
		panic(err)
	}
	defer res.Body.Close()
	out, _ := io.ReadAll(res.Body)
	fmt.Println(res.Status, string(out))
}
```

send.php복사

```
<?php
$pdf = base64_encode(file_get_contents('document.pdf'));
$ch = curl_init('https://api.singlefax.com/api/v1/faxes');
curl_setopt_array($ch, [
  CURLOPT_POST => true,
  CURLOPT_HTTPHEADER => [
    'Authorization: Bearer ' . getenv('SINGLEFAX_API_KEY'),
    'Content-Type: application/json',
    'Idempotency-Key: send-document-1',
  ],
  CURLOPT_POSTFIELDS => json_encode(['to' => '+14155552671', 'base64' => $pdf]),
  CURLOPT_RETURNTRANSFER => true,
]);
echo curl_exec($ch);
```

## 큰 파일: 업로드 후 전송

CLI는 업로드 토큰을 만들고 PUT으로 파일 데이터를 올린 뒤 `uploadToken`로 전송합니다. PUT에도 Bearer 토큰이 필요합니다. 큰 파일을 JSON에 넣기보다 이 방식을 사용하세요. 미리 PDF로 변환하지 마세요.

curlJavaScriptPythonGoPHP

terminal복사

```
UPLOAD=$(curl -sS https://api.singlefax.com/api/v1/uploads \
  -H "Authorization: Bearer $SINGLEFAX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"contentType":"application/pdf"}')

UPLOAD_URL=$(printf '%s' "$UPLOAD" | python3 -c "import json,sys; print(json.load(sys.stdin)['uploadUrl'])")
TOKEN=$(printf '%s' "$UPLOAD" | python3 -c "import json,sys; print(json.load(sys.stdin)['uploadToken'])")

curl -sS -X PUT "$UPLOAD_URL" \
  -H "Authorization: Bearer $SINGLEFAX_API_KEY" \
  -H "Content-Type: application/pdf" \
  --data-binary @document.pdf

curl -sS https://api.singlefax.com/api/v1/faxes \
  -H "Authorization: Bearer $SINGLEFAX_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d "{\"to\":\"+14155552671\",\"uploadToken\":\"$TOKEN\"}"
```

upload-send.mjs복사

```
import { readFile } from 'node:fs/promises'
import { randomUUID } from 'node:crypto'

const api = 'https://api.singlefax.com'
const key = process.env.SINGLEFAX_API_KEY
const auth = { Authorization: `Bearer ${key}` }
const pdf = await readFile('./document.pdf')

const upload = await fetch(`${api}/api/v1/uploads`, {
  method: 'POST',
  headers: { ...auth, 'Content-Type': 'application/json' },
  body: JSON.stringify({ contentType: 'application/pdf', maxBytes: pdf.byteLength }),
}).then((r) => r.json())

await fetch(upload.uploadUrl, {
  method: 'PUT',
  headers: { ...auth, 'Content-Type': 'application/pdf' },
  body: pdf,
})

const fax = await fetch(`${api}/api/v1/faxes`, {
  method: 'POST',
  headers: {
    ...auth,
    'Content-Type': 'application/json',
    'Idempotency-Key': randomUUID(),
  },
  body: JSON.stringify({ to: '+14155552671', uploadToken: upload.uploadToken }),
}).then((r) => r.json())

console.log(fax)
```

upload\_send.py복사

```
import json, os, urllib.request, uuid
from pathlib import Path

API = "https://api.singlefax.com"
KEY = os.environ["SINGLEFAX_API_KEY"]
pdf = Path("document.pdf").read_bytes()

def request(url, *, data=None, method="GET", headers=None, content_type="application/json"):
    req = urllib.request.Request(
        url,
        data=data,
        headers={
            "Authorization": f"Bearer {KEY}",
            "Content-Type": content_type,
            **(headers or {}),
        },
        method=method,
    )
    with urllib.request.urlopen(req) as res:
        return res.read()

upload = json.loads(request(
    f"{API}/api/v1/uploads",
    method="POST",
    data=json.dumps({"contentType": "application/pdf", "maxBytes": len(pdf)}).encode(),
))
request(upload["uploadUrl"], method="PUT", data=pdf, content_type="application/pdf")
fax = request(
    f"{API}/api/v1/faxes",
    method="POST",
    data=json.dumps({"to": "+14155552671", "uploadToken": upload["uploadToken"]}).encode(),
    headers={"Idempotency-Key": str(uuid.uuid4())},
)
print(fax.decode())
```

upload\_send.go복사

```
package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io"
	"net/http"
	"os"
)

func main() {
	key := os.Getenv("SINGLEFAX_API_KEY")
	pdf, err := os.ReadFile("document.pdf")
	if err != nil {
		panic(err)
	}

	upBody, _ := json.Marshal(map[string]any{"contentType": "application/pdf", "maxBytes": len(pdf)})
	upReq, _ := http.NewRequest("POST", "https://api.singlefax.com/api/v1/uploads", bytes.NewReader(upBody))
	upReq.Header.Set("Authorization", "Bearer "+key)
	upReq.Header.Set("Content-Type", "application/json")
	upRes, err := http.DefaultClient.Do(upReq)
	if err != nil {
		panic(err)
	}
	defer upRes.Body.Close()
	var upload struct {
		UploadToken string `json:"uploadToken"`
		UploadUrl   string `json:"uploadUrl"`
	}
	json.NewDecoder(upRes.Body).Decode(&upload)

	put, _ := http.NewRequest("PUT", upload.UploadUrl, bytes.NewReader(pdf))
	put.Header.Set("Authorization", "Bearer "+key)
	put.Header.Set("Content-Type", "application/pdf")
	if _, err := http.DefaultClient.Do(put); err != nil {
		panic(err)
	}

	sendBody, _ := json.Marshal(map[string]string{"to": "+14155552671", "uploadToken": upload.UploadToken})
	faxReq, _ := http.NewRequest("POST", "https://api.singlefax.com/api/v1/faxes", bytes.NewReader(sendBody))
	faxReq.Header.Set("Authorization", "Bearer "+key)
	faxReq.Header.Set("Content-Type", "application/json")
	faxReq.Header.Set("Idempotency-Key", "send-document-1")
	faxRes, err := http.DefaultClient.Do(faxReq)
	if err != nil {
		panic(err)
	}
	defer faxRes.Body.Close()
	out, _ := io.ReadAll(faxRes.Body)
	fmt.Println(string(out))
}
```

upload-send.php복사

```
<?php
$key = getenv('SINGLEFAX_API_KEY');
$pdf = file_get_contents('document.pdf');

$ch = curl_init('https://api.singlefax.com/api/v1/uploads');
curl_setopt_array($ch, [
  CURLOPT_POST => true,
  CURLOPT_HTTPHEADER => [
    "Authorization: Bearer $key",
    'Content-Type: application/json',
  ],
  CURLOPT_POSTFIELDS => json_encode(['contentType' => 'application/pdf', 'maxBytes' => strlen($pdf)]),
  CURLOPT_RETURNTRANSFER => true,
]);
$upload = json_decode(curl_exec($ch), true);

$ch = curl_init($upload['uploadUrl']);
curl_setopt_array($ch, [
  CURLOPT_CUSTOMREQUEST => 'PUT',
  CURLOPT_HTTPHEADER => [
    "Authorization: Bearer $key",
    'Content-Type: application/pdf',
  ],
  CURLOPT_POSTFIELDS => $pdf,
  CURLOPT_RETURNTRANSFER => true,
]);
curl_exec($ch);

$ch = curl_init('https://api.singlefax.com/api/v1/faxes');
curl_setopt_array($ch, [
  CURLOPT_POST => true,
  CURLOPT_HTTPHEADER => [
    "Authorization: Bearer $key",
    'Content-Type: application/json',
    'Idempotency-Key: send-document-1',
  ],
  CURLOPT_POSTFIELDS => json_encode(['to' => '+14155552671', 'uploadToken' => $upload['uploadToken']]),
  CURLOPT_RETURNTRANSFER => true,
]);
echo curl_exec($ch);
```

## REST 참조

| 메서드 | 경로 | 인증 | 메모 |
| --- | --- | --- | --- |
| POST | /api/v1/faxes | fax:send | Idempotency-Key required. JSON { to, base64 \| uploadToken } or multipart file. |
| GET | /api/v1/faxes | fax:read | List. Query limit, offset. |
| GET | /api/v1/faxes/{id} | fax:read | Status including latest delivery attempt. |
| POST | /api/v1/faxes/quote | fax:read | { to, pages? \| base64? }, quote without charging. |
| POST | /api/v1/uploads | fax:send | Returns uploadToken + uploadUrl. PUT the bytes, then send with uploadToken. |
| GET | /api/v1/credits | credits:read | Prepaid balance. |
| POST | /api/v1/credits/checkout | credits:checkout | { amountCents }. Stripe Checkout for a credit pack. |
| GET | /api/v1/received-faxes | inbox:read | Inbound inbox list. Query limit, cursor. No transcripts in list. |
| GET | /api/v1/received-faxes/{id} | inbox:read | Inbound detail with bounded transcript slice. HIPAA Secure content is omitted. |
| GET | /api/v1/numbers | fax:read | Active fax numbers. |
| POST | /api/v1/numbers | credits:checkout | { sku?, country?, state? }, default inbound\_30day. Returns checkoutUrl + reserved phoneNumber. |
| GET | /api/v1/skus | public | Catalog. Same shape as MCP list\_skus. |
| POST | /api/v1/checkout | credits:checkout | { sku }, credit\_pack, inbound, subscriptions, lifetime. |

전체 스키마: [openapi.json](https://singlefax.com/openapi.json). 하위 호환되지 않는 변경: [버전 관리 정책](https://singlefax.com/ko/%EB%B2%84%EC%A0%84-%EA%B4%80%EB%A6%AC)(90일 Sunset). 이 크레딧 API의 HTTP 402는 잔액 부족입니다. MPP 402는 `POST /api/v1/machine/faxes`에만 적용됩니다.

## 웹훅

서명된 `fax.queued`, `fax.delivered`, `fax.failed`, `credits.low_balance` 이벤트입니다. 원시 본문으로 `SingleFax-Signature`(`t=,v1=`)를 검증하세요. `timestamp.payload`의 HMAC-SHA256입니다. [대시보드 웹훅](https://singlefax.com/ko/%EB%A1%9C%EA%B7%B8%EC%9D%B8?redirect=/dashboard/webhooks)에 엔드포인트를 추가하세요.

JavaScriptPython

verify.mjs복사

```
import { createHmac, timingSafeEqual } from 'node:crypto'

export function verifySingleFaxSignature(rawBody, signatureHeader, secret, toleranceSeconds = 300) {
  const parts = Object.fromEntries(signatureHeader.split(',').map((kv) => kv.split('=')))
  const timestamp = Number(parts.t)
  if (!Number.isFinite(timestamp) || !parts.v1) return false
  if (Math.abs(Math.floor(Date.now() / 1000) - timestamp) > toleranceSeconds) return false
  const expected = createHmac('sha256', secret).update(`${timestamp}.${rawBody}`).digest('hex')
  const a = Buffer.from(parts.v1)
  const b = Buffer.from(expected)
  return a.length === b.length && timingSafeEqual(a, b)
}
```

verify.py복사

```
import hashlib, hmac, time

def verify_singlefax_signature(payload: bytes, header: str, secret: str, tolerance: int = 300) -> bool:
    parts = dict(p.split("=", 1) for p in header.split(","))
    timestamp = int(parts["t"])
    if abs(int(time.time()) - timestamp) > tolerance:
        return False
    expected = hmac.new(
        secret.encode(),
        f"{timestamp}.".encode() + payload,
        hashlib.sha256,
    ).hexdigest()
    return hmac.compare_digest(expected, parts["v1"])
```

## 제약 사항

- API 키는 서버에 보관하세요. 웹페이지에 `sf_live_`를 넣지 마세요.
- PHI를 보내지 마세요. 적용 기관은 웹에서 전자 BAA와 함께 HIPAA Secure를 이용합니다.
- 유효한 E.164 수신지와 PDF·Word·Excel·PowerPoint·RTF·일반 텍스트·이미지를 지원합니다. MIME 유형은 OpenAPI를 보세요. PDF로 미리 변환하지 마세요. 전송 전에 변환합니다.
- 채팅 MCP 및 Stripe MPP: [/agents](https://singlefax.com/ko/ai-%EC%97%90%EC%9D%B4%EC%A0%84%ED%8A%B8), [mpp.md](https://singlefax.com/mpp.md), [MPP와 즉시 결제 비교](https://singlefax.com/blog/stripe-machine-payments-protocol).

## 자주 묻는 질문

CLI·REST·MCP 중 무엇을 쓰나요?

전송 전에 크레딧이 필요한가요?

sf\_test\_ 키를 사용할 수 있나요?

공식 SDK가 있나요?

HIPAA용인가요?

## 기계 판독 문서

크롤러·코딩 에이전트를 위한 일반 Markdown·OpenAPI입니다. 이 페이지와 같은 정보를 담고 있습니다.

[인증 안내](https://singlefax.com/ko/%EC%9D%B8%EC%A6%9D) [OpenAPI 참조](https://singlefax.com/ko/openapi) [developers.md](https://singlefax.com/developers.md) [openapi.json](https://singlefax.com/openapi.json) [auth.md](https://singlefax.com/auth.md) [llms.txt](https://singlefax.com/llms.txt) [MCP·에이전트](https://singlefax.com/ko/ai-%EC%97%90%EC%9D%B4%EC%A0%84%ED%8A%B8) [MPP와 즉시 결제 비교](https://singlefax.com/blog/stripe-machine-payments-protocol) [versioning.md](https://singlefax.com/versioning.md)

[singlefax](https://singlefax.com/ko)

한 번만 보내도 좋습니다. 필요할 때는 받아보세요.

[![Google Play에서 받기](https://singlefax.com/images/google-play-badge.png)](https://play.google.com/store/apps/details?id=com.monocube.singlefax) [Chrome에 추가](https://chromewebstore.google.com/detail/singlefax-fax-a-document/ojpmpilgkmjcfebhpkdmmjlkbcifkkej) [LinkedIn의 SingleFax](https://www.linkedin.com/company/singlefax/) [Facebook의 SingleFax](https://www.facebook.com/singlefax) [Instagram의 SingleFax](https://www.instagram.com/singlefax.app) [Threads의 SingleFax](https://www.threads.com/@singlefax.app) [YouTube의 SingleFax](https://www.youtube.com/@singlefax) [GitHub의 SingleFax](https://github.com/SingleFax)

## 팩스 서비스

- [팩스 보내기](https://singlefax.com/ko/%ED%8C%A9%EC%8A%A4-%EB%B3%B4%EB%82%B4%EA%B8%B0?type=send)
- [팩스 받기](https://singlefax.com/ko/%ED%8C%A9%EC%8A%A4-%EB%B3%B4%EB%82%B4%EA%B8%B0?type=receive)
- [24시간 무료 번호](https://singlefax.com/ko/%EB%AC%B4%EB%A3%8C-%ED%8C%A9%EC%8A%A4-%EB%B2%88%ED%98%B8)
- [평생 번호](https://singlefax.com/ko/%ED%8F%89%EC%83%9D-%ED%8C%A9%EC%8A%A4-%EB%B2%88%ED%98%B8)
- [번호 이동](https://singlefax.com/ko/%EB%B2%88%ED%98%B8-%EC%9D%B4%EB%8F%99)
- [팩스 테스트](https://singlefax.com/ko/%ED%85%8C%EC%8A%A4%ED%8A%B8-%ED%8C%A9%EC%8A%A4-%EB%B2%88%ED%98%B8)
- [기업용 요금제](https://singlefax.com/ko/%EA%B8%B0%EC%97%85%EC%9A%A9)
- [HIPAA Secure](https://singlefax.com/ko/hipaa-%ED%8C%A9%EC%8A%A4)
- [인터넷 팩스](https://singlefax.com/ko/%EC%9D%B8%ED%84%B0%EB%84%B7-%ED%8C%A9%EC%8A%A4)
- [이메일로 팩스 보내기](https://singlefax.com/ko/%EC%9D%B4%EB%A9%94%EC%9D%BC%EB%A1%9C-%ED%8C%A9%EC%8A%A4)
- [WhatsApp으로 팩스](https://singlefax.com/ko/whatsapp-%ED%8C%A9%EC%8A%A4)

## IRS 서류 제출

- [모든 IRS 서류 제출](https://singlefax.com/ko/irs-%EC%84%9C%EB%A5%98-%EC%A0%9C%EC%B6%9C)
- [EIN · SS-4 양식](https://singlefax.com/ko/ein-%EC%8B%A0%EC%B2%AD)
- [5472 양식](https://singlefax.com/ko/5472-%EC%96%91%EC%8B%9D-%EC%A0%9C%EC%B6%9C)
- [7004 양식](https://singlefax.com/ko/7004-%EC%96%91%EC%8B%9D-%EC%A0%9C%EC%B6%9C)
- [2553 양식](https://singlefax.com/ko/2553-%EC%96%91%EC%8B%9D-%EC%A0%9C%EC%B6%9C)
- [2848 양식](https://singlefax.com/ko/2848-%EC%96%91%EC%8B%9D-%EC%A0%9C%EC%B6%9C)
- [4506-T 양식](https://singlefax.com/ko/4506-t-%EC%96%91%EC%8B%9D-%EC%A0%9C%EC%B6%9C)
- [8821 양식](https://singlefax.com/ko/8821-%EC%96%91%EC%8B%9D-%EC%A0%9C%EC%B6%9C)
- [8802 양식](https://singlefax.com/ko/8802-%EC%96%91%EC%8B%9D-%EC%A0%9C%EC%B6%9C)
- [8655 양식](https://singlefax.com/ko/8655-%EC%96%91%EC%8B%9D-%EC%A0%9C%EC%B6%9C)
- [3911 양식](https://singlefax.com/ko/3911-%EC%96%91%EC%8B%9D-%EC%A0%9C%EC%B6%9C)
- [8233 양식](https://singlefax.com/ko/8233-%EC%96%91%EC%8B%9D-%EC%A0%9C%EC%B6%9C)
- [NY POA-1](https://singlefax.com/ko/ny-poa-1-%EC%96%91%EC%8B%9D-%EC%A0%9C%EC%B6%9C)

## 도구 및 자료

- [무료 팩스 도구](https://singlefax.com/ko/%EB%AC%B4%EB%A3%8C-%ED%8C%A9%EC%8A%A4-%EB%8F%84%EA%B5%AC)
- [팩스용 PDF 준비](https://singlefax.com/ko/%ED%8C%A9%EC%8A%A4-%EC%A4%80%EB%B9%84)
- [인쇄용 테스트 페이지](https://singlefax.com/ko/%ED%8C%A9%EC%8A%A4-%ED%85%8C%EC%8A%A4%ED%8A%B8-%ED%8E%98%EC%9D%B4%EC%A7%80)
- [팩스 표지](https://singlefax.com/ko/%ED%8C%A9%EC%8A%A4-%ED%91%9C%EC%A7%80)
- [모바일 앱](https://singlefax.com/ko/%EB%AA%A8%EB%B0%94%EC%9D%BC-%EC%95%B1)
- [Chrome 확장 프로그램](https://singlefax.com/ko/chrome-%ED%99%95%EC%9E%A5-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8)
- [개발자](https://singlefax.com/ko/%EA%B0%9C%EB%B0%9C%EC%9E%90)
- [AI 팩스 에이전트](https://singlefax.com/ko/ai-%EC%97%90%EC%9D%B4%EC%A0%84%ED%8A%B8)
- [버전 관리](https://singlefax.com/ko/%EB%B2%84%EC%A0%84-%EA%B4%80%EB%A6%AC)
- [미국 하원 팩스 번호 안내](https://singlefax.com/ko/%ED%8C%A9%EC%8A%A4-%EB%B2%88%ED%98%B8-%EC%95%88%EB%82%B4/%EB%AF%B8%EA%B5%AD-%ED%95%98%EC%9B%90)
- [미국 상원 팩스 번호 안내](https://singlefax.com/ko/%ED%8C%A9%EC%8A%A4-%EB%B2%88%ED%98%B8-%EC%95%88%EB%82%B4/%EB%AF%B8%EA%B5%AD-%EC%83%81%EC%9B%90)
- [미국 주지사 팩스 번호 안내](https://singlefax.com/ko/%ED%8C%A9%EC%8A%A4-%EB%B2%88%ED%98%B8-%EC%95%88%EB%82%B4/%EB%AF%B8%EA%B5%AD-%EC%A3%BC%EC%A7%80%EC%82%AC)

## SingleFax

- [요금](https://singlefax.com/ko/%EC%9A%94%EA%B8%88)
- [블로그](https://singlefax.com/ko/blog)
- [회사 소개](https://singlefax.com/ko/%ED%9A%8C%EC%82%AC-%EC%86%8C%EA%B0%9C)
- [문의](https://singlefax.com/ko/%EB%AC%B8%EC%9D%98)
- [지원](https://singlefax.com/ko/%EA%B3%A0%EA%B0%9D-%EC%A7%80%EC%9B%90)

© 2026 SingleFax

[개인정보 보호](https://singlefax.com/ko/%EA%B0%9C%EC%9D%B8%EC%A0%95%EB%B3%B4-%EC%B2%98%EB%A6%AC%EB%B0%A9%EC%B9%A8) [이용약관](https://singlefax.com/ko/%EC%9D%B4%EC%9A%A9%EC%95%BD%EA%B4%80) [환불](https://singlefax.com/ko/%ED%99%98%EB%B6%88-%EC%A0%95%EC%B1%85) [악용 신고](https://singlefax.com/ko/%EC%95%85%EC%9A%A9-%EC%8B%A0%EA%B3%A0)

```json
{"@context":"https://schema.org","@graph":[{"@id":"https://singlefax.com/ko#website","@type":"WebSite","description":"SingleFax로 휴대폰이나 컴퓨터에서 필요할 때 팩스를 보내고 받으세요. 회원 가입이나 계정 생성이 필요하지 않습니다.","inLanguage":"ko","name":"SingleFax – 필요할 때만 팩스 보내고 받기","url":"https://singlefax.com/ko","translationOfWork":{"@id":"https://singlefax.com/#website"}},{"@id":"https://singlefax.com/ko/%EA%B0%9C%EB%B0%9C%EC%9E%90#webpage","description":"SingleFax REST API와 npm CLI로 백엔드에서 팩스를 보내세요. 선불 크레딧, API 키, OpenAPI, curl·Node·Python·Go·PHP 예제를 제공합니다.","name":"API 문서 및 CLI: Node·Python·Go·PHP","url":"https://singlefax.com/ko/%EA%B0%9C%EB%B0%9C%EC%9E%90","@type":["WebPage","FAQPage"],"breadcrumb":{"@id":"https://singlefax.com/ko/%EA%B0%9C%EB%B0%9C%EC%9E%90#breadcrumb"},"isPartOf":{"@id":"https://singlefax.com/ko#website"},"mainEntity":[{"@id":"https://singlefax.com/ko/%EA%B0%9C%EB%B0%9C%EC%9E%90#/schema/question/1"},{"@id":"https://singlefax.com/ko/%EA%B0%9C%EB%B0%9C%EC%9E%90#/schema/question/2"},{"@id":"https://singlefax.com/ko/%EA%B0%9C%EB%B0%9C%EC%9E%90#/schema/question/3"},{"@id":"https://singlefax.com/ko/%EA%B0%9C%EB%B0%9C%EC%9E%90#/schema/question/4"},{"@id":"https://singlefax.com/ko/%EA%B0%9C%EB%B0%9C%EC%9E%90#/schema/question/5"}],"potentialAction":[{"@type":"ReadAction","target":["https://singlefax.com/ko/%EA%B0%9C%EB%B0%9C%EC%9E%90"]}]},{"@id":"https://singlefax.com/ko/%EA%B0%9C%EB%B0%9C%EC%9E%90#breadcrumb","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","name":"홈","item":"https://singlefax.com/ko","position":1},{"@type":"ListItem","name":"개발자","item":"https://singlefax.com/ko/%EA%B0%9C%EB%B0%9C%EC%9E%90","position":2}]},{"@id":"https://singlefax.com/ko/%EA%B0%9C%EB%B0%9C%EC%9E%90#/schema/question/1","@type":"Question","inLanguage":"ko","name":"CLI·REST·MCP 중 무엇을 쓰나요?","acceptedAnswer":{"@type":"Answer","text":"자체 백엔드는 API 키·선불 크레딧으로 npm CLI나 REST를 사용하세요. Word·Excel·PDF·이미지 원본을 보내고 먼저 PDF로 변환하지 마세요. Cursor·Claude·Codex·ChatGPT는 /agents의 MCP를 사용합니다. Stripe Shared Payment Token 또는 Tempo USDC 지갑이 있는 자율 에이전트는 MPP(HTTP 402)를 이용하며 /agents와 /blog/stripe-machine-payments-protocol을 참고하세요."}},{"@id":"https://singlefax.com/ko/%EA%B0%9C%EB%B0%9C%EC%9E%90#/schema/question/2","@type":"Question","inLanguage":"ko","name":"전송 전에 크레딧이 필요한가요?","acceptedAnswer":{"@type":"Answer","text":"API 키 전송에는 필요합니다. 키를 만들고 대시보드 또는 POST /api/v1/credits/checkout에서 크레딧을 구매한 뒤 보내세요. /api/v1/faxes의 HTTP 402는 크레딧 부족이며 MPP 결제 요구가 아닙니다."}},{"@id":"https://singlefax.com/ko/%EA%B0%9C%EB%B0%9C%EC%9E%90#/schema/question/3","@type":"Question","inLanguage":"ko","name":"sf_test_ 키를 사용할 수 있나요?","acceptedAnswer":{"@type":"Answer","text":"테스트 키는 실제 팩스를 보내지 못합니다. 전송에는 sf_live_를 사용하세요. 키는 서버에만 두고 브라우저·모바일 앱에 배포하지 마세요."}},{"@id":"https://singlefax.com/ko/%EA%B0%9C%EB%B0%9C%EC%9E%90#/schema/question/4","@type":"Question","inLanguage":"ko","name":"공식 SDK가 있나요?","acceptedAnswer":{"@type":"Answer","text":"공식 패키지는 npm CLI @singlefax/cli입니다. Python·Go·PHP 예제는 표준 HTTP 클라이언트를 사용합니다. Python·Go·Ruby 전용 SDK는 없습니다. /openapi.json을 OpenAPI 도구와 함께 사용해 클라이언트를 생성하세요."}},{"@id":"https://singlefax.com/ko/%EA%B0%9C%EB%B0%9C%EC%9E%90#/schema/question/5","@type":"Question","inLanguage":"ko","name":"HIPAA용인가요?","acceptedAnswer":{"@type":"Answer","text":"아닙니다. 공개 API·CLI·MCP·MPP로 PHI를 보내지 마세요. 적용 기관은 전자 BAA와 함께 웹 HIPAA Secure를 이용해야 합니다."}}]}
```