개발자

API v2

엔드포인트 하나, POST 전용, JSON 응답. 패널에서 보는 것과 같은 카탈로그와 같은 가격을 당신의 사이트·봇·스프레드시트에서.

먼저 알아둘 네 가지

01

키가 곧 지갑입니다

계정 페이지에서 생성하세요. 지출을 승인하므로 서버 설정에 두어야 합니다. 브라우저, 채팅, 스크린샷에 한 번이라도 노출되었다면 교체하세요.

02

한도는 서비스마다 다릅니다

최소 및 최대 수량은 개별적으로 정해집니다 — 어떤 서비스는 10개부터, 다음 서비스는 500 000개부터 시작합니다. services에서 읽어 주문을 보내기 전에 검증하세요.

03

주문은 잔액에서 차감됩니다

인보이스 단계는 없습니다. add는 잔액이 주문을 감당하는 동안에만 성공하므로 balance를 폴링하고 잔액이 0이 되기 전에 큐를 멈추세요.

04

이미 패널이 있나요? 코드가 필요 없습니다

PerfectPanel과 대부분의 패널 스크립트는 이 형식을 기본으로 읽습니다. 관리자에서 Providers → Add provider로 가서 사이트 주소를 붙여넣으세요 — https://autosmo.com/, 그것만, endpoint가 아닙니다. 키를 추가하고 카탈로그를 동기화하고 마진을 설정하세요.

요청 하나, 처음부터 끝까지

풀이 예제
주문을 넣고 되읽어 보기
curl -X POST https://autosmo.com/api/v2 \\
  -d key=YOUR_KEY \\
  -d action=add \\
  -d service=6758 \\
  -d link=https://instagram.com/yourprofile \\
  -d quantity=100

{"order": 8231455}

curl -X POST https://autosmo.com/api/v2 -d key=YOUR_KEY -d action=status -d order=8231455

{"charge": "0.016", "start_count": "2841", "status": "Completed",
 "remains": "0", "currency": "USD"}

서비스 6758은 카탈로그의 실제 id입니다. 서비스 최소치 미만의 수량은 올림되지 않고 거부됩니다.

에이전트에게 넘기세요

복사 & 붙여넣기

이것을 ChatGPT, Claude 또는 Cursor에 붙여넣고 사용할 언어를 알려주면 동작하는 클라이언트를 얻습니다. 전체 호출 목록과 실수하기 쉬운 동작까지 담고 있습니다.

통합 프롬프트
Build me a client for the AutoSMO SMM API (v2), in a language I will name.

ENDPOINT
POST https://autosmo.com/api/v2 — form-encoded body, JSON response, no other verbs.
Authentication is the field `key`, sent with every call. Server-side only.

CALLS
action=services -> array of { service, name, type, category, rate (per 1000),
                              min, max, refill:bool, cancel:bool }
action=add      params: service, link, quantity [, runs, interval]  -> { "order": id }
                custom comments: service, link, comments
action=status   params: order | orders (comma separated, max 100)
                -> { charge, start_count, status, remains, currency }
action=refill   params: order | orders (max 100)   -> { "refill": id }
action=refill_status  params: refill | refills     -> { "status": ... }
action=cancel   params: orders (max 100)
action=balance                                      -> { balance, currency }

BEHAVIOUR THAT COSTS MONEY IF IGNORED
- A timed-out `add` is not a failed `add`. The order may exist and be paid for.
  Surface it for a human; do not resend it on a timer.
- Quantity outside a service's own min/max is refused outright, so read those
  bounds from the catalogue and check before sending.
- Status is polled with `orders` and up to 100 ids at once. Per-order polling
  works in testing and dies in production.
- A 200 response can still contain per-entry errors when several ids were
  requested. Walk the entries; do not trust the envelope.
- "Partial" is a delivery that stopped early: `remains` is the shortfall and
  `charge` is the real cost. Pass that difference back to your buyer.
- Refill and cancel exist only where the catalogue flags say so.

WHAT I EXPECT FROM YOU
- One function per call, with the response parsed into typed structures.
- My order reference stored next to the id this API returns.
- Two background jobs: refresh the catalogue, and follow orders still open.
- A rehearsal switch that logs calls without sending them, and a single
  end-to-end test using the cheapest service in the catalogue.

