Help CenterGitHub
Core Concepts

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