Testing in Sandbox Mode

How to use logical sandbox keys, test zero-quota conversions, and simulate errors.

Testing in Sandbox Mode

SmallPict includes a Logical Sandbox Environment designed for local development, CI/CD automated test pipelines, and staging environments.

Sandbox mode allows you to execute image optimization requests with zero monthly quota deduction and zero risk of affecting production assets.


đź§Ş Obtaining Sandbox Credentials

  1. Go to your SmallPict Dashboard → API Keys.
  2. Click Create Sandbox Key.
  3. Your key will be generated with the sp_test_... prefix (e.g. sp_test_9a8b7c6d5e4f...).
  4. Save your paired secret key securely.

⚙️ Sandbox Architectural Guardrails

When an API call is made with an sp_test_... key:

flowchart LR
    Client[Test Suite / Local App] -->|X-API-Key: sp_test_...| API[SmallPict API]
    API -->|1. Detect Sandbox Prefix| Check{IsSandbox?}
    Check -->|Yes| Quota[Bypass Monthly Quota]
    Check -->|Yes| S3[(Ephemeral S3: 24h Auto-Expiry)]
    API -->|Inject Response Header| Res[X-SmallPict-Sandbox: true]
  1. Zero Quota Deduction: The QuotaService skips deduction, so your development testing never consumes paid production credits.
  2. Ephemeral S3 Storage (24-Hour TTL): Converted test images are stored in a designated sandbox prefix (sandbox/{customer_id}/{job_id}/) and automatically deleted after 24 hours.
  3. Response Header Identification: Every response from sandbox requests includes the HTTP header X-SmallPict-Sandbox: true.
  4. Single-File Limit: Sandbox mode permits testing files up to 25MB.

đź’» Example SDK Usage in Sandbox

Node.js

import { SmallPict } from '@smallpict/sdk';
import fs from 'node:fs';

const sandboxClient = new SmallPict({
  apiKey: 'sp_test_1234567890abcdef...',
  secretKey: 'sec_test_secret123...'
});

const result = await sandboxClient.optimize(fs.readFileSync('sample.jpg'), {
  format: 'avif',
  quality: 80
});

console.log('Sandbox conversion succeeded:', result.url);

cURL

curl -X POST https://api.smallpict.app/v1/optimize \
  -H "X-API-Key: sp_test_1234567890abcdef..." \
  -H "X-Timestamp: 1716301234" \
  -H "X-Signature: 3a9f8b2c4d6e..." \
  -H "Content-Type: application/json" \
  -d '{
    "filename": "sample.jpg",
    "mime_type": "image/jpeg",
    "filesize": 500000,
    "options": { "format": "webp", "quality": 80 }
  }'