TaskPulse documentation
Schedule HTTP jobs with confidence
Everything you need to organize projects, configure requests, choose schedules, authenticate securely, understand billing, and debug every execution.
Overview
TaskPulse is a scheduler for outbound HTTP calls. You describe a request — URL, method, headers, JSON payload, and credentials — and when it should run. TaskPulse queues each execution reliably, calls your endpoint, and records the full result.
Define
Build the request and pick a one-time, rate, or cron schedule in your timezone.
Execute
A managed scheduler queues each run; an executor calls your endpoint with retries.
Inspect
Every run stores its HTTP status, response body, duration, and error message.
Typical uses: triggering nightly backups, pinging sync webhooks, calling report endpoints on weekdays, or re-running a failed integration on demand.
Quick start
From zero to a tested job in about two minutes.
- 1Create an account and verify your email — verification is required before jobs can be scheduled.
- 2Optionally create a project (for example “Production webhooks”) to group related jobs.
- 3Select New job and enter a public HTTP or HTTPS endpoint, the method, headers, and JSON payload.
- 4Choose one-time, rate, or cron timing and confirm the timezone.
- 5Save the job, then press Run now for a safe first test without waiting for the schedule.
- 6Open Run history to inspect the HTTP status, response body, duration, or error message.
Projects
Projects keep jobs for different applications or environments separate. Create one project per product or environment — for example “Production webhooks” and “Staging webhooks” — and select the project while creating each job.
- All jobs remain visible under Jobs, where you can filter by project.
- A job can belong to at most one project, and you can move it at any time by editing the job.
- Deleting a project never deletes its jobs — they simply become unassigned.
HTTP requests
TaskPulse supports GET, POST, PUT, PATCH, and DELETE. The target must be a public HTTP(S) URL — localhost and private network addresses are blocked in every environment. Headers and payloads are JSON objects; the editor validates as you type, supports Tab indentation, and can format or minify valid JSON.
Example headers
{
"content-type": "application/json",
"x-event-source": "taskpulse"
}Example payload
{
"event": "sync.requested",
"source": "taskpulse",
"data": {
"mode": "incremental"
}
}For GET requests the payload is omitted. A content-type: application/json header is sent by default and can be overridden. Requests time out after your configured limit (30 seconds maximum), and the stored response body is capped at 2,000 characters.
Schedules
Three schedule types cover one-off tasks, fixed intervals, and calendar rules. All of them run in the IANA timezone you select, so 09:00 means 09:00 in your timezone — not UTC.
One-time
Runs once at an exact local date and time, then removes itself automatically. Pick a time at least a minute in the future.
UI: Jul 20, 2026 09:30 · Asia/Kolkata Scheduler: at(2026-07-20T09:30:00)
Rate
Repeats at a fixed interval in minutes, hours, or days. Use a rate when spacing matters more than the exact clock time. The first run follows shortly after saving.
UI: Every 15 minutes Scheduler: rate(15 minutes) UI: Every 1 day Scheduler: rate(1 day)
Cron
Six fields — minute, hour, day-of-month, month, day-of-week, year — for calendar rules. Use ? in day-of-month or day-of-week when the other field already defines the day.
0 9 ? * MON-FRI * # Weekdays at 09:00 0 2 * * ? * # Every day at 02:00 30 8 1 * ? * # The 1st of each month at 08:30 0 */6 * * ? * # Every 6 hours
Rate and cron schedules require the Pay As You Go plan; the Free plan supports one-time schedules only. See Plans and billing.
Authentication
Four authentication modes cover most APIs. Credentials are encrypted with AES-256-GCM before they are stored and are never included in scheduler or queue messages. Editing a job keeps its existing credentials unless you explicitly enter new ones.
1. None
For public endpoints or webhooks that validate the payload themselves. TaskPulse sends only your configured headers.
2. Bearer token
Provide a token once; each run adds it to the Authorization header. Ideal for APIs that issue personal access tokens or service tokens.
POST /api/backup HTTP/1.1 Host: example.com Authorization: Bearer sk_live_9f8e7d6c5b4a Content-Type: application/json
3. API key / custom header
Choose both the header name and the secret value — works with any key-based API, for example X-API-Key or X-Webhook-Token.
POST /api/report HTTP/1.1 Host: example.com X-API-Key: 4f2a09c1-7b3e-4d55-9a10-2f8f4be6d001 Content-Type: application/json
4. Signed webhook (HMAC-SHA256)
The strongest option: you store a shared secret, and every run is signed so your server can verify the request really came from TaskPulse and was not modified. Two headers are sent with each request:
X-TaskPulse-Timestamp: 2026-07-15T09:30:00.000Z X-TaskPulse-Signature: sha256=88a1c0e6…
The signature is HMAC-SHA256(timestamp + "." + rawBody, secret). Verify it on your server like this:
import crypto from "node:crypto";
function verifyTaskPulse(req, secret) {
const timestamp = req.headers["x-taskpulse-timestamp"];
const received = req.headers["x-taskpulse-signature"]; // "sha256=<hex>"
const expected = "sha256=" + crypto
.createHmac("sha256", secret)
.update(timestamp + "." + req.rawBody)
.digest("hex");
// Reject stale timestamps (e.g. older than 5 minutes) to stop replays.
const fresh = Date.now() - Date.parse(timestamp) < 5 * 60 * 1000;
return fresh && crypto.timingSafeEqual(
Buffer.from(received),
Buffer.from(expected),
);
}Run and operate jobs
Every job keeps its schedule, manual controls, and history together, so day-two operations never require digging through infrastructure.
Run now
Queues one execution immediately without changing the schedule — the fastest way to test a job safely.
Pause / Resume
Pause disables deliveries while keeping configuration and history; Resume re-enables the same schedule.
Edit
Update the request, schedule, timezone, authentication, or limits. Changes apply to the live schedule immediately.
Delete
Removes the schedule permanently and soft-deletes the job. Run history for past executions is retained.
Retries: when a run fails (non-2xx response, timeout, or network error), delivery is retried automatically up to your configured maximum attempts. Messages that keep failing are moved to a dead-letter queue instead of retrying forever.
Run history
Each execution creates a run record you can open from the job page (5 runs per page) or the dashboard. A run moves through queued → running → success or failed.
| Field | What it tells you |
|---|---|
| Status | queued, running, success, or failed. |
| Attempt | Which delivery attempt this was (1 = first try, higher = retry). |
| HTTP status | The response code from your endpoint, when one was received. |
| Response body | The first 2,000 characters of the response, for debugging. |
| Error message | Timeout, blocked URL, or the failure reason when no 2xx was returned. |
| Timing | When the run started and finished, so you can measure duration. |
Plans and billing
TaskPulse has one free tier and one usage-based tier — no subscriptions, no per-seat pricing.
Free
Up to 2 jobs, one-time schedules only. Full request configuration, Run now, and complete run history are included. Delete a finished job to free a slot.
$0 · forever
Pay As You Go
Unlimited jobs on any schedule type. You prepay for invocations; every recorded run (including retries) consumes one. Credits never expire.
$1 per 100 invocations
How credits work
- 1Open Account → Usage and billing and pick a credit pack (or a custom multiple of 100).
- 2Pay with Stripe (card) or Razorpay (card, UPI, netbanking, wallet). Your first purchase activates Pay As You Go automatically.
- 3Credits are added the moment payment is confirmed; your remaining balance, usage, and dollar value stay visible on the Account page.
- 4When the balance reaches zero, new runs are blocked (existing configuration is kept) until you top up again.
100 invocations = $1 500 invocations = $5 1,000 invocations = $10 Every recorded run (including each retry attempt) = 1 invocation
Security
TaskPulse is designed so that a leaked message queue or log line never exposes your credentials.
- Auth secrets are encrypted (AES-256-GCM) at rest and excluded from scheduler and queue messages — messages carry only the job id.
- Only public http(s) URLs are allowed; localhost and private/internal network ranges are rejected at creation time and again at execution time.
- Requests are limited to a 30-second timeout, and stored response bodies are truncated to 2,000 characters.
- Sessions are server-managed HTTP-only cookies; email verification is required before jobs can be created or run.
- Payment card data never touches TaskPulse — checkout happens on Stripe or Razorpay, and Razorpay callbacks are signature-verified server-side.
Troubleshooting
Start with the run record — it almost always names the problem. These are the most common situations:
The run failed with an HTTP status
Your endpoint responded with a non-2xx code. The response body is stored on the run — open it to see your server's error. TaskPulse retries automatically before giving up.
The run failed with a timeout
The endpoint did not respond within the job's timeout (30s max). Increase the timeout in Edit, or make the endpoint respond faster — long work should be queued on your side and acknowledged immediately.
“Target URL resolves to a private or local address”
TaskPulse only calls public URLs. Tunnels to localhost (for example ngrok-style URLs) work; raw localhost/LAN addresses do not.
I can't create a job
Check three things: your email is verified, you are within the Free plan's 2-job limit (or on Pay As You Go), and your credit balance is above zero for recurring schedules.
A recurring job stopped running
Check the job is not paused and your invocation balance is not empty. Both states are shown on the job page and the Account page.
The one-time job I ran is finished — can I reuse it?
One-time schedules remove themselves after running. Duplicate the configuration into a new job, or delete the old one to free a Free-plan slot.
Still stuck? The FAQ covers pricing and payment questions, and every page of the app links back to this guide.