validate([ 'image' => ['required', 'file', 'image', 'max:10240'], 'limit' => ['nullable', 'integer', 'min:1', 'max:24'], ]); if (! $this->vectors->isConfigured()) { return response()->json([ 'data' => [], 'reason' => 'vector_gateway_not_configured', ], 503); } $limit = (int) ($payload['limit'] ?? 12); try { $items = $this->vectors->searchByUploadedImage($payload['image'], $limit); } catch (RuntimeException $e) { return response()->json([ 'data' => [], 'reason' => 'vector_gateway_error', 'message' => $e->getMessage(), ], 502); } return response()->json([ 'data' => $items, 'meta' => [ 'source' => 'vector_gateway', 'limit' => $limit, ], ]); } }