{"components":{"schemas":{"Error":{"properties":{"error":{"type":"string"},"message":{"type":"string"}},"required":["error","message"],"type":"object"}},"securitySchemes":{"bearer":{"description":"pk_live_ API key or a session id","scheme":"bearer","type":"http"}}},"info":{"description":"92% fewer tokens across three checks. 99.4% fewer when nothing is new. Exact, replayable output with receipts. Versioned at /v1. Invite beta: sign in at /login, or POST /v1/signup with email and invite_code. POST /v1/waitlist stores an email when you have no code. No mail is sent. Payments are off.","title":"Asipipes API","version":"0.1.0","x-source":"https://asipipes.com/developers","x-updated-at":"2026-10-17T00:00:00Z"},"openapi":"3.1.0","paths":{"/v1/alerts":{"get":{"responses":{"200":{"description":"JSON body. Records include source_url and updated_at."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"JSON error"},"429":{"description":"Rate limited. Retry-After is set.","headers":{"Retry-After":{"schema":{"type":"string"}}}}},"security":[{"bearer":[]}],"summary":"Use when you need the alert settings for this workspace."},"put":{"responses":{"200":{"description":"JSON body. Records include source_url and updated_at."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"JSON error"},"429":{"description":"Rate limited. Retry-After is set.","headers":{"Retry-After":{"schema":{"type":"string"}}}}},"security":[{"bearer":[]}],"summary":"Use when you are replacing the alert settings for this workspace."}},"/v1/billing":{"get":{"responses":{"200":{"description":"JSON body. Records include source_url and updated_at."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"JSON error"},"429":{"description":"Rate limited. Retry-After is set.","headers":{"Retry-After":{"schema":{"type":"string"}}}}},"security":[{"bearer":[]}],"summary":"Use when you need the current plan. Checkout is off during the invite beta. Read-only."}},"/v1/keys":{"get":{"responses":{"200":{"description":"JSON body. Records include source_url and updated_at."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"JSON error"},"429":{"description":"Rate limited. Retry-After is set.","headers":{"Retry-After":{"schema":{"type":"string"}}}}},"security":[{"bearer":[]}],"summary":"Use when you need the key prefixes on this workspace, not the secret values."},"post":{"responses":{"200":{"description":"JSON body. Records include source_url and updated_at."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"JSON error"},"429":{"description":"Rate limited. Retry-After is set.","headers":{"Retry-After":{"schema":{"type":"string"}}}}},"security":[{"bearer":[]}],"summary":"Use when an agent needs its own pk_live_ key. The full key is returned once."}},"/v1/keys/{id}/revoke":{"post":{"responses":{"200":{"description":"JSON body. Records include source_url and updated_at."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"JSON error"},"429":{"description":"Rate limited. Retry-After is set.","headers":{"Retry-After":{"schema":{"type":"string"}}}}},"security":[{"bearer":[]}],"summary":"Use when a pk_live_ key should stop working. Revokes it by prefix."}},"/v1/notifications":{"get":{"responses":{"200":{"description":"JSON body. Records include source_url and updated_at."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"JSON error"},"429":{"description":"Rate limited. Retry-After is set.","headers":{"Retry-After":{"schema":{"type":"string"}}}}},"security":[{"bearer":[]}],"summary":"Use when you need the webhook URLs already registered, without the signing secret. Read-only."},"post":{"responses":{"200":{"description":"JSON body. Records include source_url and updated_at."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"JSON error"},"429":{"description":"Rate limited. Retry-After is set.","headers":{"Retry-After":{"schema":{"type":"string"}}}}},"security":[{"bearer":[]}],"summary":"Use when you want a ping only when a pipe finds new items, instead of polling. Registers an HTTPS webhook. Empty runs stay quiet."}},"/v1/notifications/{id}":{"delete":{"responses":{"200":{"description":"JSON body. Records include source_url and updated_at."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"JSON error"},"429":{"description":"Rate limited. Retry-After is set.","headers":{"Retry-After":{"schema":{"type":"string"}}}}},"security":[{"bearer":[]}],"summary":"Use when a webhook should stop receiving pings. Permanently deletes the target and its delivery log. destructiveHint is true."},"get":{"responses":{"200":{"description":"JSON body. Records include source_url and updated_at."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"JSON error"},"429":{"description":"Rate limited. Retry-After is set.","headers":{"Retry-After":{"schema":{"type":"string"}}}}},"security":[{"bearer":[]}],"summary":"Use when you need one webhook target, without the signing secret."}},"/v1/notifications/{id}/deliveries":{"get":{"responses":{"200":{"description":"JSON body. Records include source_url and updated_at."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"JSON error"},"429":{"description":"Rate limited. Retry-After is set.","headers":{"Retry-After":{"schema":{"type":"string"}}}}},"security":[{"bearer":[]}],"summary":"Use when a webhook did not fire and you need the last attempts: status, HTTP code, and latency. Secrets are omitted. Read-only."}},"/v1/notifications/{id}/test":{"post":{"responses":{"200":{"description":"JSON body. Records include source_url and updated_at."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"JSON error"},"429":{"description":"Rate limited. Retry-After is set.","headers":{"Retry-After":{"schema":{"type":"string"}}}}},"security":[{"bearer":[]}],"summary":"Use when you want one immediate JSON ping to check a webhook, not a real new-items event."}},"/v1/pipes":{"get":{"responses":{"200":{"description":"JSON body. Records include source_url and updated_at."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"JSON error"},"429":{"description":"Rate limited. Retry-After is set.","headers":{"Retry-After":{"schema":{"type":"string"}}}}},"security":[{"bearer":[]}],"summary":"Use when you need the pipes this workspace can run before you call one. Lists published pipes and unpublished drafts. Read-only."},"post":{"responses":{"200":{"description":"JSON body. Records include source_url and updated_at."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"JSON error"},"429":{"description":"Rate limited. Retry-After is set.","headers":{"Retry-After":{"schema":{"type":"string"}}}}},"security":[{"bearer":[]}],"summary":"Use when a draft should become a pipe__ tool agents can call. Publishes the YAML. A draft is not runnable until this succeeds."}},"/v1/pipes/{name}":{"delete":{"responses":{"200":{"description":"JSON body. Records include source_url and updated_at."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"JSON error"},"429":{"description":"Rate limited. Retry-After is set.","headers":{"Retry-After":{"schema":{"type":"string"}}}}},"security":[{"bearer":[]}],"summary":"Use when this workspace should stop running a pipe. Permanently deletes the pipe and its schedules. destructiveHint is true."},"get":{"responses":{"200":{"description":"JSON body. Records include source_url and updated_at."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"JSON error"},"429":{"description":"Rate limited. Retry-After is set.","headers":{"Retry-After":{"schema":{"type":"string"}}}}},"security":[{"bearer":[]}],"summary":"Use when you need one pipe's YAML before you edit or run it."}},"/v1/pipes/{name}/run":{"post":{"responses":{"200":{"description":"JSON body. Records include source_url and updated_at."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"JSON error"},"429":{"description":"Rate limited. Retry-After is set.","headers":{"Retry-After":{"schema":{"type":"string"}}}}},"security":[{"bearer":[]}],"summary":"Use instead of fetching and reading the source yourself. Runs the published pipe and returns the output and a receipt."}},"/v1/runs":{"get":{"responses":{"200":{"description":"JSON body. Records include source_url and updated_at."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"JSON error"},"429":{"description":"Rate limited. Retry-After is set.","headers":{"Retry-After":{"schema":{"type":"string"}}}}},"security":[{"bearer":[]}],"summary":"Use when you need recent runs, filtered by pipe or status. status=all is ignored. cursor and limit paginate."}},"/v1/runs/{id}":{"delete":{"responses":{"200":{"description":"JSON body. Records include source_url and updated_at."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"JSON error"},"429":{"description":"Rate limited. Retry-After is set.","headers":{"Retry-After":{"schema":{"type":"string"}}}}},"security":[{"bearer":[]}],"summary":"Use when a run, its tape, and its snapshot should be removed. Permanent. destructiveHint is true."},"get":{"responses":{"200":{"description":"JSON body. Records include source_url and updated_at."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"JSON error"},"429":{"description":"Rate limited. Retry-After is set.","headers":{"Retry-After":{"schema":{"type":"string"}}}}},"security":[{"bearer":[]}],"summary":"Use when you need the receipt, output, or per-step hashes of a run you already started. Read-only."}},"/v1/runs/{id}/replay":{"post":{"responses":{"200":{"description":"JSON body. Records include source_url and updated_at."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"JSON error"},"429":{"description":"Rate limited. Retry-After is set.","headers":{"Retry-After":{"schema":{"type":"string"}}}}},"security":[{"bearer":[]}],"summary":"Use when you need to prove a past run still matches its receipt. Replays the stored snapshot. Does not call the network or count as a run."}},"/v1/schedules":{"get":{"responses":{"200":{"description":"JSON body. Records include source_url and updated_at."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"JSON error"},"429":{"description":"Rate limited. Retry-After is set.","headers":{"Retry-After":{"schema":{"type":"string"}}}}},"security":[{"bearer":[]}],"summary":"Use when you need every cron on this workspace. Each row has pipe, ordinal, cron, tz, enabled, next_run, and last_run."}},"/v1/schedules/{pipe}":{"get":{"responses":{"200":{"description":"JSON body. Records include source_url and updated_at."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"JSON error"},"429":{"description":"Rate limited. Retry-After is set.","headers":{"Retry-After":{"schema":{"type":"string"}}}}},"security":[{"bearer":[]}],"summary":"Use when you need every cron for one pipe. schedules[] has ordinal, cron, tz, next_run, last_run, and last_run_id."}},"/v1/secrets":{"get":{"responses":{"200":{"description":"JSON body. Records include source_url and updated_at."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"JSON error"},"429":{"description":"Rate limited. Retry-After is set.","headers":{"Retry-After":{"schema":{"type":"string"}}}}},"security":[{"bearer":[]}],"summary":"Use when you need secret names, not values. Values are write-only."}},"/v1/signup":{"post":{"requestBody":{"content":{"application/json":{"schema":{"properties":{"email":{"format":"email","type":"string"},"invite_code":{"description":"Invite code. Compared as a SHA-256 of the trimmed, lowercased value. A returning email does not consume another seat.","type":"string"}},"required":["email","invite_code"],"type":"object"}}},"required":true},"responses":{"200":{"description":"JSON with api_key (pk_live_), workspace, plan free, and the MCP URL. The key is shown once."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"JSON error"},"429":{"description":"10 attempts per hour per IP and per email. Retry-After is set.","headers":{"Retry-After":{"schema":{"type":"string"}}}}},"summary":"Use when you have an invite code and need a pk_live_ key. No verification email is sent."}},"/v1/signup/verify":{"post":{"responses":{"200":{"description":"JSON body. Records include source_url and updated_at."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"JSON error"},"429":{"description":"Rate limited. Retry-After is set.","headers":{"Retry-After":{"schema":{"type":"string"}}}}},"summary":"Use only for an old dev login code. Invite beta uses POST /v1/signup and does not send a verification email."}},"/v1/usage":{"get":{"responses":{"200":{"description":"JSON body. Records include source_url and updated_at."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"JSON error"},"429":{"description":"Rate limited. Retry-After is set.","headers":{"Retry-After":{"schema":{"type":"string"}}}}},"security":[{"bearer":[]}],"summary":"Use when you need today's runs, fetches, and deliveries before you start another check. Read-only."}},"/v1/waitlist":{"post":{"requestBody":{"content":{"application/json":{"schema":{"properties":{"company":{"description":"Honeypot. Leave empty.","type":"string"},"email":{"format":"email","type":"string"}},"required":["email"],"type":"object"}}},"required":true},"responses":{"200":{"description":"JSON {ok:true, message}. A duplicate email returns the same shape with duplicate:true."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"JSON error"},"429":{"description":"10 attempts per hour per IP. Retry-After is set.","headers":{"Retry-After":{"schema":{"type":"string"}}}}},"summary":"Use when you have no invite code and want to leave an email. No mail is sent. The company field is a honeypot and must be empty."}}},"servers":[{"url":"https://asipipes.com"}]}