Skip to main content

Authentication

The Prop AI Deals API uses bearer API keys for all programmatic access. Keys are created from your dashboard and sent on every request via the Authorization header.

API key format

Keys look like this:
  • Prefix: paid_ (37 characters total)
  • 32 hex characters of cryptographic randomness after the prefix
  • Hashed with HMAC-SHA256 in our database — we cannot recover a lost key
  • Cached in Redis for sub-millisecond validation
  • One key carries the full plan and scope set of the user who created it

Creating an API key

From the dashboard

  1. Open propaideals.co.uk/dashboard/api
  2. Click Create API Key
  3. Enter a descriptive name (e.g. production-server, staging-app)
  4. Copy the key from the modal — this is the only time it will be shown
  5. Store it in your secret manager (1Password, AWS Secrets Manager, Doppler, etc.)

Limits

  • Maximum 5 active keys per user
  • Revoke an old key before creating a 6th
  • Each key inherits its plan from your active subscription
  • All your keys share one quota. Rate limit, monthly request quota, and AI chat quota are pooled per account — creating more keys does not increase your limits (see Rate limits)

Sending the key

Send the key in the Authorization header on every request:

Scopes

Each plan grants a set of scopes. The middleware checks the request path against the required scope: Requests to a path your key doesn’t have scope for return:

Rotating keys

We recommend rotating production keys at least every 90 days, and immediately if you suspect exposure.
  1. Create a new key in the dashboard
  2. Deploy it to your application as a new env var
  3. Verify traffic is flowing on the new key (check last_used in the dashboard)
  4. Revoke the old key
Revocation is instant — within 5 minutes of revoking, no requests using that key will succeed (the Redis cache TTL is 5 minutes; you can call the dashboard “Revoke” button to purge it immediately).

Two authentication systems

Prop AI Deals has two separate authentication paths: The same endpoint can usually accept either token type. The middleware auto-detects which one was sent based on the prefix.

Security best practices

  • Never put API keys in client-side JavaScript, mobile apps, browser extensions, or public source control. Anyone with the key can use your full quota.
  • Use environment variables. process.env.PROPAIDEALS_API_KEY in Node, os.environ["PROPAIDEALS_API_KEY"] in Python.
  • Use a secrets manager in production (AWS Secrets Manager, GCP Secret Manager, HashiCorp Vault, Doppler, 1Password Secrets Automation).
  • Restrict by network where possible — IP allowlisting on your egress proxy adds defence in depth.
  • Monitor last_used in the dashboard to detect inactive keys.
  • Rotate regularly. If you ever leak a key, revoke it within minutes.
  • One key per environment. Use a separate key for production, staging, and local development.

Verifying a key works

Hit the cheapest endpoint with your key — it should return 200:
You should see HTTP/1.1 200 OK and headers including X-RateLimit-Limit, X-Monthly-Usage. If you get 401 invalid_api_key, the key is wrong, expired, or revoked. See Errors for the full reference.