Emails the Rubicon admins whenever trailing-30d OpenAI spend crosses each $50 rung ($50, $100, ...). One email per crossing — no daily re-sends. Replaces the balance-based credits watchdog (deleted 2026-07-13).
cron 0 9 * * * (America/New_York) · runs as Yoga · next 2026-07-27 13:00:00
| Run | Status | Started | Took | Steps | Artifact |
|---|---|---|---|---|---|
| #14 | failed | 2026-07-26 13:00:26 | 0.6s | openai_credits_check·error step #0 (openai_credits_check) raised OpenAIHTTPError: OpenAI HTTP 429: {
"error": {
"message": "You've exceeded the 30 request(s) every 1 minute(s) rate limit, please slow down and try again.",
"type": "invalid_request_error",
"param": null,
"code": "rate_limit_exceeded"
}
} | — |
| #13 | failed | 2026-07-25 13:00:27 | 0.5s | openai_credits_check·error step #0 (openai_credits_check) raised OpenAIHTTPError: OpenAI HTTP 429: {
"error": {
"message": "You've exceeded the 30 request(s) every 1 minute(s) rate limit, please slow down and try again.",
"type": "invalid_request_error",
"param": null,
"code": "rate_limit_exceeded"
}
} | — |
| #12 | failed | 2026-07-24 13:00:23 | 0.5s | openai_credits_check·error step #0 (openai_credits_check) raised OpenAIHTTPError: OpenAI HTTP 429: {
"error": {
"message": "You've exceeded the 30 request(s) every 1 minute(s) rate limit, please slow down and try again.",
"type": "invalid_request_error",
"param": null,
"code": "rate_limit_exceeded"
}
} | — |
| #11 | failed | 2026-07-23 13:00:30 | 0.4s | openai_credits_check·error step #0 (openai_credits_check) raised OpenAIHTTPError: OpenAI HTTP 429: {
"error": {
"message": "You've exceeded the 30 request(s) every 1 minute(s) rate limit, please slow down and try again.",
"type": "invalid_request_error",
"param": null,
"code": "rate_limit_exceeded"
}
} | — |
| #10 | failed | 2026-07-22 13:00:47 | 0.5s | openai_credits_check·error step #0 (openai_credits_check) raised OpenAIHTTPError: OpenAI HTTP 429: {
"error": {
"message": "You've exceeded the 30 request(s) every 1 minute(s) rate limit, please slow down and try again.",
"type": "invalid_request_error",
"param": null,
"code": "rate_limit_exceeded"
}
} | — |
| #9 | failed | 2026-07-21 13:00:14 | 0.6s | openai_credits_check·error step #0 (openai_credits_check) raised OpenAIHTTPError: OpenAI HTTP 429: {
"error": {
"message": "You've exceeded the 30 request(s) every 1 minute(s) rate limit, please slow down and try again.",
"type": "invalid_request_error",
"param": null,
"code": "rate_limit_exceeded"
}
} | — |
| #8 | ran | 2026-07-20 13:01:00 | 6.9s | openai_credits_check·ok | — |
| #7 | failed | 2026-07-19 13:00:28 | 0.6s | openai_credits_check·error step #0 (openai_credits_check) raised OpenAIHTTPError: OpenAI HTTP 429: {
"error": {
"message": "You've exceeded the 30 request(s) every 1 minute(s) rate limit, please slow down and try again.",
"type": "invalid_request_error",
"param": null,
"code": "rate_limit_exceeded"
}
} | — |
| #6 | ran | 2026-07-18 13:00:09 | 8.9s | openai_credits_check·ok | — |
| #5 | ran | 2026-07-17 13:00:18 | 13.0s | openai_credits_check·ok | — |
| #4 | ran | 2026-07-16 13:00:15 | 14.1s | openai_credits_check·ok | — |
| #3 | failed | 2026-07-15 13:00:32 | 0.7s | openai_credits_check·error step #0 (openai_credits_check) raised OpenAIHTTPError: OpenAI HTTP 429: {
"error": {
"message": "You've exceeded the 30 request(s) every 1 minute(s) rate limit, please slow down and try again.",
"type": "invalid_request_error",
"param": null,
"code": "rate_limit_exceeded"
}
} | — |
| #2 | failed | 2026-07-14 13:00:15 | 0.9s | openai_credits_check·error step #0 (openai_credits_check) raised OpenAIHTTPError: OpenAI HTTP 429: {
"error": {
"message": "You've exceeded the 30 request(s) every 1 minute(s) rate limit, please slow down and try again.",
"type": "invalid_request_error",
"param": null,
"code": "rate_limit_exceeded"
}
} | — |
| #1 | ran | 2026-07-13 13:01:10 | 25.9s | openai_credits_check·ok | — |
Live view · refreshes every 15s · id 03dae87a-321b-406c-bb4b-3283c428eae7