Snowprob API
Professional snow removal service API connecting customers with contractors for on-demand snow clearing services. Features real-time weather integration, secure payments via Stripe, and comprehensive order management.
Professional snow removal service API connecting customers with contractors for on-demand snow clearing services. Features real-time weather integration, secure payments via Stripe, and comprehensive order management.
Production server
Authentication and authorization endpoints
Initiates the authentication process by sending a 6-digit verification code to the provided email address. Includes rate limiting to prevent spam (2-minute cooldown between requests).
Valid email address
Invalid email format or rate limit exceeded
Failed to send verification code
curl https://api.snowprob.com/api/v1/auth/email \
--request POST \
--header 'Content-Type: application/json' \
--data '{
"email": ""
}'
{
"success": true,
"message": "string"
}Verification code sent successfully
Confirms the verification code and completes user authentication. Creates new user accounts automatically and returns a JWT token for subsequent API calls.
Email address used for verification
6-digit verification code
Invalid or expired verification code
Authentication failed
curl https://api.snowprob.com/api/v1/auth/email/confirm \
--request POST \
--header 'Content-Type: application/json' \
--data '{
"email": "",
"validationCode": ""
}'
{
"token": "string",
"user": {
"id": "string",
"email": "string",
"name": null,
"stripeCustomerId": "string"
}
}Authentication successful
User profile management
Retrieves the authenticated user's complete profile information including email, name, user ID, and Stripe Connect account details.
Authentication required
curl https://api.snowprob.com/api/v1/user/profile
{
"id": "string",
"email": "string",
"name": null,
"stripeCustomerId": "string",
"stripeConnectId": null
}User profile retrieved successfully
Updates the authenticated user's profile information. Currently supports updating the display name with validation for length requirements.
User's display name
Profile updated successfully
Invalid input data
Authentication required
curl https://api.snowprob.com/api/v1/user/profile \
--request POST \
--header 'Content-Type: application/json' \
--data '{
"name": ""
}'
Profile updated successfully
Generates a presigned URL for uploading profile pictures directly to Linode Object Storage. The URL allows secure file uploads without exposing storage credentials.
Authentication required
curl https://api.snowprob.com/api/v1/user/profile/picture
{
"url": "string",
"fields": {}
}Presigned URL generated successfully
Payment card management
Retrieves all saved payment cards for the authenticated user from their Stripe customer account. Returns card details without sensitive information.
Authentication required
curl https://api.snowprob.com/api/v1/user/cards
{
"cards": [
{
"id": "string",
"brand": "string",
"last4": "string",
"expMonth": 1,
"expYear": 1
}
]
}Payment cards retrieved successfully
Creates and saves a new payment card to the user's Stripe customer account. Card details are tokenized by Stripe for security.
Payment card added successfully
Invalid card details
Authentication required
curl https://api.snowprob.com/api/v1/user/cards \
--request POST \
--header 'Content-Type: application/json' \
--data '{
"cardDetails": {
"ccNumber": "",
"ccExpirationDate": "",
"ccCVC": ""
}
}'
Payment card added successfully
Creates an ephemeral key session for secure card management operations. Returns necessary Stripe client secrets for frontend card handling.
Authentication required
curl https://api.snowprob.com/api/v1/user/cards/session
{
"ephemeralKey": "string",
"setupIntentSecret": "string",
"customerId": "string"
}Session created successfully
Stripe Connect integration for contractors
Generates a Stripe Connect onboarding URL for contractors to set up their payout account. Creates a new Express account if one doesn't exist.
Authentication required
curl https://api.snowprob.com/api/v1/user/connect
{
"url": "string",
"accountId": "string"
}Onboarding URL generated successfully
Checks the current status of the user's Stripe Connect account, including capability status and whether additional onboarding is required.
Authentication required
curl https://api.snowprob.com/api/v1/user/connect/status
{
"accountId": "string",
"capabilities": {},
"onboardingRequired": true,
"onboardingUrl": null
}Account status retrieved successfully
Generates a login link to the Stripe Express dashboard where contractors can manage their earnings, view transaction history, and update payout settings.
Authentication required
curl https://api.snowprob.com/api/v1/user/express_dashboard_link
{
"url": "string"
}Dashboard link generated successfully
Order creation and management
Creates an initial order intent with automatic pricing calculation based on weather data. Fetches current snowfall predictions and applies first-order discounts when applicable.
Invalid order data
Authentication required
curl https://api.snowprob.com/api/v1/orders \
--request POST \
--header 'Content-Type: application/json' \
--data '{
"location": {
"latitude": 1,
"longitude": 1,
"address": ""
},
"areas": [
""
],
"vehicle": null,
"type": ""
}'
{
"orderId": "string",
"pricing": {},
"snowfallAmount": 1,
"expiresAt": "2025-07-10T22:38:21.384Z"
}Order intent created successfully
Submits an order intent, making it active and available for contractors to claim. Sets the order TTL to 1 hour for automatic cleanup.
Order submitted successfully
Invalid order or payment method
Authentication required
curl https://api.snowprob.com/api/v1/orders/submit \
--request POST \
--header 'Content-Type: application/json' \
--data '{
"order": {
"orderId": "",
"note": null,
"stripeCard": ""
}
}'
Order submitted successfully
Retrieves all active orders available for contractors to claim. Only returns orders that haven't been claimed yet and are within the service area.
Authentication required
curl https://api.snowprob.com/api/v1/orders/available
{
"orders": [
{
"orderId": "string",
"location": {},
"pricing": {},
"areas": [],
"createdAt": "2025-07-10T22:38:21.384Z"
}
]
}Available orders retrieved successfully
Allows a contractor to claim an available order. Creates a Stripe payment intent with hold and sets up automatic fund transfer upon completion.
Order claimed successfully
Order not available or already claimed
Authentication required
curl 'https://api.snowprob.com/api/v1/orders/claim?orderId='
Order claimed successfully
Retrieves all orders associated with the authenticated contractor, including current and historical orders (excludes payment hold failures).
Authentication required
curl https://api.snowprob.com/api/v1/orders/contractor
{
"orders": [
{
"orderId": "string",
"status": "string",
"customer": {},
"location": {},
"pricing": {}
}
]
}Contractor orders retrieved successfully
Updates order status when contractor arrives at the location and begins work. Changes state from 'Claimed' to 'InProgress'.
Order status updated successfully
Invalid order ID or state
Authentication required
curl https://api.snowprob.com/api/v1/orders/begun \
--request POST \
--header 'Content-Type: application/json' \
--data '{
"orderId": ""
}'
Order status updated successfully
Marks an order as completed and captures the payment. Triggers automatic fund transfer to the contractor's Stripe Connect account.
Order completed and payment captured
Invalid order ID or payment capture failed
Authentication required
curl https://api.snowprob.com/api/v1/orders/complete \
--request POST \
--header 'Content-Type: application/json' \
--data '{
"orderId": ""
}'
Order completed and payment captured
Allows customers to cancel their active orders. Sets order state to 'UserCancelled' and handles payment refunds if applicable.
Order cancelled successfully
Order cannot be cancelled
Authentication required
curl 'https://api.snowprob.com/api/v1/orders/{orderId}/cancel/user' \
--request POST
Order cancelled successfully
Retrieves chat messages for an order. Only accessible by the customer or assigned contractor. Returns message history and shoveler information.
Authentication required
Access denied - not part of this order
curl 'https://api.snowprob.com/api/v1/orders/{orderId}/chat'
{
"messages": [
{
"id": "string",
"content": "string",
"sender": "string",
"timestamp": "2025-07-10T22:38:21.384Z"
}
],
"shovelerInfo": {}
}Chat messages retrieved successfully
Sends a chat message for an order. Messages are limited to 280 characters and only available to customers and contractors involved in the order.
Message sent successfully
Invalid message content or order state
Authentication required
Access denied - not part of this order
curl 'https://api.snowprob.com/api/v1/orders/{orderId}/chat' \
--request POST \
--header 'Content-Type: application/json' \
--data '{
"message": {
"content": ""
}
}'
Message sent successfully
Retrieves the user's order history, showing the last 10 orders (excluding intents) sorted by creation date. Provides complete order details and status information.
Authentication required
curl https://api.snowprob.com/api/v1/user/orders
{
"orders": [
{
"orderId": "string",
"status": "string",
"createdAt": "2025-07-10T22:38:21.384Z",
"location": {},
"pricing": {}
}
]
}Order history retrieved successfully
Retrieves complete details for a specific order including location, pricing, contractor information, and current status.
Authentication required
Order not found
curl 'https://api.snowprob.com/api/v1/user/order?id='
{
"orderId": "string",
"status": "string",
"location": {},
"pricing": {},
"contractor": null,
"createdAt": "2025-07-10T22:38:21.384Z",
"completedAt": null
}Order details retrieved successfully
Weather data and forecasting
Retrieves weather forecast for specific coordinates using Apple WeatherKit API. Filters for snowy conditions and converts metric to imperial units for snowfall predictions.
Latitude coordinate
Longitude coordinate
Invalid coordinates
Authentication required
curl 'https://api.snowprob.com/api/v1/weather/forecast?lat=&long='
{
"current": {
"temperature": 1,
"conditions": "string"
},
"forecast": [
{
"date": "2025-07-10",
"snowfall": 1,
"temperature": {}
}
]
}Weather forecast retrieved successfully
| Cookie Enabled | Cookie Key | Cookie Value |
|---|---|---|
| Header Enabled | Header Key | Header Value |
|---|---|---|
Accept | */* | |
Content-Type | application/json | |
| Parameter Enabled | Parameter Key | Parameter Value |
|---|---|---|