API Reference Introduction
The Armox Public API lets eligible subscribers run the same models and app workflows that power Armox Canvas, directly from your backend, automations, and internal tools.
Use this page as your starting point, then go to the dedicated endpoint pages for full request/response references and production patterns.
Who Can Use This API
Public API access is available for these plans:
- Agency
- Master / Business
- Enterprise
Public API access is not available for Free/Pro plans.
Base URL
Use the Armox production API base URL for all endpoints:
https://armox.ai/api/v1
Authentication
All API endpoints require a Bearer API key in the Authorization header:
curl -X GET "https://armox.ai/api/v1/models" \
-H "Authorization: Bearer sk_live_your_key_here"
Manage keys from:
https://armox.ai/app/settings/api-keys
For full key management and security practices, see:
API Sections
- Authentication
- Models Endpoint
- Apps Endpoint
- Jobs Endpoint
- Account Endpoint
- Webhooks
- Errors & Rate Limits
Quick Start in 5 Steps
- Create an API key in
/app/settings/api-keys - Call
GET /api/v1/modelsto discover valid model IDs and settings - Run a model with
POST /api/v1/models/run - If response is async (
status: "processing"), pollGET /api/v1/jobs/:id - Optional: add
webhook_urlto receive completion events
Your First Request
cURL
Prompt Template
curl -X POST "https://armox.ai/api/v1/models/run" \ -H "Authorization: Bearer sk_live_your_key_here" \ -H "Content-Type: application/json" \ -d '{ "model": "google/nano-banana", "input": { "prompt": "Turn this into a cinematic night street photo with neon signs and reflections.", "image_input": ["https://example.com/reference-image.jpg"], "aspect_ratio": "match_input_image", "output_format": "png" } }'
JavaScript (fetch)
Prompt Template
const response = await fetch("https://armox.ai/api/v1/models/run", { method: "POST", headers: { Authorization: "Bearer sk_live_your_key_here", "Content-Type": "application/json", }, body: JSON.stringify({ model: "google/nano-banana", input: { prompt: "Turn this into a cinematic night street photo with neon signs and reflections.", image_input: ["https://example.com/reference-image.jpg"], aspect_ratio: "match_input_image", output_format: "png", }, }), }); const data = await response.json(); console.log(data);
Python
Prompt Template
import requests response = requests.post( "https://armox.ai/api/v1/models/run", headers={ "Authorization": "Bearer sk_live_your_key_here", "Content-Type": "application/json", }, json={ "model": "google/nano-banana", "input": { "prompt": "Turn this into a cinematic night street photo with neon signs and reflections.", "image_input": ["https://example.com/reference-image.jpg"], "aspect_ratio": "match_input_image", "output_format": "png", }, }, ) print(response.status_code) print(response.json())
Go
Prompt Template
package main import ( "bytes" "encoding/json" "fmt" "net/http" ) func main() { payload := map[string]any{ "model": "google/nano-banana", "input": map[string]any{ "prompt": "Turn this into a cinematic night street photo with neon signs and reflections.", "image_input": []string{"https://example.com/reference-image.jpg"}, "aspect_ratio": "match_input_image", "output_format": "png", }, } b, _ := json.Marshal(payload) req, _ := http.NewRequest("POST", "https://armox.ai/api/v1/models/run", bytes.NewBuffer(b)) req.Header.Set("Authorization", "Bearer sk_live_your_key_here") req.Header.Set("Content-Type", "application/json") client := &http.Client{} resp, _ := client.Do(req) defer resp.Body.Close() fmt.Println("Status:", resp.StatusCode) }
Common Next Steps
- Learn auth and key safety: Authentication
- Understand sync/async model runs: Models Endpoint
- Build app workflow automations: Apps Endpoint
- Implement polling and cancellation: Jobs Endpoint
- Configure production webhooks: Webhooks
- Handle errors and 429 retries: Errors & Rate Limits
Security Basics
- Keep API keys server-side only
- Rotate keys regularly
- Use separate keys for dev/staging/production
- Verify webhook signatures before processing payloads
Production Notes
- Persist returned
job.idin your database - Either poll
/jobs/:idor process webhook events - Store resulting output URLs for your app UI