API Authentication
All Get3W API requests require authentication using an API key.
How It Works
Include your API key in the Authorization header as a Bearer token:
Authorization: Bearer sk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxAPI keys use the sk_ prefix. Every request to /v1/ endpoints must include this header.
Get Your API Key
- Go to API Keys
- Enter a name and click Generate
- Copy and store it securely — the full key is only shown once
TIP
A new key is active as soon as it is created. What limits you is your balance, not the key: every request is priced and checked before it runs, so a 402 means you need to top up rather than that the key is inactive.
Code Examples
curl -X POST "https://api.get3w.com/v1/google/nano-banana-pro/text-to-image?sync=true" \
-H "Authorization: Bearer $GET3W_API_KEY" \
-H "Content-Type: application/json" \
-d '{"prompt": "A cat in space", "channel": "stable"}'import os
import requests
api_key = os.environ.get("GET3W_API_KEY")
response = requests.post(
"https://api.get3w.com/v1/google/nano-banana-pro/text-to-image?sync=true",
headers={
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json"
},
json={"prompt": "A cat in space", "channel": "stable"}
)const apiKey = process.env.GET3W_API_KEY;
fetch("https://api.get3w.com/v1/google/nano-banana-pro/text-to-image?sync=true", {
method: "POST",
headers: {
"Authorization": `Bearer ${apiKey}`,
"Content-Type": "application/json"
},
body: JSON.stringify({ prompt: "A cat in space", channel: "stable" })
})
.then(res => res.json())
.then(data => console.log(data));Managing API Keys
Manage your keys at get3w.com/api-keys:
- Create — Generate new keys for different projects (up to 10 active keys per account)
- Delete — Remove keys that are no longer needed
Deleted keys stop working immediately.
Security Best Practices
| Practice | Why |
|---|---|
| Use environment variables | Never hardcode API keys in your source code |
| Keep keys secret | Don't commit keys to Git or share them publicly |
| Server-side only | Never expose keys in frontend/browser code |
| Use separate keys | Create different keys for different projects |
Setting Environment Variables
export GET3W_API_KEY="sk_your-api-key"$env:GET3W_API_KEY="sk_your-api-key"set GET3W_API_KEY=sk_your-api-keyAccount Tiers
Your tier is calculated automatically from your cumulative top-up and unlocks per-model discounts:
| Tier | Threshold |
|---|---|
| Bronze | Default |
| Silver | $100+ |
| Gold | $1,000+ |
| Platinum | $10,000+ |
Tiers only ever go up. See What are Account Tiers.
Error Codes
All errors return {"code": <http_status>, "error": "<message>"}. See Error Codes for the full reference.
| Code | Error | Cause |
|---|---|---|
401 | Missing Authorization header | No Authorization header in the request |
401 | Invalid Authorization format | Header is not in Bearer <api_key> format |
401 | Invalid or revoked API key | Key does not exist or has been deleted |
402 | Insufficient balance | Balance is below the task's estimated cost — top up to continue |
403 | Account suspended | The account tied to this key has been disabled |
Common Issues
API key not working?
- Verify the key starts with
sk_ - Ensure the header format is exactly
Authorization: Bearer sk_... - Check for extra spaces or line breaks when copying the key
- Confirm the key hasn't been deleted at get3w.com/api-keys
- If you get
402rather than401, the key is fine — the account balance is too low for that task
Getting 402 Insufficient balance?
Each task is priced before it runs and rejected if your balance cannot cover it. Video and digital-human tasks cost substantially more than images, so a balance that works for one may not cover the other. Check your balance with GET /v1/balance.
Next Steps
- Get Started with API — Make your first API call
- Async Mode — Submit tasks and poll for results
- Webhook Mode — Receive results via callback