Last updated

Quickstart

Issue your first card and pull its transactions, end to end.

Four calls: get a token, create a card, read it back, and query transactions. You need your sandbox OAuth client credentials and mTLS certificate — request both from Jeeves support if you don't have them yet.

1. Get an access token

Exchange your client credentials for a bearer token using the OAuth 2.0 client-credentials flow (token endpoint provided with your credentials):

curl -X POST "$JEEVES_TOKEN_URL" \
  --cert client.crt --key client.key \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d 'grant_type=client_credentials&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET'

Export the returned token as JEEVES_ACCESS_TOKEN for the rest of this guide.

2. Create a card

curl -X POST \
  'https://public-sandbox.tryjeeves.com/v1/cards' \
  -H "Authorization: Bearer $JEEVES_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "My First Card",
    "restrictions": {
      "spendLimit": 1000
    }
  }'

Only name and restrictions.spendLimit are required. The 201 response is the complete card, including the sensitive details object:

{
  "id": "123e4567-e89b-12d3-a456-426614174000",
  "name": "My First Card",
  "restrictions": { "spendLimit": 1000 },
  "details": {
    "cardNumber": "1234567890123456",
    "cardHolder": "John Doe",
    "expiryDate": "12/27",
    "cvvCode": "123"
  },
  "createdAt": "2026-09-29 10:35:00",
  "updatedAt": "2026-09-29 10:35:00"
}

3. Read it back

curl 'https://public-sandbox.tryjeeves.com/v1/cards/123e4567-e89b-12d3-a456-426614174000' \
  -H "Authorization: Bearer $JEEVES_ACCESS_TOKEN"

Note the single-card GET includes the sensitive details object (per the API schema) — treat each retrieval as a PAN reveal. GET /v1/cards (with page / pageSize) lists your whole fleet without details.

4. Pull transactions

curl -X POST \
  'https://public-sandbox.tryjeeves.com/v1/cards/transactions' \
  -H "Authorization: Bearer $JEEVES_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "source": "cards", "cardIds": ["123e4567-e89b-12d3-a456-426614174000"] }'

With cardIds set, you get the card's full history; without it, the window defaults to yesterday. See Reconciliation for the pagination model.

Where to next

  • Add spend controls — limits, windows, merchant categories.
  • Subscribe to webhooks so settlements push to you.
  • Or play with all of it interactively in the Playground.