Introduction
TribeMade is a zero-cost e-commerce platform that lets you launch your online store in minutes. Unlike traditional platforms that charge monthly fees (29β299), TribeMade is completely free to start - we only take a flat 10% fee on successful deliveries, which includes hosting, domain, payment gateway, and full API access.
Every TribeMade store comes with complete API access at no additional charge. Whether youβre on your first sale or your thousandth, you get:
- Full REST API - Create, update, delete products; manage orders programmatically
- Real-time Webhooks - Get instant notifications when orders are placed
- No API Fees - API access is included in our 10% flat fee (no usage limits)
- Complete Control - Automate everything from inventory to order fulfillment
This is especially powerful compared to Shopify, where API access and webhooks come with their 29β299/month plans.
TribeMade API Capabilities
TribeMade API provides a comprehensive REST API for managing your e-commerce store programmatically. Build powerful integrations, automate workflows, and create custom solutions.
Base URL
All API requests must use this base URL.
API Capabilities
π¦ Product Management
Create, read, update, and delete products programmatically:
- Get Product - Retrieve complete product information
- Create Product - Add new products with complete details
- Edit Product - Update any product field including prices, stock, images
- Delete Product - Remove products (with safety checks for active orders)
Features:
- Support for variations, sizes, colors
- Multiple images (up to 10 per product)
- Custom questions for customer input
- Categories and metadata
- Internal notes (seller-only)
- Stock management
- Sale pricing
ποΈ Order Management
Fetch and update order information:
- Get Order Details - Retrieve complete order information
- Update Order Status - Change status and add tracking
Order Status Flow:
started β processing β dispatched β delivered
β cancelled (from any status)
Features:
- Complete customer information
- Delivery address details
- Order items with variations
- Special instructions
- Custom question responses
- Customer ratings and reviews
- Tracking URLs
π Real-time Webhooks
Receive instant notifications:
- order.created - New order placed
- Push notifications to your server
- No polling required
- Up to 5 webhook URLs
Authentication
All API endpoints require authentication using API keys.
Example: tb-a1b2-c3d-e4f5
How to Authenticate
Include your API key in the X-API-Key header:
curl https://api.tribemade.in/api/orders/ORDER_ID \
-H "X-API-Key: tb-a1b2-c3d-e4f5"
Get Your API Key
- Log in to TribeMade Dashboard
- Navigate to Developer section
- Click βGenerate API Keyβ
- Copy and store securely
API keys have full access to your store. Never expose them in client-side code or commit to version control.
Rate Limits
| Endpoint | Rate Limit |
|---|
| Product APIs | |
GET /api/products/<id> | 50 req/min |
| POST /api/products/create | 20 req/min |
PUT /api/products/<id>/edit | 20 req/min |
DELETE /api/products/<id> | 10 req/min |
| Order APIs | |
GET /api/orders/<id> | 50 req/min |
PUT /api/orders/<id>/status | 20 req/min |
Rate limits are per API key (per store) and reset every minute.
HTTP Status Codes
| Code | Meaning | Description |
|---|
| 200 | Success | Request completed successfully |
| 201 | Created | Resource created successfully |
| 400 | Bad Request | Invalid parameters or validation error |
| 401 | Unauthorized | Missing or invalid API key |
| 403 | Forbidden | Access denied (wrong store) |
| 404 | Not Found | Resource doesnβt exist |
| 429 | Too Many Requests | Rate limit exceeded |
| 500 | Internal Server Error | Server error (rare) |
Content Type
All POST and PUT requests must include:
Content-Type: application/json
Request Body
Send data as JSON:
{
"name": "Product Name",
"price": 499,
"description": "Product description",
"stock": 50
}
Success Response
Successful requests return JSON:
Create operations (201):
{
"product_id": "660e8400-e29b-41d4-a716-446655440123"
}
Update/Delete operations (200):
{
"message": "Product updated successfully"
}
Get operations (200):
{
"id": "770e8400-...",
"status": "processing",
// ... full object
}
Error Response
All errors return JSON with error message:
{
"error": "Error message describing what went wrong"
}
Some errors include additional context:
{
"error": "All categories must be in store categories",
"invalid": ["InvalidCategory"]
}
Dates and Times
All timestamps use ISO 8601 format in UTC:
2024-11-16T10:30:45.123456Z
Currency
All prices and amounts are in Indian Rupees (INR) as numbers:
{
"price": 1299,
"current_price": 999,
"amount": 2048.00
}
All IDs are UUIDs (version 4):
770e8400-e29b-41d4-a716-446655440789
Phone Numbers
Indian phone numbers as strings:
Pincodes
Indian pincodes as strings:
Field Constraints
Product Fields
| Field | Type | Min | Max | Notes |
|---|
| name | string | 3 chars | 30 chars | Required |
| description | string | 0 chars | 500 chars | Required |
| short_description | string | 0 chars | 50 chars | Optional |
| price | number | > 0 | - | Required, INR |
| current_price | number | >= 0 | - | Optional, INR |
| stock | integer | >= 0 | - | Required |
| shipping_cost | number | >= 0 | - | Optional, INR |
| internal_note | string | 0 chars | 500 chars | Optional |
| primary_image | string | - | 5MB | Optional, URL or base64 |
| images | array | 0 items | 10 items | Optional, each β€ 5MB |
| variations | array | 0 items | 20 items | Optional |
| size | array | 0 items | 20 items | Optional |
| colors | array | 0 items | 20 items | Optional |
| categories | array | 0 items | 20 items | Must exist in store |
| custom_questions | array | 0 items | 5 items | Optional |
{
"question": "Question text (1-200 characters)",
"type": "text" // or "image"
}
Types:
text - Customer provides text answer
image - Customer uploads image
Order Status Values
| Status | Description | Can Change To |
|---|
| started | Payment received | processing, cancelled |
| processing | Being prepared | dispatched, cancelled |
| dispatched | Shipped | delivered, cancelled |
| delivered | Delivered (final) | - |
| cancelled | Cancelled (final) | - |
Best Practices
1. Use Environment Variables
Never hardcode API keys:
import os
api_key = os.environ.get('TRIBEMADE_API_KEY')
2. Use Webhooks, Not Polling
β Donβt poll for new orders:
while True:
check_for_orders() # Wastes API calls
time.sleep(60)
β
Use webhooks:
@app.route('/webhook', methods=['POST'])
def handle_order():
process_order(request.json)
return '', 200
3. Respect Rate Limits
- Implement exponential backoff
- Monitor
X-RateLimit-Remaining header
- Space out bulk operations
- Handle 429 errors gracefully
4. Handle Errors Properly
- Check HTTP status codes
- Parse error messages
- Implement retry logic for 500 errors
- Donβt retry 400/401/403/404 errors
5. Validate Before Sending
- Check field lengths
- Validate data types
- Ensure categories exist
- Compress images to β€ 5MB
Quick Start Checklist
Support and Resources
Documentation
Need Help?
API Versioning
Current version: v1
All endpoints are currently at version 1. Future versions will be documented here.
Security
What TribeMade Does
- β
All API traffic over HTTPS
- β
API keys are hashed in database
- β
Rate limiting to prevent abuse
- β
Input validation on all fields
- β
Authentication on all endpoints
What You Should Do
- β
Store API keys securely
- β
Use HTTPS for webhooks
- β
Validate webhook payloads
- β
Implement proper error handling
- β
Monitor for unusual activity
- β
Rotate API keys if compromised
Security Best Practices:
- Never commit API keys to Git
- Never expose API keys in client-side code
- Always use environment variables
- Regenerate keys immediately if exposed
API Endpoint Summary
Products
GET /api/products/<id> Get product details
POST /api/products/create Create new product
PUT /api/products/<id>/edit Update product
DELETE /api/products/<id> Delete product
GET /api/orders/<id> Get order details
PUT /api/orders/<id>/status Update order status
Webhooks
POST https://your-domain.com/webhook Receive order.created events
Next Steps