Help CenterGitHub

How atoship Works

Understand the key concepts behind atoship's shipping API. Learn about rates, labels, tracking, carriers, and billing.

The Shipping Flow

Every shipment follows this simple 3-step process: get rates, create a label, and track the package.

Step 1

Get Rates

Compare prices from USPS, UPS, and FedEx in one API call

Send package dimensions and addresses to get real-time rates with delivery estimates from all carriers.

Step 2

Create Label

Generate a shipping label with the selected rate

Choose the best rate and create a print-ready label. Cost is deducted from your wallet balance.

Step 3

Track Package

Monitor delivery status with real-time updates

Track packages across all carriers with a unified tracking API and webhook notifications.

Core Resources

Addresses
/v1/addresses
Origin and destination addresses for shipments. atoship validates and standardizes addresses to prevent delivery failures.
  • Address validation ensures deliverability
  • Residential vs commercial detection
  • Standardized formatting (USPS standards)
  • International address support
Rates
/v1/rates
Real-time shipping prices from multiple carriers. Compare USPS, UPS, and FedEx rates instantly.
  • Multi-carrier rate comparison in one call
  • Discounted commercial pricing included
  • Delivery time estimates
  • Service level options (Express, Ground, etc.)
Labels
/v1/labels
Shipping labels with tracking numbers. Generate print-ready labels in PDF, PNG, or ZPL format.
  • Multiple formats: PDF, PNG, ZPL (thermal)
  • Tracking number auto-generated
  • Cost deducted from wallet
  • Void/refund within 30 days
Tracking
/v1/tracking
Package delivery status updates. Track shipments across all carriers with a unified API.
  • Real-time status updates
  • Webhook notifications for events
  • Delivery confirmation
  • Exception alerts

Carriers

USPS
carrier: "usps"
United States Postal Service — best for lightweight packages and residential deliveries.
  • Priority Mail — 1-3 days
  • Priority Mail Express — Overnight
  • Ground Advantage — 2-5 days
  • First Class Mail — Letters & small packages
UPS
carrier: "ups"
United Parcel Service — reliable for business shipments and heavier packages.
  • Ground — 1-5 days
  • 2nd Day Air — 2 days
  • Next Day Air — Overnight
  • 3 Day Select — 3 days
FedEx
carrier: "fedex"
Federal Express — excellent for express shipping and international deliveries.
  • Ground — 1-5 days
  • Express Saver — 3 days
  • 2Day — 2 days
  • Home Delivery — Residential

Account & Billing

Wallet
/v1/wallet/balance
Pre-paid balance for purchasing shipping labels. Add funds via credit card or bank transfer.
  • Pay-as-you-go model
  • No monthly fees or minimums
  • Auto-reload available
  • Transaction history in dashboard
Refunds
/v1/labels/{id}/void
Void unused labels and get credits back. Most labels can be refunded within 30 days.
  • Void unused labels for full refund
  • USPS: Refund within 30 days
  • UPS/FedEx: Refund within 30 days
  • Credit returned to wallet

Integrations

E-commerce Channels
Dashboard → Channels
Connect your online stores to import orders automatically. Sync with Shopify, eBay, Amazon, and more.
  • Shopify — Real-time order sync
  • eBay — Marketplace integration
  • Amazon — SP-API integration
  • WooCommerce — WordPress plugin
Webhooks
/v1/webhooks
Receive real-time notifications for tracking updates, label creation, and more.
  • Tracking status updates
  • Label created/voided events
  • Delivery confirmations
  • Custom endpoint URLs

Putting It All Together

Complete API Workflow
Here's how all the concepts work together in a typical integration
// Complete shipping workflow
const API_KEY = 'your_api_key';
const BASE_URL = 'https://atoship.com/api/v1';

// 1. Get rates from all carriers
const ratesResponse = await fetch(`${BASE_URL}/rates`, {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${API_KEY}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    from: {
      name: "Your Store",
      street1: "123 Store Street",
      city: "San Francisco",
      state: "CA",
      zip: "94102"
    },
    to: {
      name: "John Customer",
      street1: "456 Customer Ave",
      city: "Los Angeles",
      state: "CA",
      zip: "90210"
    },
    parcel: {
      weight: 16,  // ounces
      length: 12,
      width: 8,
      height: 6
    }
  })
});

const { rates } = await ratesResponse.json();
// rates = [{ id, carrier, service, rate, delivery_days }, ...]

// 2. Create label with cheapest rate
const labelResponse = await fetch(`${BASE_URL}/labels`, {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${API_KEY}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    rate_id: rates[0].id,
    label_format: 'PDF'
  })
});

const label = await labelResponse.json();
// label = { id, tracking_number, label_url, carrier, cost }

// 3. Track the package
const trackingResponse = await fetch(
  `${BASE_URL}/tracking/${label.tracking_number}`,
  { headers: { 'Authorization': `Bearer ${API_KEY}` } }
);

const tracking = await trackingResponse.json();
// tracking = { status, events: [{ timestamp, description, location }] }

Pro Tip

Use the API Playground to test these calls interactively before integrating into your app.

Next Steps

atoship © 2026