---
name: jobero-paid-search
description: Register for a Jobero API key, buy prepaid search credits via Stripe Checkout (pack1 or pack3), submit a CV and preferences, poll for matches, and receive tailored PDFs by email.
---

# Jobero paid search

Use this skill when a user wants Jobero to run a paid job search via the Agent API.

**Searches are paid only. There are no free runs, no trial, and no free first search.** Every search consumes exactly one paid credit. Credits do not expire.

## Prerequisites

- User email (delivery + account; must match `cfg_email` on each search)
- CV file (pdf/docx/doc/txt, max 10MB)
- Preference answers (location, remote/hybrid, regions, seniority, industries)
- Payment for credits, by Stripe Checkout or x402 (no credits are granted at registration)

## Credit packs

| Pack | Credits | Price | x402 (USDC) | Notes |
|---|---|---|---|---|
| `pack1` | 1 | EUR 9.99 | 11.50 | Single search |
| `pack3` | 3 | EUR 24.99 | 28.75 | **Best value** (recommended default) |

## Paying with x402

If you can sign x402 payments, skip Stripe: the 402 from `POST /api/v1/searches`
carries a challenge in the base64 `PAYMENT-REQUIRED` header (protocol v2) and in
the body under `accepts` (v1). Retry with `PAYMENT-SIGNATURE` (v2) or `X-PAYMENT`
(v1); credits are added once settlement confirms, and a receipt comes back in
`PAYMENT-RESPONSE`. Send the same header to `POST /api/v1/checkout` to top up
without starting a search. An API key is still required. x402 currently settles
on Base Sepolia (testnet) while support is in preview.

## Procedure

1. Discover: `GET https://jobero.ai/.well-known/oauth-protected-resource` then `GET https://jobero.ai/.well-known/oauth-authorization-server` and read `agent_auth`.
2. Register: `POST https://jobero.ai/api/v1/register` with `{"email","name"}` — store `api_key` once. Returns **0 credits**. If email is already a Jobero web account, you get **409** — create a key at `POST /api/v1/keys` while signed in instead.
3. Buy credits: `POST https://jobero.ai/api/v1/checkout` with `Authorization: Bearer <api_key>` and body `{"pack":"pack3"}` (default when body omitted) — open `checkout_url` for the human to pay. Promotion codes are not accepted.
4. Confirm credits: `GET https://jobero.ai/api/v1/checkout` until `credits_available > 0`, or `GET https://jobero.ai/api/v1/checkout/success?session_id=…` if the webhook is delayed.
5. Start search: `POST https://jobero.ai/api/v1/searches` multipart `profile` + `cv` (`cfg_email` must match registration). Optional `Idempotency-Key` header prevents double-charging on retry. Returns **402** when balance is zero.
6. Poll: `GET https://jobero.ai/api/v1/searches?run_id=…` until `run.terminal` is true — read `matches` on success (each has `title`, `company`, `url`, `score`, `rank`, `source`, `match_reason`). Only one search may run at a time; a second start returns **429** until the first finishes.
7. PDFs: tailored CV and cover letter PDFs are emailed to the account email. Document downloads over the API are not available yet.

Full protocol: https://jobero.ai/auth.md  
OpenAPI: https://jobero.ai/openapi.json  
Overview: https://jobero.ai/agents
