---
name: selfping-send-text
description: Text the SelfPing account owner's own phone when a long run finishes, when something fails, or when a decision is needed while they are away from the terminal. Also covers app notifications like signups, failed payments and form submissions.
---

# Text yourself with SelfPing

SelfPing sends a text message to the phone number that owns the API key. It cannot text anyone else, so there is no recipient argument and no risk of messaging a third party.

## When to send

Send when:

- a run takes more than a couple of minutes and the user is not watching
- anything fails, or needs a decision only they can make
- they explicitly asked to be told when something finishes

Do not send for a routine pass with no surprises, or while they are clearly sitting at the terminal reading the output. A text that was not worth the interruption still costs a credit, and it teaches them to ignore the next one.

## What to write

The message arrives on a lock screen with no terminal behind it, so it has to stand on its own.

- Lead with the outcome, not the process.
- Include the numbers that matter: counts, durations, error totals.
- Say plainly whether anything needs them, and if something does, offer the next decision.
- Keep it under 160 characters. Short texts read best on a lock screen, and every send costs one credit regardless of length.

Worth sending:

> Prod migration finished clean. 1.2M rows, 0 errors, 6m41s. Nothing needs you.

> Deploy blocked: 3 type errors in app/dashboard/page.tsx, nothing shipped. Fix the types, or back out the bump?

Not worth sending:

> Task complete.

## Credentials

Read the key from the `SELFPING_API_KEY` environment variable. If it is missing, tell the user to generate one at https://www.selfping.com/dashboard rather than prompting for it inline.

## Request

```bash
curl -X POST https://www.selfping.com/api/sms \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $SELFPING_API_KEY" \
  -d '{"message": "Nightly backup finished in 4m12s"}'
```

The only body field is `message`, a required string. Every send costs one credit regardless of length; keep it under 160 characters so it reads well on a lock screen.

## Responses

- `200` with body `SMS sent successfully` on success.
- `400` when `message` is missing or the key has no phone number attached.
- `403` when the key is invalid, revoked, or out of credits.

## Limits

Free accounts get 10 texts per month, refilling on the 1st. Check the remaining balance at https://www.selfping.com/dashboard. Batch related updates into one message instead of sending several in a row.

## MCP alternative

If the client speaks MCP, connect to https://www.selfping.com/api/mcp and call the `send_ping` tool instead of using curl. Authenticate with the same bearer key.

## Firing on every run instead

If the user wants a text every time their agent stops, whether it thought to send one or not, a completion hook does that without involving this skill. See https://www.selfping.com/agents.
