from typing import Annotated
from fastapi import FastAPI, Form, HTTPException
from private_captcha import Client, PrivateCaptchaError
app = FastAPI()
client = Client(api_key="YOUR_API_KEY")
# A normal def endpoint runs the synchronous SDK in FastAPI's thread pool.
@app.post("/submit")
def submit_form(
solution: Annotated[str, Form(alias="private-captcha-solution")] = "",
):
try:
result = client.verify(solution=solution, sitekey="YOUR_SITEKEY")
except PrivateCaptchaError as error:
raise HTTPException(status_code=403, detail="Captcha verification failed") from error
if not result.ok():
raise HTTPException(status_code=403, detail="Captcha verification failed")
# Verification passed. Process your form submission here.
return {"message": "Success!"}