Skip to main content

cURL Examples

cURL examples for the CuliUptime API using session-based authentication.

🔐 Authentication Prerequisites

CuliUptime uses OAuth2 social login. To use the API with cURL, you need an authenticated session from the web dashboard.

Getting Session Cookies

  1. Login via web dashboard: Visit your CuliUptime dashboard and sign in with Google or GitHub
  2. Extract session cookies: Use browser developer tools to copy session cookies
  3. Use cookies with cURL: Pass cookies using the -b parameter
# Example: Extract cookies from browser and save to file
# In browser dev tools: Application > Cookies > Copy value
echo "session_cookie=YOUR_SESSION_VALUE" > cookies.txt

📋 Monitor Management

List All Monitors

# Get all monitors with basic info
curl -X GET \
-b "session_cookie=YOUR_SESSION" \
https://uptime.culiops.net/api/v1/monitors

# Get monitors with pagination and filtering
curl -X GET \
-b "session_cookie=YOUR_SESSION" \
"https://uptime.culiops.net/api/v1/monitors?page=1&per_page=25&status=online"

# Search monitors by name or URL
curl -X GET \
-b "session_cookie=YOUR_SESSION" \
"https://uptime.culiops.net/api/v1/monitors?search=api"

Get Monitor Details

curl -X GET \
-b "session_cookie=YOUR_SESSION" \
https://uptime.culiops.net/api/v1/monitors/123

Create HTTP Monitor

curl -X POST \
-b "session_cookie=YOUR_SESSION" \
-H "Content-Type: application/json" \
-d '{
"name": "My API Endpoint",
"url": "https://api.example.com/health",
"method": "GET",
"expected_status": [200, 201],
"timeout": 30,
"check_interval": 300
}' \
https://uptime.culiops.net/api/v1/monitors

Update Monitor

curl -X PUT \
-b "session_cookie=YOUR_SESSION" \
-H "Content-Type: application/json" \
-d '{
"name": "Updated Monitor Name",
"check_interval": 600,
"timeout": 45
}' \
https://uptime.culiops.net/api/v1/monitors/123

Enable/Disable Monitor

# Enable monitor
curl -X POST \
-b "session_cookie=YOUR_SESSION" \
https://uptime.culiops.net/api/v1/monitors/123/enable

# Disable monitor
curl -X POST \
-b "session_cookie=YOUR_SESSION" \
https://uptime.culiops.net/api/v1/monitors/123/disable

Test Monitor

# Run immediate check
curl -X POST \
-b "session_cookie=YOUR_SESSION" \
https://uptime.culiops.net/api/v1/monitors/123/test

Delete Monitor

curl -X DELETE \
-b "session_cookie=YOUR_SESSION" \
https://uptime.culiops.net/api/v1/monitors/123

📊 Monitor Data

Get Monitor Results

# Get recent results
curl -X GET \
-b "session_cookie=YOUR_SESSION" \
https://uptime.culiops.net/api/v1/monitors/123/results

# Get results with date range
curl -X GET \
-b "session_cookie=YOUR_SESSION" \
"https://uptime.culiops.net/api/v1/monitors/123/results?from=2024-01-01T00:00:00Z&to=2024-01-31T23:59:59Z"

Get Monitor Statistics

curl -X GET \
-b "session_cookie=YOUR_SESSION" \
https://uptime.culiops.net/api/v1/monitors/123/stats

🌍 Agent Management

List All Agents

curl -X GET \
-b "session_cookie=YOUR_SESSION" \
https://uptime.culiops.net/api/v1/agents

Get User Accessible Agents

curl -X GET \
-b "session_cookie=YOUR_SESSION" \
https://uptime.culiops.net/api/v1/agents/accessible

Get Agent Details

curl -X GET \
-b "session_cookie=YOUR_SESSION" \
https://uptime.culiops.net/api/v1/agents/456

Assign Agents to Monitor

curl -X POST \
-b "session_cookie=YOUR_SESSION" \
-H "Content-Type: application/json" \
-d '{
"agent_ids": [456, 789]
}' \
https://uptime.culiops.net/api/v1/monitors/123/agents

🔔 Notifications

Get Active Notifications

curl -X GET \
-b "session_cookie=YOUR_SESSION" \
https://uptime.culiops.net/api/v1/notifications/active

Get Recent Notifications

curl -X GET \
-b "session_cookie=YOUR_SESSION" \
https://uptime.culiops.net/api/v1/notifications/recent

List Notification History

# Get all notifications
curl -X GET \
-b "session_cookie=YOUR_SESSION" \
https://uptime.culiops.net/api/v1/notifications

# Get notifications for specific monitor
curl -X GET \
-b "session_cookie=YOUR_SESSION" \
"https://uptime.culiops.net/api/v1/notifications?monitor_id=123"

Acknowledge Notification

curl -X POST \
-b "session_cookie=YOUR_SESSION" \
https://uptime.culiops.net/api/v1/notifications/789/acknowledge

👤 User Information

Get Current User

curl -X GET \
-b "session_cookie=YOUR_SESSION" \
https://uptime.culiops.net/api/v1/auth/user

Refresh Session

curl -X POST \
-b "session_cookie=YOUR_SESSION" \
https://uptime.culiops.net/api/v1/auth/refresh

📊 Dashboard Data

Get Dashboard Overview

curl -X GET \
-b "session_cookie=YOUR_SESSION" \
https://uptime.culiops.net/api/v1/dashboard

⚙️ User Preferences

Get User Preferences

curl -X GET \
-b "session_cookie=YOUR_SESSION" \
https://uptime.culiops.net/api/v1/preferences

Update User Preferences

curl -X PUT \
-b "session_cookie=YOUR_SESSION" \
-H "Content-Type: application/json" \
-d '{
"email_notifications": true,
"timezone": "UTC",
"theme": "dark"
}' \
https://uptime.culiops.net/api/v1/preferences

🛠️ Advanced Usage

Save session cookies to a file for easier reuse:

# Save cookies from browser to file
echo "session_cookie=YOUR_SESSION_VALUE" > cookies.txt

# Use cookie file with all requests
curl -X GET \
-b cookies.txt \
https://uptime.culiops.net/api/v1/monitors

Error Handling

# Check HTTP status and handle errors
curl -X GET \
-b "session_cookie=YOUR_SESSION" \
-w "HTTP Status: %{http_code}\n" \
-s -o response.json \
https://uptime.culiops.net/api/v1/monitors

# Check response
if [ $? -eq 0 ]; then
echo "Request successful"
cat response.json
else
echo "Request failed"
fi

Rate Limiting

CuliUptime includes rate limiting. Handle 429 responses:

# Retry with exponential backoff
for i in {1..3}; do
response=$(curl -X GET \
-b "session_cookie=YOUR_SESSION" \
-w "%{http_code}" \
-s -o /tmp/response \
https://uptime.culiops.net/api/v1/monitors)

if [ "$response" = "200" ]; then
cat /tmp/response
break
elif [ "$response" = "429" ]; then
echo "Rate limited, waiting..."
sleep $((2**i))
else
echo "Error: HTTP $response"
break
fi
done

Note: For production integrations, consider using the web dashboard or building a proper OAuth2 client rather than extracting session cookies manually.