Shipi Resources
Shipi Resources
Shipi Resources
Home / Knowledgebase / API Documentation: Shipi API Overview

API Documentation: Shipi API Overview

The Shipi API v1 provides a modern RESTful interface for managing your entire shipping workflow programmatically — shipments, addresses, carriers, account info, and analytics. Use it to build custom integrations, dashboards, or AI-powered shipping assistants.

Base URL

https://app.myshipi.com/api/v1

All v1 endpoints live under the /api/v1/ path. The existing endpoints (Create Shipment, Get Rates, Track) remain at their original paths and continue to work as before.

Authentication

All v1 API requests require your integration key. This is a single credential that identifies your store. You can find it in your Shipi dashboard under Settings > General.

3 Ways to Send Your Key

Choose whichever method fits your workflow best:

MethodHowExample
Header (recommended)Send as X-Integration-Key headerX-Integration-Key: sk_live_abc123...
Query ParameterAdd integration_key to URL?integration_key=sk_live_abc123...
JSON BodyInclude in POST request body{"integration_key": "sk_live_abc123..."}

Keep your key safe. Never expose your integration key in client-side JavaScript. Always make API calls from your backend server.

Authentication Example

// cURL — using header (recommended)
curl -X GET "https://app.myshipi.com/api/v1/account.php" \
  -H "X-Integration-Key: sk_live_abc123def456"

// cURL — using query parameter
curl -X GET "https://app.myshipi.com/api/v1/account.php?integration_key=sk_live_abc123def456"
// PHP
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://app.myshipi.com/api/v1/account.php");
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    "X-Integration-Key: sk_live_abc123def456",
    "Accept: application/json"
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);

print_r($response);
// JavaScript (Node.js)
const response = await fetch("https://app.myshipi.com/api/v1/account.php", {
  headers: {
    "X-Integration-Key": "sk_live_abc123def456",
    "Accept": "application/json"
  }
});
const data = await response.json();
console.log(data);
# Python
import requests

response = requests.get(
    "https://app.myshipi.com/api/v1/account.php",
    headers={"X-Integration-Key": "sk_live_abc123def456"}
)
print(response.json())

Authentication Errors

If authentication fails, the API returns a 401 status with:

{
  "status": "error",
  "message": "Invalid integration key or inactive account."
}

Response Format

All responses are JSON with a consistent structure:

// Success
{
  "status": "success",
  "data": { ... },
  "message": "Optional success message"
}

// Error
{
  "status": "error",
  "message": "Description of what went wrong"
}

HTTP Status Codes

CodeMeaning
200Success
201Created (new resource added)
400Bad Request (missing or invalid parameters)
401Unauthorized (invalid or missing integration key)
404Not Found (resource doesn’t exist)
405Method Not Allowed (wrong HTTP method)
500Server Error

CORS

All v1 endpoints support CORS with Access-Control-Allow-Origin: *, allowing requests from any origin. OPTIONS preflight requests are handled automatically.

Available Endpoints

EndpointMethodsDescription
/api/v1/shipments.phpGETList, get, or search shipments
/api/v1/addresses.phpGET, POSTAddress book CRUD operations
/api/v1/carriers.phpGETList carrier accounts (safe info only)
/api/v1/account.phpGETAccount info, billing, plan details
/api/v1/stats.phpGETShipping statistics and analytics
/api/v1/tracking_url.phpGETGet tracking URL (no auth required)

Rate Limits

The API currently does not impose strict rate limits, but we recommend keeping requests under 60 per minute per integration key. Excessive usage may be throttled in the future.

Need Help?

If you have questions or need help with integration, reach out to our support team at support@myshipi.com or visit the Shipi Dashboard.

Last updated: February 17, 2026
Was this helpful?