Velocity Labs

Python code audit

A code audit for Django, FastAPI, and Flask apps.

Python apps get their own checklist, written for the problems Django, FastAPI, and Flask apps actually have. We review your code against it and tell you in plain English which findings matter and what to fix first.

What a Python code audit checks

Every Python audit covers the eight areas in every code audit, plus checks written for Django, FastAPI, and Flask.

  • Who can see whose data

    Lookups and Django REST Framework viewsets that aren’t scoped to the signed-in user, no default permission policy, FastAPI routes that skip the router’s auth, and tenant data that leaks between accounts.

  • Sign-in, sessions, and secrets

    Password, session, and token settings, throttling on login and password reset, a SECRET_KEY committed to the repo, and the Django admin open wider than your staff need.

  • Injection and unsafe input

    Raw SQL and f-string queries, mark_safe and |safe on user content, serializers and response models that expose or accept fields they shouldn’t, open redirects, and uploads.

  • Production settings

    DEBUG or the Werkzeug debugger reachable in production, browsable APIs and OpenAPI docs left public, CORS set for the wrong kind of auth, and proxy headers trusted blindly.

  • Data and speed under real traffic

    N+1 queries, missing indexes, emails and tasks fired before the transaction commits, blocking calls inside async routes, and connection pools that don’t fit your workers.

  • Version and upgrade path

    Whether your Python, Django, Flask, FastAPI, and Pydantic versions still get security fixes, and the deprecated APIs and abandoned packages that will block the next upgrade.

More than a scanner report

Every Python audit runs pip-audit, bandit, ruff, and Semgrep against your code, but scanners only find the patterns they know. The findings that hurt most in Python apps are usually ones a scanner can’t see:

  • A viewset that returns every customer’s invoices to any signed-in user
  • A sub-app mounted on FastAPI that never got the auth dependency
  • A PATCH endpoint that quietly resets the fields you didn’t send
  • A confirmation email sent before the order was saved

Those come from reading the code, with a checklist written for Django, FastAPI, and Flask rather than a generic one.

Python code audit pricing

Three levels, each a fixed fee. Essentials covers the most important Python checks; Standard and Comprehensive cover all of them. See everything every audit includes.

Essentials

A fast health check

$1,000 fixed fee

Best for: Answering "is this codebase OK?" before you buy, hire, or launch.

  • Review of your code, configuration, CI, and database schema
  • Automated scans for security issues, vulnerable and outdated dependencies, leaked secrets, and code quality
  • The essential checks for each technology in your stack
  • Critical and high findings written up in full
Order Essentials

Comprehensive

Due diligence depth

$2,500 fixed fee

Best for: Acquisitions and technical due diligence, compliance preparation, or after an incident.

Everything in Standard, plus:

  • Line-by-line review of sign-in, payments, and data access
  • Steps to reproduce every finding
  • Your public website: accessibility, search visibility, and security headers
  • Domain and email setup: DNS, SPF, DKIM, and DMARC
Order Comprehensive

Is your Django version still supported?

Django supports each feature release with security fixes for about sixteen months, and each LTS release for about three years. Python versions get security fixes for five years, and Python 3.10 reached end of life in October 2026. Every Python audit checks your Python and framework versions against the official support policies.

If you’re behind, the report lays out the upgrade one step at a time, and Standard and Comprehensive also list the deprecated APIs and packages that stand in the way. When you’re ready, we can do the upgrade too.

Django support today Latest: 6.1.3
  • Django 6.1 Supported
    Bug fixes
    Until Apr 2027
    Security fixes
    Until Dec 2027
  • Django 6.0 Security only
    Bug fixes
    Ended Aug 4, 2026
    Security fixes
    Until Apr 2027
  • Django 5.2 LTS Security only
    Bug fixes
    Ended Dec 3, 2025
    Security fixes
    Until Apr 2028
  • Django 5.1 and older Unsupported
    Bug fixes
    Ended by Apr 2025
    Security fixes
    Ended by Apr 7, 2026

Checked November 13, 2026 against the Django release roadmap.

Python work we've built

rentcheck results for a 2-bedroom home in 85013: a Fair Market Rent of $1,800 a month and HUD's income limits

rentcheck

Enter a ZIP code and see HUD's Fair Market Rent and income limits for the area, whether your rent is above it, and whether you may qualify for housing help.

Questions about Python code audits

How much does a Python code audit cost?

The same fixed fees as every audit: $1,000 for Essentials, $1,500 for Standard, and $2,500 for Comprehensive. Compare the levels. Hire us for hourly development within 30 days of your report and up to $1,000 of the fee comes off your first invoice.

Is a Django security audit included?

Yes. Every Python code audit includes a security audit: data access, the admin, sign-in, sessions, secrets, injection, and production settings, checked against the known weaknesses of your framework, plus pip-audit, bandit, and Semgrep scans.

Do you audit FastAPI and Flask apps too?

Yes. FastAPI and Flask apps get their own checks: router and blueprint auth, response models that leak fields, sessions, the debugger, async routes that block, and Pydantic and SQLAlchemy versions.

Which versions of Django do you audit?

Any of them, from apps on a long-unsupported release to apps on the latest one. If you’re behind, the report says how far and lays out the upgrade one step at a time; Standard and Comprehensive also list the packages that stand in the way.

Do you need to run our app?

Essentials reviews the code without running it. Standard and Comprehensive boot your app and run your tests in an isolated, disposable environment. Either way, we never connect to your production servers, databases, or accounts.

Can you fix what the audit finds?

Yes. We can work alongside your team or take it on ourselves, and the audit credit applies.

Order a Python code audit

Tell us about your Python app and we'll recommend the level that fits.

Prefer to talk first? Book a 30-minute call