Generor API 문서
93개 이상의 AI 생성기로 만드세요 — 텍스트, 이미지, 비디오, 오디오 등.
AI 콘텐츠를 생성, 탐색, 관리하기 위한 통합 REST API. 모든 요청은 JSON을 사용합니다. Bearer 토큰으로 인증하세요.
인증
Authorization 헤더에 Bearer 토큰으로 인증하세요:
curl https://generor.com/api/v1/users/me \
-H "Authorization: Bearer gnr_live_your_api_key_here"
API 키는 gnr_live_로 시작하고 그 뒤에 40자리 16진수가 붙습니다. API 키 엔드포인트 또는 계정 설정에서 키를 생성하세요.
일부 엔드포인트(생성기 탐색, 공개 창작물, 모델)는 인증 없이 작동합니다. AUTH 표시가 있는 엔드포인트는 유효한 API 키가 필요합니다.
범위
API 키는 접근을 제한하도록 범위를 지정할 수 있습니다:
| 범위 | 허용 |
|---|---|
read | 모든 엔드포인트에 대한 GET 요청 |
write | POST, PATCH, DELETE 작업(댓글, 평가, 프로필 업데이트 등) |
generate | 콘텐츠 생성 (크레딧 소모) |
범위가 지정되지 않은 키는 전체 접근 권한을 가집니다.
요청 제한
한도는 API 키별로 적용됩니다. 모든 응답에는 속도 제한 헤더가 포함됩니다:
X-RateLimit-Limit: 30
X-RateLimit-Remaining: 28
X-RateLimit-Reset: 1708444860
X-RateLimit-Tier: free
| 등급 | 분별 | 시간별 | 일별 |
|---|---|---|---|
| free | 30 | 500 | 5,000 |
| basic | 60 | 2,000 | 20,000 |
| pro | 120 | 5,000 | 50,000 |
| enterprise | 300 | 20,000 | 200,000 |
인증되지 않은 요청은 IP당 분당 15회로 제한됩니다. 속도 제한에 도달하면 Retry-After 헤더가 포함된 429 응답을 받게 됩니다.
응답 형식
모든 응답은 일관된 JSON 포맷을 사용합니다:
성공
{
"success": true,
"data": { ... },
"meta": {
"page": 1,
"per_page": 20,
"total": 142,
"total_pages": 8,
"has_next": true,
"has_prev": false
}
}
오류
{
"success": false,
"error": {
"code": "NOT_FOUND",
"message": "Creation not found",
"status": 404
}
}
페이지 매김
목록 엔드포인트는 쿼리 매개변수를 통한 페이지네이션을 지원합니다:
| 매개변수 | 기본값 | 설명 |
|---|---|---|
page | 1 | 페이지 번호(1부터 시작) |
per_page | 20 | 페이지당 항목 수 (최대 100) |
sort | newest | 정렬 순서: newest, oldest |
생성기
GET /generators
사용 가능한 모든 생성기를 표시합니다.
curl https://generor.com/api/v1/generators
쿼리 매개변수: status (active, development, all)
응답: 슬러그, 제목, 설명, 아이콘 및 유사 생성기를 포함한 생성기 배열.
GET /generators/{slug}
특정 생성기에 대한 자세한 정보를 가져옵니다.
curl https://generor.com/api/v1/generators/image
POST /generators/{slug}/estimate
/generate를 호출하기 이전에 크레딧 비용과 예상 생성 시간을 미리 확인하세요. /generate와 동일한 본문 형식이지만 읽기 전용입니다: 크레딧이 청구되지 않고 작품이 작성되지 않습니다. 이는 UI에서 생성 버튼 옆에 표시되는 것과 정확히 같은 숫자입니다.
curl -X POST https://generor.com/api/v1/generators/horoscope/estimate \
-H "Content-Type: application/json" \
-d '{
"model_id": 37,
"count": 5,
"parameters": {
"zodiac-sign": "aries",
"horoscope-length": "long"
}
}'
응답:
{
"success": true,
"data": {
"generator": "horoscope",
"model_id": 37,
"model_type": "text",
"model_name": "Gemini 3.5 Flash",
"credit_cost": {
"total": 15, // after bulk discount
"per_item": 3, // model base × length/quality multipliers
"count": 5,
"discount": 0, // credits saved
"discount_percent": 5 // % off applied (count% off, capped at 10%)
},
"time_estimate": {
"seconds": 50, // total wall-clock estimate
"per_item": 10,
"min_seconds": 8,
"max_seconds": 14,
"sample_count": 10, // recent generations averaged
"has_historical": true,
"source": "historical" // or "fallback" when sample_count < 3
},
"applied_parameters": { // what the API actually used (schema-filtered)
"zodiac-sign": "aries",
"horoscope-length": "long",
"model-text": "3",
"horoscope-count": "5"
}
}
}
인증되지 않은 호출자에게 공개됩니다 — 가격/시간 정보는 공개 정보이며 공개 생성기 페이지에 표시되는 내용과 일치합니다.
스냅된 영상 길이
모델의 supported_durations에 없는 seconds 값을 전달하면, API는 가장 가까운 지원 값으로 맞추고(동일한 경우 더 낮은 값으로) 변경 사항을 adjustments 블록에 표시합니다. 동일한 응답의 크레딧 비용과 시간 추정치는 원래 요청이 아니라 맞춰진 값 — /generate가 실제로 수행할 값 — 을 반영합니다.
{
"success": true,
"data": {
"credit_cost": { "total": 30, ... },
"time_estimate": { "seconds": 60, ... },
"adjustments": {
"seconds": {
"requested": 3,
"used": 5,
"supported": [5, 6, 7, 8, 10, 12, 15],
"reason": "snapped to nearest provider-supported duration"
}
}
}
}
사용 시점
- 사전 비용 확인 — 요금을 청구하기 전에 사용자가 생성 비용을 감당할 수 있는지 확인하세요.
- 진행 상황 UI —
time_estimate.seconds를 로딩 바에 입력하여 사용자가 얼마나 기다려야 하는지 알 수 있도록 하세요. - 매개변수 조정 — 사용자가 드롭다운을 변경할 때마다 호출하세요. 생성을 확정하지 않고도 비용이 업데이트됩니다.
/generate와의 관계 — /estimate는 별도, 선택 사항 호출입니다. /generate는 이미 청구된 실제 credit_cost와 사후 credits_remaining을 반환하므로, 실시간 가격을 그대로 지불해도 괜찮다면 /estimate를 완전히 건너뛸 수 있습니다.
Use the Generor API at https://generor.com/api/v1.
Before calling POST /generators/{slug}/generate, call
POST /generators/{slug}/estimate with the same body to get back:
- credit_cost.total (credits the next generate call will charge)
- time_estimate.seconds (expected wall-clock duration)
Show both to the user, then call /generate when they confirm.
The /generate response includes the real credit_cost charged and
credits_remaining — use those to update the user's balance.
Discover each generator's tweakable fields with GET /generators/{slug}
and pass them under the `parameters` object on both /estimate and
/generate (keys match the dropdown IDs you see on the public page).
POST /generators/{slug}/generate AUTH
AI로 콘텐츠를 생성하세요. 이것은 동기식 호출입니다 — 생성이 완료되면 응답이 반환됩니다. 선택한 모델에 따라 크레딧이 소모됩니다. 텍스트 생성은 일반적으로 5~30초, 이미지 생성은 10~60초가 걸리며, 동영상 생성은 몇 분이 걸릴 수 있습니다.
# Text generation (joke with GPT 5 Nano)
curl -X POST https://generor.com/api/v1/generators/joke/generate \
-H "Authorization: Bearer gnr_live_..." \
-H "Content-Type: application/json" \
-d '{
"prompt": "Tell me a joke about programming",
"model_id": 37
}'
# Image generation (Flux Schnell, square)
curl -X POST https://generor.com/api/v1/generators/image/generate \
-H "Authorization: Bearer gnr_live_..." \
-H "Content-Type: application/json" \
-d '{
"prompt": "A sunset over mountains",
"model_id": 10003,
"aspect_ratio": 1
}'
# Image description (vision — Qwen VL Max, image-only input, prompt is optional)
curl -X POST https://generor.com/api/v1/generators/vision/generate \
-H "Authorization: Bearer gnr_live_..." \
-H "Content-Type: application/json" \
-d '{
"model_id": 34,
"image_url": "https://example.com/photo.jpg",
"preference": "detailed"
}'
# Video generation (Happy Horse 1.0 R2V — multi-reference, 6s, wide)
curl -X POST https://generor.com/api/v1/generators/video/generate \
-H "Authorization: Bearer gnr_live_..." \
-H "Content-Type: application/json" \
-d '{
"prompt": "The character from [Image1] walks through the forest from [Image2]",
"model_id": 20050,
"aspect_ratio": "16:9",
"seconds": 6,
"reference_images": [
"https://example.com/character.jpg",
"https://example.com/forest.jpg"
]
}'
# Video generation (Happy Horse Video Edit — natural-language edit of an existing clip)
curl -X POST https://generor.com/api/v1/generators/video/generate \
-H "Authorization: Bearer gnr_live_..." \
-H "Content-Type: application/json" \
-d '{
"prompt": "Replace the sky with a stormy sunset",
"model_id": 20051,
"video_url": "https://example.com/source.mp4",
"seconds": 5
}'
요청 본문:
| 필드 | 유형 | 필수 | 설명 |
|---|---|---|---|
prompt | string | 예 | 생성 프롬프트(최대 10,000자) |
model_id | integer | 예 | AI 모델 ID. 텍스트: 1-9999, 이미지: 10001-19999, 비디오: 20001-29999. 모델 참조. |
privacy_mode | integer | 아니요 | 0 = public (default), 1 = private, 2 = team, 3 = unlisted. |
team_id | integer | 아니요 | 팀 아래에 만들기 |
count | integer | 아니요 | 항목 수 (1-10, 기본값 1) |
language | string | 아니요 | 텍스트 생성용 언어 코드 (예: "en-US", "nb-NO"). 기본값: "auto" |
temperature | float | 아니요 | LLM 창의성 (텍스트 모델 전용, 0.0-2.0) |
preference | string/int | 아니요 | 생성기별 환경설정 (예: 농담 유형, 시 스타일) |
preference_two | string/int | 아니요 | 생성기별 보조 환경설정 |
aspect_ratio | int or string | 아니요 | 숫자 ID 또는 비율/이름 문자열을 허용합니다. 이미지: 1 / "1:1" / "square", 2 / "3:4" / "vertical", 3 / "4:3" / "horizontal", 4 / "16:9" / "wide", 5 / "9:16" / "tall". 동영상: 1 / "16:9" / "wide", 2 / "9:16" / "tall". 팁: "16:9"과(와) 같은 비율 문자열을 사용하면 API가 모델 유형에 맞는 ID로 매핑합니다. |
image_url | string | 아니요 | 이미지-투-이미지, 스타일 전송 또는 이미지-투-비디오(I2V)를 위한 참조 이미지 URL. |
seconds | integer | 아니요 | 동영상 길이(초 단위, 동영상 모델 전용). 각 제공자는 정해진 값 집합만 허용합니다 — supported_durations를 확인하려면 GET /models/video/{id}를 쿼리하세요. 지원되지 않는 값을 전달하면 API가 가장 가까운 지원 값으로 조정하고 응답의 adjustments.seconds에 조정 내용을 보고합니다. |
generate_audio | boolean | 아니요 | Veo 3.1 및 Seedance 1.5 Pro(동영상)용 네이티브 오디오 토글입니다. 다른 동영상 모델은 오디오 동작이 내장되어 있어 이 플래그를 무시합니다. |
ending_frame_url | string | 아니요 | 시작+끝 프레임 제어를 지원하는 모델(Veo 3.1, Wan 2.6 I2V, Seedance Pro Lite, Kling v3)을 위한 끝 프레임 앵커입니다. 심리스 전환이나 루프를 위해 image_url와 함께 사용하세요. |
reference_images | array<string> | 아니요 | 최대 9개의 참조 이미지 URL. 지원: Veo 3.1 (최대 3), Seedance 2.0 (최대 9), Happy Horse R2V (최대 9), Happy Horse Video Edit (최대 5). 순서는 유지되며 프롬프트에서 참조할 때 [Image1] … [ImageN]로 모델에 전달됩니다. |
reference_videos | array<string> | 아니요 | 최대 3개의 참조 동영상 URL. Seedance 2.0 (Replicate) 및 Dreamina Seedance 2.0 (BytePlus direct)에서 동작/스타일 일관성을 위해 사용됩니다. |
reference_audio | string | 아니요 | 음악/음성 연속성을 위한 참조 오디오 URL. 현재 Dreamina Seedance 2.0 (모델 20060-20062, BytePlus 직접)에서 사용됩니다. |
video_url | string | 아니요 | 소스 영상 URL — Happy Horse Video Edit(모델 20051)에 필요하며, Dreamina Seedance 2.0(20060-20062)의 영상 편집 / 영상 확장 모드에 사용됩니다. |
parameters | object | 아니요 | 생성기별 필드 — 프런트엔드에 노출되는 동일한 드롭다운으로, DOM ID로 키가 지정됩니다. 아래 생성기 매개변수를 참조하세요. 알 수 없거나 유효하지 않은 키는 자동으로 무시됩니다. |
생성기 매개변수
각 생성기의 조정 가능한 전체 필드 모음은 생성기별 스키마에 들어 있습니다(사이트 드롭다운 및 URL 사전 입력이 사용하는 동일한 소스). 생성 요청의 parameters 객체에 이러한 필드 중 아무거나 전달하여 프로그래밍 방식으로 제어할 수 있습니다.
GET /generators/{slug}에서 모든 생성기의 스키마를 가져옵니다 — 응답의 parameters 배열은 각 필드를 id, type(enum, number 또는 model), options(또는 min/max), default, cost_multipliers와 함께 나열합니다.
# 1) Discover the parameters for the horoscope generator
curl https://generor.com/api/v1/generators/horoscope
# 2) Pass them on the generate call
curl -X POST https://generor.com/api/v1/generators/horoscope/generate \
-H "Authorization: Bearer gnr_live_..." \
-H "Content-Type: application/json" \
-d '{
"prompt": "Aries weekly reading",
"model_id": 37,
"parameters": {
"zodiac-sign": "aries",
"horoscope-timeframe": "weekly",
"horoscope-tone": "mystical",
"horoscope-length": "long",
"horoscope-focus": "career"
}
}'
# Image example — every dropdown in the UI is a key here
curl -X POST https://generor.com/api/v1/generators/wallart/generate \
-H "Authorization: Bearer gnr_live_..." \
-H "Content-Type: application/json" \
-d '{
"prompt": "Calm mountain lake at dawn",
"model_id": 10003,
"parameters": {
"wallart-type": "framed-print",
"wallart-orientation": "landscape",
"image-aspect-ratio": "4"
}
}'
추가 텍스트 생성 필드
텍스트 생성기(model_id 1-9999)의 경우, 관련이 있을 때 다음 최상위 본문 필드가 LLM 엔드포인트로 전달됩니다:
| 필드 | 유형 | 설명 |
|---|---|---|
user_text | string | 자유 형식의 보충 텍스트 (예: 요약/변환할 원본 콘텐츠) |
user_text_two | string | 보조 추가 텍스트 (텍스트 입력이 두 개인 생성기에서 사용) |
avoid_duplicates | boolean | 배치 전반에서 모델이 새로운 출력 쪽으로 편향되도록 합니다 |
thinking_mode | string | 추론 가능 모델용: off, on, 또는 high |
story_context | string | 브랜드에 맞는 장면 작성을 위해 story, story-part, storyboard에 전달되는 소스 스토리 |
character_context / character_name / character_id | string / int | 스토리보드, 스토리 파트, 후속 창작물을 위한 캐릭터 일관성 |
support_for | integer | 상위 생성물 ID — 이 생성물을 하위/동반 생성물로 연결합니다 |
mode | string | 생성기별 모드 토글 (예: 게임 단계) |
model_speech | integer | 텍스트 출력과 짝지을 음성 모델 (내레이션 운세, 팟캐스트 등에 사용) |
item_index / total_count | integer | 순차 생성 힌트 (항목을 순서대로 생성할 때 사용, 예: 풀이 단계) |
translation_of / source_language | integer / string | 처음부터 생성하는 대신 기존 창작물을 번역합니다 |
응답 (201 Created) — 텍스트 제너레이터 예시:
{
"success": true,
"data": {
"generator": "joke",
"model_id": 37,
"model_type": "text",
"model_name": "Gemini 3.5 Flash",
"creations": [
{
"creation_id": 6144,
"text": "Why do programmers prefer dark mode? Because light attracts bugs!",
"illustration_desc": "a minimalist bug icon on a dark background"
}
],
"credit_cost": 1,
"credit_cost_estimated": 1,
"credits_remaining": 36024,
"time_taken_seconds": 4.18
}
}
응답 (201 Created) — 이미지 제너레이터 예시:
{
"success": true,
"data": {
"generator": "image",
"model_id": 10003,
"model_type": "image",
"model_name": "black-forest-labs/flux-schnell",
"creations": [
{
"creation_id": 6147,
"image_url": "https://generor.com/users/2/img/image-6147.webp"
}
],
"credit_cost": 24,
"credit_cost_estimated": 6,
"credits_remaining": 35998,
"time_taken_seconds": 23.7
}
}
스냅된 영상 길이 — 호출자의 seconds가 모델의 supported_durations에 없는 경우, API는 제공자를 호출하기 전에 가장 가까운 지원 값으로 맞추고 /estimate의 것과 동일한 형태의 adjustments.seconds 블록을 응답에 추가합니다. 이는 제공자가 지원되지 않는 값을 조용히 기본값으로 처리하는 것을 방지합니다.
비용 필드 작동 방식
credit_cost—balance_before − balance_after로 계산된 실제 차감 금액. 이것이 신뢰할 수 있는 기준입니다. 로깅, 청구, 사용자 잔액 업데이트에 사용하세요.credit_cost_estimated— 사전 카탈로그 추정치(/estimate가 예측했을 동일한 수치). 투명성과 편차 모니터링을 위해 포함됩니다. 실제 요금이 제공자 호출 내부에서 계산되는 동영상 / 초당 / 문자당 가격 책정의 경우credit_cost와 다른 경우가 많습니다.time_taken_seconds— 실제 경과 시간입니다./estimate의time_estimate.seconds과 비교하여 과거 시간 예측을 검증하세요.
text, illustration_desc; 레시피의 경우 dish_name, ingredients). 나중에 전체 창작물 데이터를 가져오려면 GET /creations/{id}를 사용하세요. 창작물
GET /creations AUTH
내 창작물 목록을 표시합니다.
curl https://generor.com/api/v1/creations \
-H "Authorization: Bearer gnr_live_..."
쿼리 매개변수: generator (슬러그로 필터링), page, per_page, sort
GET /creations/{id}
전체 세부 정보, 이미지, 생성기별 데이터를 포함한 단일 창작물을 가져옵니다.
curl https://generor.com/api/v1/creations/12345
창작물 소유자로 인증하거나, 해당 창작물이 공유된 팀의 멤버여야 합니다.
응답에 포함되는 항목:
{
"success": true,
"data": {
"creation_id": 12345,
"generator": "image",
"user_id": 42,
"username": "johndoe",
"prompt": "A sunset over mountains",
"created_at": "2026-02-20 12:00:00",
"privacy_mode": 1,
"type": "img",
"license": 1,
"images": [
{
"url": "/users/42/img/image-12345.png",
"width": 1024,
"height": 1024
}
],
"generator_data": { ... }
}
}
GET /creations/{id}/status AUTH
창작물의 생성 상태를 확인합니다(생성 기록을 추적할 때 유용합니다).
curl https://generor.com/api/v1/creations/12345/status \
-H "Authorization: Bearer gnr_live_..."
상태 값: pending, generating, completed, failed, cancelled
PATCH /creations/{id} AUTH
본인이 소유한 창작물을 업데이트합니다.
curl -X PATCH https://generor.com/api/v1/creations/12345 \
-H "Authorization: Bearer gnr_live_..." \
-H "Content-Type: application/json" \
-d '{"privacy_mode": 1, "license": 2}'
| 필드 | 가치 |
|---|---|
privacy_mode | 0 (public), 1 (private), 3 (unlisted) |
license | 지원 중단됨 — 하위 호환성을 위해 허용되지만 무시됩니다. 창작자는 자신의 창작물에 대한 모든 권리를 보유합니다. /license를 참조하십시오. |
DELETE /creations/{id} AUTH
소유한 창작물을 삭제합니다(소프트 삭제).
curl -X DELETE https://generor.com/api/v1/creations/12345 \
-H "Authorization: Bearer gnr_live_..."
모델
GET /models
사용 가능한 모든 AI 모델을 유형별로 그룹화하여 표시합니다.
curl https://generor.com/api/v1/models
GET /models/{type}
특정 유형의 모델을 표시합니다.
curl https://generor.com/api/v1/models/image
유효한 유형: text, image, video, speech, music, soundeffect, upscale, vector, backgroundremoval
모델별 응답:
{
"id": 10001,
"name": "Flux 1.1 Pro",
"type": "image",
"provider": "replicate",
"description": "High-quality image generation...",
"credit_cost": 80,
"supports_img2img": true,
"supports_aspect_ratio": true
}
동영상 모델 추가로 전체 제공업체 기능 구조체를 포함합니다:
{
"id": 20061,
"name": "Dreamina Seedance 2.0 (720p)",
"type": "video",
"provider": "byteplus",
"credit_cost": 6,
// Duration constraints
"supported_durations": [5, 6, 7, 8, 10, 12, 15],
"default_duration": 8,
// Audio toggle
"supports_audio": true,
"audio_cost_multiplier": 1,
// End-frame anchoring (pass `ending_frame_url` on /generate)
"supports_end_frame": true,
// Resolution variants — same model at different qualities lives at
// different model_ids. Switch quality by picking the matching id.
"quality": "720p",
"default_quality": "720p",
"qualities": { "480p": 20060, "720p": 20061, "1080p": 20062 },
"group_slug": "dreamina-seedance-2-direct",
"group_name": "Dreamina Seedance 2.0",
// Aspect ratios accepted on /generate
"supports_aspect_ratio": true,
"aspect_ratios": [
{ "id": 1, "ratio": "16:9", "label": "Wide" },
{ "id": 2, "ratio": "9:16", "label": "Tall" }
]
}
이미지 모델 화면 비율이 다양한 경우 동등한 aspect_ratios 배열이 포함됩니다 (이미지 측에는 정사각형, 세로, 가로, 와이드, 톨에 더해 img2img 모드용 match_input_image까지 6개의 항목이 있습니다).
이 필드 사용 방법
supported_durations—seconds를 통해 여기에 아무 값이나 전달하세요. 지원되지 않는 값은 서버 측에서 맞춰지며adjustments.seconds아래에 보고됩니다.qualities— 해상도를 변경하려면 원하는 해상도의model_id를 찾아서model_id로 전달하세요. (해상도는 런타임 매개변수가 아니라 동급 모델입니다.)supports_audio—true일 때/generate에"generate_audio": true를 전달할 수 있습니다.false일 때는 해당 플래그가 무시됩니다.supports_end_frame—true일 때image_url(시작 프레임)과ending_frame_url를 함께 사용하여 매끄러운 전환이나 루프를 만들 수 있습니다.aspect_ratios—/generate의aspect_ratio필드 아래에id(정수) 또는ratio(문자열)를 전달하세요. 두 형식 모두 작동합니다.
GET /models/{type}/{id}
특정 모델의 세부 정보와 가격을 가져옵니다.
curl https://generor.com/api/v1/models/image/10001
사용자
GET /users/me AUTH
프로필, 크레딧 잔액, 통계를 가져옵니다.
curl https://generor.com/api/v1/users/me \
-H "Authorization: Bearer gnr_live_..."
응답:
{
"success": true,
"data": {
"user_id": 42,
"username": "johndoe",
"email": "[email protected]",
"avatar": null,
"bio": "I make things with AI",
"website": "https://example.com",
"joined": "2025-01-15 10:30:00",
"credits": {
"total": 1250,
"paid": 1000,
"free": 200,
"earned": 50,
"max": 250
},
"creation_count": 347,
"follower_count": 12,
"following_count": 5,
"teams": [...]
}
}
PATCH /users/me AUTH
프로필을 업데이트합니다.
curl -X PATCH https://generor.com/api/v1/users/me \
-H "Authorization: Bearer gnr_live_..." \
-H "Content-Type: application/json" \
-d '{"bio": "Updated bio", "website": "https://example.com"}'
GET /users/{username}
사용자의 공개 프로필을 가져옵니다.
curl https://generor.com/api/v1/users/johndoe
GET /users/{username}/followers
사용자의 팔로워 목록을 표시합니다. 페이지네이션을 지원합니다.
GET /users/{username}/following
사용자가 팔로우하는 대상 목록을 표시합니다. 페이지네이션을 지원합니다.
POST /users/{username}/follow AUTH
사용자를 팔로우합니다.
curl -X POST https://generor.com/api/v1/users/johndoe/follow \
-H "Authorization: Bearer gnr_live_..."
DELETE /users/{username}/follow AUTH
사용자 팔로우를 취소합니다.
GET /users/{username}/follow AUTH
사용자를 팔로우하고 있는지 확인합니다. {"following": true/false}를 반환합니다.
팀
모든 팀 엔드포인트는 인증이 필요합니다.
GET /teams AUTH
내 팀 목록을 표시합니다.
POST /teams AUTH
새 팀을 만듭니다.
curl -X POST https://generor.com/api/v1/teams \
-H "Authorization: Bearer gnr_live_..." \
-H "Content-Type: application/json" \
-d '{"name": "My Creative Team"}'
GET /teams/{id} AUTH
구성원 목록과 함께 팀 세부 정보를 가져옵니다.
DELETE /teams/{id} AUTH
팀에서 나갑니다.
POST /teams/{id}/members AUTH
사용자 이름으로 멤버 추가: {"username": "janedoe"}
DELETE /teams/{id}/members/{user_id} AUTH
팀원 제거 (소유자 전용).
POST /teams/join/{invite_code} AUTH
초대 코드로 팀에 가입하세요.
POST /teams/{id}/invite AUTH
초대 코드 다시 생성 (소유자 전용).
GET /teams/{id}/creations AUTH
팀 창작물 목록을 표시합니다. 페이지네이션을 지원합니다.
댓글
GET /creations/{id}/comments
창작물의 댓글 목록을 표시합니다. 페이지네이션을 지원합니다.
curl https://generor.com/api/v1/creations/12345/comments
POST /creations/{id}/comments AUTH
댓글 추가.
curl -X POST https://generor.com/api/v1/creations/12345/comments \
-H "Authorization: Bearer gnr_live_..." \
-H "Content-Type: application/json" \
-d '{"text": "Great creation!", "parent_id": null}'
DELETE /comments/{id} AUTH
본인의 댓글을 삭제합니다.
POST /comments/{id}/vote AUTH
댓글에 투표: {"vote": "up"} 또는 {"vote": "down"}
평가
GET /creations/{id}/rating
창작물의 평균 평점을 가져옵니다.
// Response:
{"success": true, "data": {"creation_id": 12345, "average": 4.2, "count": 15}}
POST /creations/{id}/rating AUTH
창작물 평가 (1-5). 이미 평가한 경우 기존 평가를 업데이트합니다.
curl -X POST https://generor.com/api/v1/creations/12345/rating \
-H "Authorization: Bearer gnr_live_..." \
-H "Content-Type: application/json" \
-d '{"score": 5}'
크레딧
크레딧은 AI 생성에 사용되는 결제 시스템이며 USD로 표시됩니다.
GET /credits/balance AUTH
현재 크레딧 잔액을 가져옵니다.
curl https://generor.com/api/v1/credits/balance \
-H "Authorization: Bearer gnr_live_..."
// Response:
{
"success": true,
"data": {
"total": 1250,
"paid": 1000,
"free": 200,
"earned": 50,
"max": 250
}
}
GET /credits/transactions AUTH
크레딧 거래 내역을 가져옵니다.
curl "https://generor.com/api/v1/credits/transactions?type=spend&page=1" \
-H "Authorization: Bearer gnr_live_..."
쿼리 매개변수: type (spend, purchase, daily_bonus, weekly_bonus, signup_bonus, refund, gift_sent, gift_received), page, per_page
API 키
프로그래밍 방식으로 자신의 API 키를 관리하세요. 모든 엔드포인트는 인증이 필요합니다.
GET /api-keys AUTH
API 키 목록을 표시합니다(전체 키가 아닌 접두사 표시).
POST /api-keys AUTH
새 API 키를 만듭니다. 전체 키는 응답에 한 번만 표시됩니다.
curl -X POST https://generor.com/api/v1/api-keys \
-H "Authorization: Bearer gnr_live_..." \
-H "Content-Type: application/json" \
-d '{"name": "My App", "scopes": ["read", "generate"]}'
// Response (201):
{
"success": true,
"data": {
"key_id": 1,
"api_key": "gnr_live_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0",
"prefix": "gnr_live_a1b2c3d4",
"name": "My App",
"scopes": ["read", "generate"],
"message": "Save this API key now. It will not be shown again."
}
}
계정당 최대 10개의 활성 키.
DELETE /api-keys/{id} AUTH
API 키를 취소합니다 (즉시 비활성화됩니다).
오류 코드
| 코드 | HTTP 상태 | 설명 |
|---|---|---|
UNAUTHORIZED | 401 | API 키가 없거나 유효하지 않습니다 |
FORBIDDEN | 403 | 유효한 키이지만 권한 또는 범위가 부족함 |
NOT_FOUND | 404 | 리소스가 존재하지 않습니다 |
METHOD_NOT_ALLOWED | 405 | 이 엔드포인트에서 지원되지 않는 HTTP 메서드입니다 |
VALIDATION_ERROR | 400 | 잘못된 입력 매개변수 |
INSUFFICIENT_CREDITS | 402 | 생성을 위한 크레딧이 부족합니다 |
RATE_LIMIT_EXCEEDED | 429 | 요청이 너무 많습니다. Retry-After 헤더를 확인하세요 |
SERVER_ERROR | 500 | 내부 서버 오류 |
MCP setup
Connect an AI assistant to Generor with the local PHP MCP server. It supports generator discovery, models, cost estimates, generation, credit balance, and your creations.
Install the MCP package dependencies with Composer in the mcp directory. Requires PHP 8.2 or newer with the cURL and fileinfo extensions.
cd mcp
composer install --no-dev
Add Generor to your MCP client configuration. Replace the path with the location of your local checkout and use your own API key from account settings.
{
"mcpServers": {
"generor": {
"command": "php",
"args": ["/absolute/path/to/generor/mcp/server.php"],
"env": {
"GENEROR_API_KEY": "YOUR_GENEROR_API_KEY"
}
}
}
}
Connect by URL
For MCP clients that support API-key headers, connect to the URL below and send your key in the Authorization header. Keep the trailing slash in the URL.
https://generor.com/mcp/
Authorization: Bearer YOUR_GENEROR_API_KEY
Hosted access uses API keys. Browser OAuth sign-in is not available yet. Keep your API key private; generation requires the generate scope and spends your account credits.
Estimate costs before generating. Long generations may take up to 16 minutes; configure your client timeout accordingly. After a timeout, check your creations before retrying because the generation may still complete and spend credits.
