AutoDM Monitors
Set up persistent monitors that automatically send private DMs to users who comment on your Instagram posts. Monitors run in the background 24/7 — no need to keep polling manually.
Start a Monitor
Create a new AutoDM monitor for an Instagram post. The monitor will check for new comments at regular intervals and send a private reply (DM) to each new commenter.
Endpoint
POST /api/uploadposts/autodms/start
Headers
| Name | Value | Description |
|---|---|---|
| Authorization | Apikey your-api-key-here | Your API key for authentication |
Body Parameters (JSON)
| Name | Type | Required | Description |
|---|---|---|---|
| post_url | String | Yes | The Instagram post URL to monitor for comments. |
| reply_message | String | Yes | The DM message to send to each new commenter. |
| profile_username | String | Yes | Profile username (as configured in Upload-Post). Must have Instagram connected. |
| monitoring_interval | Integer | No | Minutes between comment checks. Default: 15. Minimum: 15. |
Limits
- 2 new monitors per profile per day. You can create up to 2 monitors per profile in a 24-hour period.
- No duplicate posts. If there's already an active monitor for a post URL, you must stop it before creating a new one.
- Auto-expiration. Monitors automatically stop after 15 days.
Example Request
curl -X POST https://api.upload-post.com/api/uploadposts/autodms/start \
-H 'Authorization: Apikey your-api-key-here' \
-H 'Content-Type: application/json' \
-d '{
"post_url": "https://www.instagram.com/p/ABC123/",
"reply_message": "Hey! Here is your free guide: https://example.com/guide",
"profile_username": "my-profile",
"monitoring_interval": 15
}'
Responses
- 200 OK (monitor started)
{
"success": true,
"message": "AutoDMs monitoring started successfully",
"monitor_id": "[email protected]_my-profile_1234567890",
"config": {
"post_url": "https://www.instagram.com/p/ABC123/",
"reply_message": "Hey! Here is your free guide: https://example.com/guide",
"profile_username": "my-profile",
"monitoring_interval": 15
}
}
- 400 Bad Request (missing fields, no Instagram connected, or duplicate post)
{
"success": false,
"error": "There is already an active monitor for this post. Stop it first before creating a new one."
}
- 429 Too Many Requests (daily limit reached)
{
"success": false,
"error": "Limit reached: maximum 2 monitors per profile per day."
}
Get Monitor Status
Retrieve the status of all active AutoDM monitors for your account.
Endpoint
GET /api/uploadposts/autodms/status
Headers
| Name | Value | Description |
|---|---|---|
| Authorization | Apikey your-api-key-here | Your API key for authentication |
Example Request
curl 'https://api.upload-post.com/api/uploadposts/autodms/status' \
-H 'Authorization: Apikey your-api-key-here'
Responses
- 200 OK
{
"success": true,
"monitors": [
{
"monitor_id": "[email protected]_my-profile_1234567890",
"post_url": "https://www.instagram.com/p/ABC123/",
"reply_message": "Hey! Here is your free guide: https://example.com/guide",
"profile_username": "my-profile",
"monitoring_interval": 15,
"status": "running",
"stats": {
"total_comments": 47,
"new_comments": 5,
"successful_replies": 31,
"failed_replies": 2
},
"created_at": "2026-03-28T10:00:00",
"last_check": "2026-03-28T14:30:00"
}
]
}
Status values: running, paused, stopped
Get Monitor Logs
Retrieve activity logs for a specific monitor.
Endpoint
GET /api/uploadposts/autodms/logs
Headers
| Name | Value | Description |
|---|---|---|
| Authorization | Apikey your-api-key-here | Your API key for authentication |
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| monitor_id | String | Yes | The monitor ID to query. |
Example Request
curl 'https://api.upload-post.com/api/uploadposts/autodms/[email protected]_my-profile_1234567890' \
-H 'Authorization: Apikey your-api-key-here'
Responses
- 200 OK
{
"success": true,
"logs": [
{
"type": "start",
"timestamp": "2026-03-28T10:00:00",
"message": "Monitor started"
},
{
"type": "success",
"timestamp": "2026-03-28T10:15:00",
"message": "31 DMs sent successfully"
}
],
"monitor_info": {
"post_url": "https://www.instagram.com/p/ABC123/",
"profile_username": "my-profile",
"is_active": true
}
}
Pause a Monitor
Temporarily pause a monitor without losing its configuration. The monitor stops checking for comments but can be resumed later.
Endpoint
POST /api/uploadposts/autodms/pause
Headers
| Name | Value | Description |
|---|---|---|
| Authorization | Apikey your-api-key-here | Your API key for authentication |
Body Parameters (JSON)
| Name | Type | Required | Description |
|---|---|---|---|
| monitor_id | String | Yes | The monitor ID to pause. |
Example Request
curl -X POST https://api.upload-post.com/api/uploadposts/autodms/pause \
-H 'Authorization: Apikey your-api-key-here' \
-H 'Content-Type: application/json' \
-d '{"monitor_id": "[email protected]_my-profile_1234567890"}'
Responses
- 200 OK
{
"success": true,
"message": "Monitor paused successfully"
}
Resume a Monitor
Resume a previously paused monitor. It will continue checking for new comments from where it left off.
Endpoint
POST /api/uploadposts/autodms/resume
Headers
| Name | Value | Description |
|---|---|---|
| Authorization | Apikey your-api-key-here | Your API key for authentication |
Body Parameters (JSON)
| Name | Type | Required | Description |
|---|---|---|---|
| monitor_id | String | Yes | The monitor ID to resume. |
Example Request
curl -X POST https://api.upload-post.com/api/uploadposts/autodms/resume \
-H 'Authorization: Apikey your-api-key-here' \
-H 'Content-Type: application/json' \
-d '{"monitor_id": "[email protected]_my-profile_1234567890"}'
Responses
- 200 OK
{
"success": true,
"message": "Monitor resumed successfully"
}
Stop a Monitor
Deactivate a monitor. The monitor stops running but its data is preserved.
Endpoint
POST /api/uploadposts/autodms/stop
Headers
| Name | Value | Description |
|---|---|---|
| Authorization | Apikey your-api-key-here | Your API key for authentication |
Body Parameters (JSON)
| Name | Type | Required | Description |
|---|---|---|---|
| monitor_id | String | Yes | The monitor ID to stop. |
Example Request
curl -X POST https://api.upload-post.com/api/uploadposts/autodms/stop \
-H 'Authorization: Apikey your-api-key-here' \
-H 'Content-Type: application/json' \
-d '{"monitor_id": "[email protected]_my-profile_1234567890"}'
Responses
- 200 OK
{
"success": true,
"message": "Monitor stopped successfully"
}
Delete a Monitor
Permanently delete a monitor and all its data.
Endpoint
POST /api/uploadposts/autodms/delete
Headers
| Name | Value | Description |
|---|---|---|
| Authorization | Apikey your-api-key-here | Your API key for authentication |
Body Parameters (JSON)
| Name | Type | Required | Description |
|---|---|---|---|
| monitor_id | String | Yes | The monitor ID to delete. |
Example Request
curl -X POST https://api.upload-post.com/api/uploadposts/autodms/delete \
-H 'Authorization: Apikey your-api-key-here' \
-H 'Content-Type: application/json' \
-d '{"monitor_id": "[email protected]_my-profile_1234567890"}'
Responses
- 200 OK
{
"success": true,
"message": "Monitor deleted successfully"
}
- 404 Not Found
{
"success": false,
"error": "Monitor not found or not owned by this account."
}
Important Notes
-
Instagram only. AutoDM monitors currently support Instagram only, using Meta's official Private Replies API.
-
One DM per comment. Each comment can only receive one private reply. Duplicate attempts are automatically prevented.
-
7-day comment window. Private replies can only be sent to comments less than 7 days old.
-
Daily DM limits. Upload-Post enforces daily DM limits per account (varies by plan). When the limit is reached, the monitor pauses and resumes the next day.
-
Auto-expiration. Monitors automatically stop after 15 days to prevent stale monitors from running indefinitely.
-
Rate limits. Meta enforces a limit of 200 DMs per hour per Instagram account. The monitor includes built-in delays between DMs to stay within limits.
How It Works
- You start a monitor with a post URL and reply message.
- Every
monitoring_intervalminutes, the monitor checks for new comments. - For each new comment, it sends a private DM using Meta's Private Replies API.
- It tracks which comments have already been replied to, avoiding duplicates.
- After 15 days, the monitor automatically stops.
Related Endpoints
- Instagram Comments — Read comments and send one-off private replies manually.
- Instagram Direct Messages — Send follow-up DMs and read conversations.
- Media List — Find post IDs and URLs for your Instagram content.