Using an AI agent with Blueberry

An assistant that can use a browser or make HTTP requests can help you request a prescription refill or contact our pharmacy. Reading this page does not automatically connect a chatbot: its provider must support browsing actions or a configured API tool.

Every refill still needs pharmacy review. A submission is not a dispensing approval, confirmation that a prescription is ready, medical advice, or a promise of delivery.

Permission before sending

Before the final submission, the agent must show the exact information to be sent and obtain explicit approval from the patient or an authorized representative. Do not invent patient details or use an agent’s contact address instead of the patient-approved reply address. Send only information necessary for this action. The permission declaration is an attestation, not identity verification; the pharmacy may need to verify details directly.

Two ways to submit

Browser agents can use the labeled refill form or contact form, including Sunday access. Obtain approval before pressing the final submit button. Do not repeatedly click submit or switch forms when the result is uncertain.

For API agents, configure a tool using our OpenAPI document. No vendor account, login, API key, or CAPTCHA is required for this public submission-only interface. There is no patient lookup or prescription-status API. JSON bodies are limited to 64 KB; larger bodies receive HTTP 413 invalid_request.

HTTP submission instructions

  1. Get approval for this exact action and its content.
  2. Generate a fresh random UUID for one approved submission. Never put patient details in the key.
  3. POST JSON to the action below on the same HTTPS origin as this guide. Send Content-Type: application/json and Idempotency-Key: YOUR-RANDOM-UUID.
  4. Read the JSON status and retain the opaque receipt privately. Receipts are not public lookup links. Follow the retry instructions below.

Request a refill

POST /api/agent/v1/refill

Required: permission, first and last name, patient-approved email, date of birth, at least one medication name or prescription number, and pickup/delivery preference. Phone is optional. For delivery, supply street address, city and ZIP; address line 2 is optional. Use the patient-provided DOB in MM/DD/YYYY format, or Unknown for a pet whose DOB is unknown.

This is a fictional example only. Do not submit example requests to the pharmacy.

{
  "authorization": {
    "confirmed": true,
    "authority": "patient"
  },
  "agent": {
    "name": "Example assistant"
  },
  "request": {
    "firstName": "Example",
    "lastName": "Patient",
    "email": "patient@example.test",
    "dateOfBirth": "01/02/1990",
    "medications": [
      "Rx# EXAMPLE-NOT-REAL"
    ],
    "deliveryPreference": "pickup",
    "address": null
  }
}

Send a message

POST /api/agent/v1/contact

Required: permission, name, patient-approved email, and message (up to 2,000 characters). Phone and the urgent flag are optional. Agent name is optional on both actions and limited to 100 characters. Unknown fields are rejected; the OpenAPI document lists all limits.

{
  "authorization": {
    "confirmed": true,
    "authority": "authorized_representative"
  },
  "agent": {
    "name": "Example assistant"
  },
  "request": {
    "name": "Example Patient",
    "email": "patient@example.test",
    "message": "Fictional example: please contact me about a routine pharmacy question.",
    "urgent": false
  }
}

Receipts, retries and limits

  • 200 forwarded: the notification endpoint returned a successful response. Save the receipt and stop. This is not proof a staff member read the request or a prescription is ready. An identical repeat returns the same receipt without another send.
  • 400 invalid_request or 403 authorization_required: no delivery was attempted; correct the information or obtain permission first.
  • 409 processing: wait for Retry-After, then retry the identical JSON and key. After 60 seconds without a confirmed outcome, the response becomes delivery_unknown.
  • 409 key_conflict: a key was reused for different content. Do not use a new key to force a retry of the original action.
  • 429 rate_limited: honor Retry-After. Each action allows five attempts per hour per IP, shared with its browser form; retries and rejected attempts count. Agents behind a shared IP may reach this limit sooner. Limits are not permission to bulk-submit.
  • 503 not_attempted: no downstream send was attempted. If no receipt was issued, retry the identical key/body later. If a receipt was issued, the key is reserved: call the pharmacy before making a new submission.
  • 503 delivery_unknown or a lost response: delivery may already have occurred. For a lost response, retry only with the identical key/body within seven days to retrieve the result. For delivery_unknown, stop and call 412-612-2279 with the receipt. Never automatically resend with another key, via the browser, or by another agent.

Retry protection lasts seven days from the original attempt and survives app restarts. After seven days, do not automatically retry: contact the pharmacy. A timeout or an ambiguous downstream result cannot guarantee exactly-once processing. Agents must retain their original key; switching to another key or the browser form is a new request, not a safe retry.

Privacy and safety

Request bodies are forwarded to the existing pharmacy notification service, not added to logs or analytics. Retry records hold protected fingerprints, an opaque receipt and delivery state, not raw patient details; records are purged after the protection period by a daily cleanup or the next submission. Keep approvals and receipts private. The staff notification identifies the agent and the declared permission but does not treat it as verified identity.

The urgent flag marks a message for priority handling, not guaranteed immediate service. Do not use either action for medical emergencies: call 911 for a life-threatening emergency. For time-sensitive pharmacy needs, call 412-612-2279. Medication decisions stay with the patient’s licensed care team.