라이브 전 체크리스트

키는 고객이 열 수 있는 그 어디에도 없어야 합니다

프런트엔드 JavaScript에도, 모바일 번들에도, 공개 저장소에도 없어야 합니다. 그것을 가진 누구든 당신의 잔액으로 주문할 수 있습니다.

타임아웃은 재시도가 아니라 사람에게 큐로 넘깁니다

add에는 멱등성 키가 없으므로, 자동 재시도는 한 고객의 주문이 결제된 주문 두 건이 되는 경로입니다.

카탈로그 사본은 일정에 따라 갱신됩니다

공급자가 자신의 요율, 한도, 재고를 바꾸면 이 값들도 바뀝니다. 오래된 로컬 사본은 더 이상 유효하지 않은 가격으로 판매합니다.

부분 주문은 고객에게도 부분으로 도달합니다

remains를 당신의 환불 로직에 매핑하세요. 부분 배송을 완료로 표시하는 것은 차지백을 부르는 가장 빠른 길입니다.

실제 주문 하나를 처음부터 끝까지 지켜봤습니다

카탈로그가 허용하는 가장 작은 주문을 넣고 완료될 때까지 폴링한 뒤, 트래픽을 넘기기 전에 당신 쪽이 charge와 한 푼까지 일치하는지 확인하세요.

패널이 생성한 전체 레퍼런스

API

HTTP 메서드 POST
API URL https://autosmo.com/api/v2
응답 형식 JSON

Service list

Parameters Description
key Your API key
action services

응답 예시

[
    {
        "service": 1,
        "name": "Followers",
        "type": "Default",
        "category": "First Category",
        "rate": "0.90",
        "min": "50",
        "max": "10000",
        "refill": true,
        "cancel": true
    },
    {
        "service": 2,
        "name": "Comments",
        "type": "Custom Comments",
        "category": "Second Category",
        "rate": "8",
        "min": "10",
        "max": "1500",
        "refill": false,
        "cancel": true
    }
]

Add order

응답 예시

{
    "order": 23501
}

Order status

Parameters Description
key Your API key
action status
order Order ID

응답 예시

{
    "charge": "0.27819",
    "start_count": "3572",
    "status": "Partial",
    "remains": "157",
    "currency": "USD"
}

Multiple orders status

Parameters Description
key Your API key
action status
orders Order IDs (separated by a comma, up to 100 IDs)

응답 예시

{
    "1": {
        "charge": "0.27819",
        "start_count": "3572",
        "status": "Partial",
        "remains": "157",
        "currency": "USD"
    },
    "10": {
        "error": "Incorrect order ID"
    },
    "100": {
        "charge": "1.44219",
        "start_count": "234",
        "status": "In progress",
        "remains": "10",
        "currency": "USD"
    }
}

Create refill

Parameters Description
key Your API key
action refill
order Order ID

응답 예시

{
    "refill": "1"
}

Create multiple refill

Parameters Description
key Your API key
action refill
orders Order IDs (separated by a comma, up to 100 IDs)

응답 예시

[
    {
        "order": 1,
        "refill": 1
    },
    {
        "order": 2,
        "refill": 2
    },
    {
        "order": 3,
        "refill": {
            "error": "Incorrect order ID"
        }
    }
]

Get refill status

Parameters Description
key Your API key
action refill_status
refill Refill ID

응답 예시

{
    "status": "Completed"
}

Get multiple refill status

Parameters Description
key Your API key
action refill_status
refills Refill IDs (separated by a comma, up to 100 IDs)

응답 예시

[
    {
        "refill": 1,
        "status": "Completed"
    },
    {
        "refill": 2,
        "status": "Rejected"
    },
    {
        "refill": 3,
        "status": {
            "error": "Refill not found"
        }
    }
]

Create cancel

Parameters Description
key Your API key
action cancel
orders Order IDs (separated by a comma, up to 100 IDs)

응답 예시

[
    {
        "order": 9,
        "cancel": {
            "error": "Incorrect order ID"
        }
    },
    {
        "order": 2,
        "cancel": 1
    }
]

User balance

Parameters Description
key Your API key
action balance

응답 예시

{
    "balance": "100.84292",
    "currency": "USD"
}
PHP 코드 예시