MCPcopy Create free account
hub / github.com/TheSmallHanCat/flow2api / generate_content

Function generate_content

src/api/routes.py:897–938  ·  view source on GitHub ↗

Gemini official generateContent endpoint.

(
    model: str,
    request: GeminiGenerateContentRequest,
    raw_request: Request,
    api_key: str = Depends(verify_api_key_flexible),
)

Source from the content-addressed store, hash-verified

895@router.post("/v1beta/models/{model}:generateContent")
896@router.post("/models/{model}:generateContent")
897async def generate_content(
898 model: str,
899 request: GeminiGenerateContentRequest,
900 raw_request: Request,
901 api_key: str = Depends(verify_api_key_flexible),
902):
903 """Gemini official generateContent endpoint."""
904 try:
905 normalized = await _normalize_gemini_request(model, request)
906 if not normalized.prompt:
907 raise HTTPException(status_code=400, detail="Prompt cannot be empty")
908
909 request_base_url = _get_request_base_url(raw_request)
910
911 payload = _enrich_payload_with_direct_url(
912 _parse_handler_result(
913 await _collect_non_stream_result(
914 normalized.model,
915 normalized.prompt,
916 normalized.images,
917 base_url_override=request_base_url,
918 video_media_id=normalized.video_media_id,
919 )
920 )
921 )
922 if "error" in payload:
923 return _build_gemini_error_response_from_handler(payload)
924
925 return JSONResponse(
926 content=await _build_gemini_success_payload(payload, normalized.model)
927 )
928
929 except HTTPException as exc:
930 return JSONResponse(
931 status_code=exc.status_code,
932 content=_build_gemini_error_payload(exc.status_code, str(exc.detail)),
933 )
934 except Exception as exc:
935 return JSONResponse(
936 status_code=500,
937 content=_build_gemini_error_payload(500, str(exc)),
938 )
939
940
941@router.post("/v1beta/models/{model}:streamGenerateContent")

Callers

nothing calls this directly

Tested by

no test coverage detected