S/ASH Guide

세션 API

세션 생성, 조회, 종료, 일시정지, 재개

세션 API

세션은 파트너 사용자별 워크스페이스 실행 단위예요.

1) 세션 생성

POST /api/b2b/sessions

요청 바디(주요 필드)

  • externalUserId (string): 파트너 시스템 사용자 ID
  • envVars (object, optional): 세션 환경변수
  • template (string, optional): 샌드박스 템플릿
  • timeoutMs (number, optional): 타임아웃
  • autoStartOpenCode (boolean, optional): OpenCode 자동 시작
  • metadata (object, optional): 부가 메타데이터

curl

curl -X POST "https://slash.ai.kr/api/b2b/sessions" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_PARTNER_API_KEY" \
  -d '{
    "externalUserId": "user-123",
    "envVars": {"APP_MODE": "prod"},
    "template": "slash-opencode",
    "timeoutMs": 3600000,
    "autoStartOpenCode": true,
    "metadata": {"plan": "pro"}
  }'

JavaScript

const res = await fetch('https://slash.ai.kr/api/b2b/sessions', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'X-API-Key': process.env.SLASH_B2B_API_KEY,
  },
  body: JSON.stringify({
    externalUserId: 'user-123',
    autoStartOpenCode: true,
  }),
});
 
const data = await res.json();
// { sessionId, sandboxId, status, sandboxUrl, createdAt }

2) 세션 조회

GET /api/b2b/sessions/:id

curl

curl -X GET "https://slash.ai.kr/api/b2b/sessions/42" \
  -H "X-API-Key: YOUR_PARTNER_API_KEY"

응답 예시

{
  "sessionId": "42",
  "sandboxId": "sbx_xxx",
  "status": "running",
  "sandboxUrl": "https://3000-xxx.e2b.app",
  "createdAt": "2026-04-14T10:10:10.000Z"
}

3) 세션 종료(파기)

DELETE /api/b2b/sessions/:id

curl -X DELETE "https://slash.ai.kr/api/b2b/sessions/42" \
  -H "X-API-Key: YOUR_PARTNER_API_KEY"

응답:

{ "status": "destroyed" }

4) 세션 일시정지

POST /api/b2b/sessions/:id/pause

curl -X POST "https://slash.ai.kr/api/b2b/sessions/42/pause" \
  -H "X-API-Key: YOUR_PARTNER_API_KEY"

응답:

{ "status": "paused" }

5) 세션 재개

POST /api/b2b/sessions/:id/resume

요청 바디(선택):

{ "autoStartOpenCode": true }
curl -X POST "https://slash.ai.kr/api/b2b/sessions/42/resume" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_PARTNER_API_KEY" \
  -d '{"autoStartOpenCode":true}'

응답 예시:

{
  "status": "running",
  "sandboxId": "sbx_xxx",
  "sandboxUrl": "https://3000-xxx.e2b.app"
}

상태 코드 가이드

  • 201: 세션 생성 성공
  • 200: 조회/제어 성공
  • 404: 세션 없음
  • 409: 상태 충돌(이미 paused/running 등)
  • 500/504: 서버 또는 하위 인프라 오류
운영 팁

재시도 로직은 404409를 구분해 설계하세요. 409는 상태 조정 후 즉시 복구 가능한 경우가 많아요.

다음 가이드