Paws Source API

Build integrations with the Paws Source platform. Create, read, update, and manage pet profiles, veterinary bookings, product orders, and grooming services through our RESTful API.

💡 Note: This documentation covers v2.x. Legacy v1 endpoints are deprecated and will sunset on Dec 31, 2025. Migration guides are available in the Changelog.

Overview

The Paws Source API follows REST principles and uses standard HTTP methods, status codes, and authentication patterns. All requests and responses are formatted as JSON. We support CORS for web applications and provide Postman collections for rapid testing.

Endpoints are grouped by resource and follow predictable naming conventions. Pagination is cursor-based for performance, and filtering/sorting is available on list endpoints.

Base URL & Versioning

https://api.pawssource.com/v2

All API requests must be made to the base URL above. API versioning is enforced via the URL path. You may also specify the version using the Api-Version header as a fallback.

Authentication

Access to the API is secured using Bearer tokens. Generate your API keys from the Developer Dashboard. Keep your secrets secure and never expose them in client-side code.

curl -X GET https://api.pawssource.com/v2/pets \n  -H "Authorization: Bearer pk_live_58f7a2b9c3d1e4f6" \n  -H "Content-Type: application/json"
const response = await fetch('https://api.pawssource.com/v2/pets', {
  headers: {
    'Authorization': 'Bearer pk_live_58f7a2b9c3d1e4f6',
    'Content-Type': 'application/json'
  }
});
const pets = await response.json();
import requests

headers = {"Authorization": "Bearer pk_live_58f7a2b9c3d1e4f6"}
response = requests.get("https://api.pawssource.com/v2/pets", headers=headers)
pets = response.json()

Rate Limits

To ensure platform stability, API requests are rate-limited based on your subscription tier. Limits are applied per API key and reset on a rolling 1-minute window.

PlanRequests/MinuteBurst Limit
Free / Developer6010
Pro30050
EnterpriseCustomCustom

When you exceed the limit, the API returns a 429 Too Many Requests status code. The Retry-After header indicates how many seconds to wait before retrying.

Pets Resource

Manage pet profiles, medical records, and identification tags.

GET /pets

Retrieve a paginated list of pets associated with the authenticated account.

Query Parameters

ParameterTypeDescription
speciesstringFilter by species (e.g., canine, feline, avian)
statusstringFilter by health status: active, inactive, deceased
cursorstringCursor for pagination. Omit for first page.
limitintegerNumber of records per page (1-100). Default: 20.
{
  "data": [
    {
      "id": "pet_8x2k9m4p",
      "name": "Buster",
      "species": "canine",
      "breed": "Golden Retriever",
      "age_years": 4,
      "weight_kg": 32.5,
      "status": "active",
      "created_at": "2023-08-12T14:22:00Z"
    }
  ],
  "meta": {
    "next_cursor": "eyJpZCI6InBldF84eDJrOW00cCJ9",
    "has_more": true
  }
}
POST /pets

Create a new pet profile.

Request Body

FieldTypeRequiredDescription
namestringYesPet's primary name
speciesstringYesSpecies identifier
breedstringNoBreed or mixed type
date_of_birthstringNoISO 8601 format
medical_notesstringNoInitial health conditions or allergies

Veterinary Appointments

POST /appointments

Schedule a veterinary consultation or routine checkup.

{
  "pet_id": "pet_8x2k9m4p",
  "vet_id": "vet_dr_sarah_m",
  "appointment_type": "routine_checkup",
  "requested_date": "2025-03-15",
  "preferred_time_slot": "morning",
  "notes": "Annual vaccination due"
}

Products & Orders

Search our curated catalog, check inventory, and place automated orders for nutrition, toys, and wellness supplies.

GET /products

Search and filter product catalog. Supports keyword, category, and dietary preference filters.

POST /orders

Create a new product order. Requires valid shipping and payment identifiers.

Grooming Services

PUT /grooming/bookings/:id

Update or reschedule an existing grooming appointment. Supports package upgrades and add-on services.

Error Handling

Paws Source uses conventional HTTP status codes to indicate success or failure. Codes in the 2xx range indicate success. 4xx errors indicate client-side issues (invalid parameters, authentication failures). 5xx errors indicate server-side issues.

CodeDescription
400Bad Request – Malformed syntax or missing required fields
401Unauthorized – Invalid or expired API key
403Forbidden – Insufficient permissions for the requested action
404Not Found – Resource does not exist
422Unprocessable Entity – Validation failure (see errors array)
429Too Many Requests – Rate limit exceeded
500Internal Server Error – Something went wrong on our end
{
  "error": {
    "code": "validation_failed",
    "message": "The request contains invalid parameters.",
    "details": [
      {
        "field": "date_of_birth",
        "issue": "must_be_valid_iso_date",
        "message": "Invalid date format provided."
      }
    ]
  }
}

Webhooks

Receive real-time notifications for key events. Configure webhook endpoints in your dashboard to listen for:

  • pet.created – New pet profile added
  • appointment.confirmed – Vet booking verified
  • order.shipped – Package dispatched with tracking
  • grooming.completed – Service finished with report

All webhook payloads include a X-Paws-Signature header for HMAC-SHA256 verification.

SDKs & Tools

Official libraries are available to accelerate development:

  • 🐍 Python: pip install pawssource
  • 📦 Node.js: npm install @pawssource/sdk
  • Java: Available on Maven Central
  • 🦀 Rust: Crates.io pawssource-rs
⚠️ Security Notice: Always validate webhook signatures server-side before processing payloads. Never trust unsigned callbacks.
Need help? Check our Troubleshooting Guide, join the Developer Discord, or contact api-support@pawssource.com.