← Docs
Rate limits
Limits are enforced per-account and per-key. Every response carries X-RateLimit-Remaining headers.
Per-plan limits
| Plan | RPM | TPM |
|---|---|---|
| Starter | 60 | 30K |
| Builder | 300 | 150K |
| Team | 600 | 300K |
| Creative | 300 | 150K |
| Business | Custom | Custom |
RPM = requests/min; TPM = tokens/min (input + output). Need higher? Email hello@sealink.asia.
Response headers
| Header | Meaning |
|---|---|
| X-RateLimit-Limit-Requests | Per-minute RPM ceiling |
| X-RateLimit-Remaining-Requests | Remaining for this minute |
| X-RateLimit-Reset-Requests | Seconds until reset |
| Retry-After | Returned on 429; wait at least this many seconds |
Recommended retry pattern
Exponential backoff with jitter, capped at 5-6 attempts. Retries on 429 don't count against your quota.
Python
import time, randomfrom openai import OpenAI, APIStatusErrorclient = OpenAI(base_url="https://api.sealink.asia/v1", api_key="<your-sealink-key>")def call_with_backoff(messages, model="claude-haiku-4-5", max_attempts=6):for attempt in range(max_attempts):try:return client.chat.completions.create(model=model, messages=messages)except APIStatusError as e:if e.status_code != 429 or attempt == max_attempts - 1:raisesleep_s = min(60, 2 ** attempt) + random.random()time.sleep(sleep_s)