Skip to main content

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

NameValueDescription
AuthorizationApikey your-api-key-hereYour API key for authentication

Body Parameters (JSON)

NameTypeRequiredDescription
post_urlStringYesThe Instagram post URL to monitor for comments.
reply_messageStringYesThe DM message to send to each new commenter.
profile_usernameStringYesProfile username (as configured in Upload-Post). Must have Instagram connected.
monitoring_intervalIntegerNoMinutes 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

NameValueDescription
AuthorizationApikey your-api-key-hereYour 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

NameValueDescription
AuthorizationApikey your-api-key-hereYour API key for authentication

Query Parameters

NameTypeRequiredDescription
monitor_idStringYesThe 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

NameValueDescription
AuthorizationApikey your-api-key-hereYour API key for authentication

Body Parameters (JSON)

NameTypeRequiredDescription
monitor_idStringYesThe 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

NameValueDescription
AuthorizationApikey your-api-key-hereYour API key for authentication

Body Parameters (JSON)

NameTypeRequiredDescription
monitor_idStringYesThe 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

NameValueDescription
AuthorizationApikey your-api-key-hereYour API key for authentication

Body Parameters (JSON)

NameTypeRequiredDescription
monitor_idStringYesThe 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

NameValueDescription
AuthorizationApikey your-api-key-hereYour API key for authentication

Body Parameters (JSON)

NameTypeRequiredDescription
monitor_idStringYesThe 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

  1. Instagram only. AutoDM monitors currently support Instagram only, using Meta's official Private Replies API.

  2. One DM per comment. Each comment can only receive one private reply. Duplicate attempts are automatically prevented.

  3. 7-day comment window. Private replies can only be sent to comments less than 7 days old.

  4. 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.

  5. Auto-expiration. Monitors automatically stop after 15 days to prevent stale monitors from running indefinitely.

  6. 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

  1. You start a monitor with a post URL and reply message.
  2. Every monitoring_interval minutes, the monitor checks for new comments.
  3. For each new comment, it sends a private DM using Meta's Private Replies API.
  4. It tracks which comments have already been replied to, avoiding duplicates.
  5. After 15 days, the monitor automatically stops.