엑셀 파라미터 파일 업로드 V4
크롤링 봇에 엑셀 파라미터 파일을 업로드합니다.
multipart/form-data로 엑셀 파일을 업로드합니다. 업로드된 파일이 새 활성 파라미터 파일이 되며, 같은 크롤링 봇의 기존 활성 파일은 자동으로 비활성화됩니다(트랜잭션 처리).
허용 확장자는 .xlsx·.xls이며, 확장자 외에 파일 첫 바이트의 매직 시그니처도 검증합니다(xlsx=ZIP, xls=OLE2). 파일 파트의 Content-Type 값은 무시되므로 임의 MIME으로 보내도 됩니다(예: application/octet-stream). 단, 요청 전체는 multipart/form-data여야 합니다.
요청 파라미터
-
Authorization: Header해시스크래퍼 API 키.
Bearer <api_key>형식으로 전달합니다. -
schedule_id: String (path)업로드 대상 크롤링 봇의 ID. URL 경로의
{schedule_id}로 전달합니다. 봇 ID는 봇 상세 페이지의 작업 → 봇 ID 복사하기에서 복사할 수 있습니다. -
excel_file: File (multipart)업로드할 엑셀 파일.
multipart/form-data의excel_file필드로 전송합니다.
응답 필드
-
result: String요청 처리 결과.
-
version: StringAPI 버전.
-
request_id: String요청 추적용 ID.
-
elapsed_sec: Float응답 생성에 걸린 시간(초 단위 Float).
-
data: Object업로드 결과.
-
id: String크롤링 봇의 ID(echo).
-
file_name: String업로드된 파일의 원본 파일명.
-
detected_type: String검증을 통과한 파일 타입.
xlsx또는xls.
-
에러 응답
-
MISSING_API_KEY
{ "result": "error", "version": "v4", "request_id": "req_5a8c1f1c-...", "code": "MISSING_API_KEY", "message": "API key is missing.", "elapsed_sec": 0.0008, "details": { "hint": "Send `Authorization: Bearer <api_key>` header." } } -
INVALID_API_KEY
{ "result": "error", "version": "v4", "request_id": "req_5a8c1f1c-...", "code": "INVALID_API_KEY", "message": "API key is invalid.", "elapsed_sec": 0.0011 } -
SCHEDULE_NOT_FOUND
{ "result": "error", "version": "v4", "request_id": "req_5a8c1f1c-...", "code": "SCHEDULE_NOT_FOUND", "message": "Schedule not found.", "elapsed_sec": 0.0021, "details": { "resource": "schedule", "id": "8f3a7c1e9b5d24f6" } } -
MISSING_PARAM (excel_file)
{ "result": "error", "version": "v4", "request_id": "req_5a8c1f1c-...", "code": "MISSING_PARAM", "message": "Required parameter is missing.", "elapsed_sec": 0.0010, "details": { "param_name": "excel_file" } } -
INVALID_PARAM (excel_file)
{ "result": "error", "version": "v4", "request_id": "req_5a8c1f1c-...", "code": "INVALID_PARAM", "message": "excel_file must be .xlsx or .xls with matching magic bytes.", "elapsed_sec": 0.0017, "details": { "param_name": "excel_file", "file_name": "report.csv", "allowed_extensions": [".xlsx", ".xls"] } }
관련 가이드
요청 예시
curl -X PUT 'https://www.hashscraper.com/v4/api/schedules/8f3a7c1e9b5d24f6/excel_param' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-F 'excel_file=@/path/to/params.xlsx'
require 'net/http'
require 'json'
require 'uri'
uri = URI('https://www.hashscraper.com/v4/api/schedules/8f3a7c1e9b5d24f6/excel_param')
req = Net::HTTP::Put.new(uri)
req['Authorization'] = 'Bearer YOUR_API_KEY'
File.open('/path/to/params.xlsx', 'rb') do |file|
req.set_form([['excel_file', file]], 'multipart/form-data')
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|
http.request(req)
end
puts res.code
puts JSON.pretty_generate(JSON.parse(res.body))
end
import json
import requests
url = "https://www.hashscraper.com/v4/api/schedules/8f3a7c1e9b5d24f6/excel_param"
headers = {"Authorization": "Bearer YOUR_API_KEY"}
with open("/path/to/params.xlsx", "rb") as f:
files = {"excel_file": f}
response = requests.put(url, headers=headers, files=files)
print(response.status_code)
print(json.dumps(response.json(), indent=2, ensure_ascii=False))
응답 예시 200
{
"result": "success",
"version": "v4",
"request_id": "req_5a8c1f1c-9b2d-4e7c-9abf-3f7e0a4d1b21",
"elapsed_sec": 0.0421,
"data": {
"id": "8f3a7c1e9b5d24f6",
"file_name": "params_2026Q2.xlsx",
"detected_type": "xlsx"
}
}