API REST instantanée pour bases de données SQL populaires — sans partager d'identifiants.
Transformez n'importe quelle requête SQL enregistrée en un point de terminaison REST prêt à l'emploi pour vos partenaires, avec des clés API par destinataire, des quotas mensuels et un historique complet des modifications. Données statiques ou en flux continu, JSON, NDJSON ou CSV, compression LZ4 en transit : le tout sans infrastructure d'hébergement et sans accès au code SQL pour le destinataire.
Demandez à Nova, obtenez SQL + des graphiques
Rencontre avec Nova API REST de base de donnéesUne clé par partenaire. Aucun identifiant partagé.
Créer une API AutomatisationSynchronisation programmée sur plus de 6 plateformes
Explorer API à SQLInterroger les API avec SQL, sans code
Explorer Base de données IA MCPClaude, Cursor, ChatGPT et Grok interagissent avec vos données.
Connecter l'IAQuery Streams est une plateforme d'intégration de données sécurisée et en temps réel qui transforme toute requête SQL enregistrée en un point de terminaison d'API REST prêt pour les partenaires, avec des clés par destinataire, des quotas d'octets mensuels et une piste d'audit complète. La plateforme API vous permet de partager des données de base de données en direct avec vos clients, fournisseurs et équipes internes sans jamais divulguer vos identifiants de base de données, votre code SQL ou la topologie de votre réseau. Pour en savoir plus, rendez-vous sur QueryStreams.com. et Inscrivez-vous gratuitement pour créer votre première API partagée en cinq minutes.
Partagez des données de base de données en direct via une API REST, sans partager d'identifiants.
La plupart des équipes envoient des exportations CSV, distribuent des comptes de base de données en lecture seule ou mettent en place un service Express personnalisé lorsqu'un partenaire a besoin de données en temps réel. Chaque approche présente le même problème : le partenaire se retrouve avec des données qu'il ne devrait pas avoir — une boîte de réception pleine de fichiers CSV obsolètes, des identifiants SQL qui persistent bien après la fin de la collaboration ou un accès root à un service non maintenu. La plateforme API Query Streams vous permet de partager… capacité à exécuter une requête enregistréeCe ne sont pas les identifiants sous-jacents qui sont concernés. Chaque destinataire reçoit sa propre clé API, chaque appel est limité en débit et audité, et l'accès peut être révoqué depuis le portail en un seul clic, sans avoir à modifier le mot de passe de la base de données.
Clés API par destinataire
Chaque bénéficiaire reçoit le sien qsapi_* clé. Révoquer une autorisation sans toucher aux autres. Faire pivoter sans rien redéployer.
Les identifiants ne quittent jamais votre réseau.
L'agent réseau établit la connexion depuis votre environnement. Le destinataire voit un point de terminaison REST, jamais le nom d'hôte de votre base de données, votre mot de passe ni votre requête SQL.
Conçu pour la lecture seule
Le mécanisme de contrôle en lecture seule de l'agent bloque toute instruction autre que SELECT avant qu'elle n'atteigne la base de données. Il n'existe aucun risque de suppression accidentelle.
Modes de réponse statique et en continu
Choisissez un seul corps mis en mémoire tampon (8 Mo / 100 000 lignes par défaut) ou un transfert par blocs qui envoie les lignes au fur et à mesure que l'agent les produit (1 Go / 10 millions de lignes par défaut).
Cadre LZ4 + compression de fil gzip
Mode optionnel de charge utile LZ4 pour les utilisateurs du SDK (décompression en une seule ligne), plus mode standard Accept-Encoding: gzip sur les chemins non compressés.
bac à sable intégré de style facteur
Testez chaque point de terminaison dans le portail avant de le partager. Ajustez les paramètres de requête, inspectez le JSON, copiez le boucle — pas d'espace de travail Postman séparé.
CORS + listes blanches d'adresses IP
Associer la clé d'un destinataire à des adresses IP ou des CIDR spécifiques, limiter les origines du navigateur par point de terminaison et superposer les limites de débit standard à deux niveaux en dessous.
Spécification OpenAPI 3.1 par point de terminaison
Chaque point de terminaison expose une valeur lisible par machine openapi.json. Transmettez-le à Postman, Swagger UI ou à un générateur de SDK comme openapi-typescript.
Les bases de données SQL populaires sont prises en charge.
La plateforme API est compatible avec les bases de données SQL que la plupart des équipes utilisent déjà. Une fois votre agent réseau connecté, chaque requête enregistrée sur une base de données prise en charge peut être envoyée à un point de terminaison REST partagé ; aucune configuration ni kit de développement logiciel (SDK) n’est requis pour chaque base de données.
Les bases de données hébergées dans le cloud fonctionnent de la même manière.
L'agent se connecte aussi bien aux bases de données sur site qu'aux services gérés tels qu'AWS RDS, Azure SQL Database, Google Cloud SQL et Snowflake. Pour une latence optimale, déployez l'agent dans la même région que la base de données ; un compte Query Streams peut exécuter plusieurs agents dans différentes régions et clouds.
Comment ça marche en trois étapes
Une fois votre agent réseau et un connecteur de base de données compatible configurés, la promotion d'une requête enregistrée vers une API partagée prend environ cinq minutes :
Enregistrer une requête SQL
Créez la requête dans l'outil de création de requêtes du portail, en l'associant à n'importe quelle base de données connectée. Ajoutez des filtres, des paramètres et un nom. Tout élément pouvant être sélectionné est accessible via l'API.
Promouvoir son utilisation comme API
Ouvrez l'onglet Installation. Choisissez un type de point de terminaison (permanent, à expiration ou budget d'appels N-shot), un format interne (JSON, NDJSON ou CSV), un mode de réponse (statique ou en flux continu) et indiquez si la compression LZ4 est autorisée. Enregistrez.
Inviter les destinataires par courriel
Saisissez l'adresse e-mail d'un partenaire ; il recevra une invitation via un lien magique. Les destinataires ne possédant pas de compte Query Streams bénéficieront d'une création automatique d'une organisation gratuite dès l'inscription ; leur clé leur sera émise instantanément après acceptation.
Vous utilisez déjà Query Streams pour Excel ou Google Sheets ?
Votre agent réseau est donc déjà en place et votre base de données est déjà connectée. Promouvoir une requête enregistrée existante vers un point de terminaison REST prend environ une minute ; vous ignorez ainsi les étapes 1 et la majeure partie de l’étape 2. Cette même requête enregistrée peut alimenter une actualisation Excel, une barre latérale Sheets, etc. et un point de terminaison REST destiné aux partenaires, en même temps.
Choisissez un mode de réponse : statique ou en continu
Lors de sa création, chaque point de terminaison choisit l'un des deux modes de réponse. Ce mode détermine la manière dont les données quittent nos serveurs ; le format de transmission (JSON, NDJSON, CSV ou trame LZ4) est choisi indépendamment par le destinataire pour chaque appel.
Par défaut. Nous collectons chaque ligne dans une seule réponse mise en mémoire tampon, définie Longueur du contenuet émettre un seul corps. Les erreurs sont des codes d'état HTTP normaux (200, 400, 413 API_OUTPUT_TOO_LARGE, 503).
- Capacités par défaut : 8 Mo / 100 000 lignes par appel
- Plateforme max : 50 Mo / 1 000 000 lignes par appel
- Idéal pour : tableaux de bord, recherches à la demande, requêtes de moins de 10 000 lignes, curl, outils d'IA nécessitant un seul objet JSON
Nous revenons 200 OK + Transfer-Encoding: chunked Dès réception de la première ligne, les lignes suivantes sont transmises au fur et à mesure de leur production par l'agent. La mémoire disponible à la périphérie du réseau reste limitée quelle que soit la taille du résultat.
- Capacités par défaut : 1 Go / 10 000 000 lignes par appel
- Plateforme max : 50 Go / 100 000 000 lignes par appel
- Idéal pour : Flux n8n/Zapier, pipelines analytiques, exportations en masse, tout ce qui tire parti du temps de réponse du serveur (TTFB)
Les erreurs en cours de flux sur un point de terminaison de streaming ne peuvent pas être exprimées par un code d'état HTTP (l'état a déjà été envoyé avec le premier segment). Nous les signalons comme un dernier enregistrement sentinelle : {"_error":"...","rows_returned":N} pour NDJSON, ou # erreur : ..., lignes_retournées : N Pour les flux CSV, les bibliothèques consommatrices doivent vérifier le dernier enregistrement avant de considérer le flux comme terminé.
Choisissez un format de transmission : JSON, NDJSON, CSV ou cadre LZ4
Dans le mode de réponse choisi, les destinataires sélectionnent le format de transmission pour chaque appel à l'aide d'en-têtes HTTP standard (Accepter pour le format intérieur et Accept-Encoding (pour la compression). Un seul point de terminaison peut prendre en charge les quatre formats ; le propriétaire peut également verrouiller le point de terminaison sur un seul format à partir de l’onglet Installation.
Un seul tableau JSON. Valeur par défaut en mode statique. Format universel pour les clients web, les outils d'IA et les utilisateurs de curl.
# Python données = requêtes.get(url, en-têtes=h).json()
JSON délimité par des sauts de ligne, une ligne par ligne. Uniquement en flux continu. Analyse à la demande pour les pipelines et l'ETL.
# Python pour doubler dans resp.iter_lines(): ligne = json.loads(ligne)
Fichier CSV RFC 4180. Fonctionne en mode statique (un seul corps) ou en flux continu (en-tête sur le premier segment). Ouvrez-le dans Excel, pandas, R ou tout autre logiciel compatible CSV.
# pandas
df = pd.read_csv(url, storage_options=h)
Le format de cadre LZ4 conforme aux normes (magique) 04 22 4D 18Une image fixe ; images concaténées et transférées par blocs pour la diffusion en continu. Facturation au octet compressé.
# Python
données = lz4.frame.decompress(resp.content)
Pour les consommateurs qui souhaitent une interopérabilité maximale, le format JSON (ou CSV) simple suffit ; tout le reste est optionnel. La compression réseau (gzip) est appliquée automatiquement aux données non compressées via la norme. Accept-Encoding En-tête ; nous n’effectuons jamais de double compression, donc LZ4-frame remplace gzip au lieu de s’empiler par-dessus.
Aperçu des quatre combinaisons de fils
Le mode de réponse et la compression de la charge utile se composent de quatre chemins terminaux. Le propriétaire du terminal choisit les valeurs par défaut dans l'onglet Installation ; le destinataire peut les modifier pour chaque appel (dans les limites autorisées par le propriétaire). La compression du réseau (gzip) est négociée via Accept-Encoding des couches superposées automatiquement aux deux rangées non compressées.
Un seul tampon application/json (ou texte/csv) corps avec Longueur du contenuChemin par défaut. Compression du trafic réseau (gzip) négociée automatiquement.
Un seul application/x-lz4-frame Corps contenant une trame LZ4 standard (multibloc). Décompression en une seule ligne de code consommateur.
application/x-ndjson (ou en streaming) texte/csv) sur Transfer-Encoding: chunkedUne ligne par segment. Compression Wire (gzip) négociée automatiquement.
application/x-lz4-frame Sous forme d'une séquence de trames LZ4 standard concaténées lors d'un transfert par blocs. Aucun protocole de tramage inventé par QS.
| Mode + compression | Type MIME de fil | Silhouette | Capacités par défaut | Factures sur | Cas d'utilisation |
|---|---|---|---|---|---|
| statique + aucun | application/json ou texte/csv |
Un corps tamponné, Longueur du contenu |
8 Mo / 100 000 lignes | octets non compressés | Tableaux de bord, curl, par défaut |
| statique + lz4 | application/x-lz4-frame |
Cadre LZ4 unique (multibloc) | 8 Mo compressés | octets compressés | consommateurs SDK, réponse unique optimisée en termes de coûts |
| flux + aucun | application/x-ndjson ou texte/csv |
Transfert par blocs, NDJSON par ligne | 1 Go / 10 millions de lignes | octets non compressés | n8n, Zapier, pipelines analytiques |
| flux + lz4 | application/x-lz4-frame |
Transfert par morceaux, cadres LZ4 concaténés | 1 Go compressé (~5 Go brut) | octets compressés | Exportation en masse, kit de développement logiciel avancé, combinaison la plus économique et la plus rapide |
Filtres de passage lors de l'appel
Tout paramètre de requête enregistrée exposé par le propriétaire peut être défini par le destinataire à chaque appel. OBTENIR Les requêtes utilisent la chaîne de requête ; POSTE Les requêtes utilisent un corps JSON. L'agent lie les paramètres sous forme de valeurs d'instructions préparées (jamais par concaténation de chaînes), empêchant ainsi le destinataire d'injecter du code SQL à partir d'un paramètre.
Le propriétaire du point de terminaison contrôle les paramètres exposés (dans le sous-onglet Paramètres de l'onglet Installation), ceux qui sont verrouillés sur une valeur fixe et l'ensemble des valeurs autorisées. Les destinataires ne peuvent définir que les paramètres exposés par le propriétaire ; tout le reste est fixe. Les paramètres à valeurs multiples utilisent des clés répétées (?status=payé&status=expédié) sur GET et un tableau JSON standard sur POST.
Poste de sécurité : CORS, listes blanches d’adresses IP et limitations de débit
Au-delà des clés par destinataire et de l'application du mode lecture seule, chaque point de terminaison vous offre quatre verrous supplémentaires que vous pouvez renforcer avant de le partager.
Liste blanche d'adresses IP par clé
Associez la clé d'un destinataire à une adresse IP unique, une plage CIDR ou une liste. Compatible IPv4 et IPv6. Un appel provenant d'une adresse hors liste blanche est renvoyé. 403 IP_NON_AUTORIS avant même que la requête SQL ne soit modifiée.
Liste blanche CORS par point de terminaison
Indiquez-nous quelles origines de navigateur sont autorisées à appeler le point de terminaison depuis JavaScript. Définir ["https://app.acme.com"] pour un seul partenaire, ou désactivez complètement CORS (par défaut) pour les points de terminaison serveur à serveur uniquement.
Limites de débit à deux niveaux
Un quota de requêtes est alloué à la clé du destinataire (60 requêtes/min par défaut), ainsi qu'un second quota sur le point de terminaison lui-même (120 requêtes/min par défaut). Un destinataire bruyant ne peut pas saturer le quota des autres destinataires.
Quotas mensuels en octets
Limitation optionnelle du volume de données facturé par point de terminaison et par mois calendaire. Lorsque cette limite est atteinte, les appels sont renvoyés. 429 ENDPOINT_QUOTA_EXHAUSTED jusqu'à la réinitialisation de la période. Une limite de rayon d'explosion sécuritaire pour les nouveaux partenaires.
Chaque point de terminaison est livré avec une spécification OpenAPI 3.1
Chaque point de terminaison expose une spécification lisible par machine à l'adresse GET /v1/endpoints/{id}/openapi.jsonIl décrit l'URL, la méthode, chaque paramètre (avec son type, ses valeurs autorisées et sa valeur par défaut), la structure de chaque réponse selon son format (JSON, NDJSON, CSV, LZ4) et chaque code d'erreur. Collez-le dans Postman ou Insomnia pour générer une collection de requêtes, utilisez-le avec Swagger UI pour obtenir une documentation interactive ou exécutez-le avec un générateur de SDK pour obtenir un client typé dans le langage de votre choix.
Utilisez-le depuis Power BI, Tableau et tout outil JSON.
Parce que chaque point de terminaison renvoie une norme JSON — avec le format CSV et le flux NDJSON en parallèle — tout outil capable de lire un flux REST consomme vos données directement, sans rien à installer côté destinataire. Power Query est le pont le plus facile vers la suite Microsoft BI : dans Power BI choisir Récupérer des données → Depuis le Web, collez l'URL du point de terminaison, ajoutez le Autorisation L'en-tête est analysé par Power Query, qui convertit le JSON en un tableau actualisable alimentant votre modèle de données. (Pour les données en direct dans une feuille de calcul, la méthode native est utilisée.) Modules complémentaires Query Streams pour Excel et Google Sheets « c’est la voie la plus simple — Power Query est là lorsque vous souhaitez intégrer les données directement dans le modèle BI. »
Il nourrit également n8n, Qlik, boucle, Python (demandes ou pandas.read_json), Insomnia, Hoppscotch — ou tout script ou flux de travail capable d'envoyer une requête HTTP et de lire du JSON.
Testez les points de terminaison dans votre navigateur, à la manière de Postman, sans quitter le portail.
Avant de confier une clé à un partenaire, testez vous-même le point de terminaison. L'onglet Installation intègre un générateur de requêtes qui reproduit l'interface pour votre destinataire : choisissez la méthode HTTP, définissez les paramètres de requête, sélectionnez un exemple, envoyez la requête et examinez la réponse. L'environnement de test utilise une clé éphémère temporaire, garantissant ainsi que l'appel suit exactement le même chemin que la requête du destinataire : même authentification, même répartition des agents, même négociation de compression et même comptabilisation des octets.
Facturation tenant compte de la compression
Le nombre d'octets dans votre journal d'activité est mesuré à la sortie de notre serveur API et suivre une règle simple et prévisible : si le destinataire a consenti à Compression de la charge utile du cadre LZ4 (Accept-Encoding: lz4), les factures d'appel sur les octets compressés qui ont effectivement transité sur le réseau ; sinon, les factures d'appel sur les octets non compressés. Compression HTTP standard (gzip) est une optimisation pure du transport et n'affecte pas la facturation — cette compression intervient après que nous ayons mesuré les octets que le consommateur est invité à « voir ».
Note sur les octets sur fil
Si un appel utilise la compression LZ4, la même charge utile JSON est généralement facturée à environ 25 à 40 % de sa taille non compressée pour les lignes transactionnelles et à 10 à 20 % pour les charges de travail analytiques avec des colonnes répétées, car cela correspond à la quantité de données réellement transférées par le réseau de votre partenaire. L'environnement de test intégré au navigateur affiche ces deux chiffres (X-QS-Octets-Fil et X-QS-Octets-Brut) afin que vous puissiez constater les économies avant de partager un point de terminaison. Nous avons choisi de facturer au débit (lorsque LZ4 est activé) car ce chiffre correspond à la fois à vos coûts de sortie de données et à la consommation de bande passante du destinataire. Compression HTTP standard (gzip) est une optimisation pure du transport et n'affecte pas la facturation. Les appels qui ne demandent pas LZ4 continuent d'être facturés sur la base d'octets non compressés., ce qui correspond à la manière dont Excel, Sheets et le serveur MCP sont facturés aujourd'hui.
La décompression côté client se fait sur une ligne par langage. Voici le code d'intégration standard pour chaque environnement pour lequel nous fournissons des exemples :
Conçu pour le partage de données entre partenaires, et non pour les API à l'échelle d'Internet.
La plateforme API Query Streams est conçue pour les cas d'utilisation où vous connaissez vos destinataires : clients, fournisseurs, équipes internes, organismes de réglementation, auditeurs, membres du conseil d'administration. Les quotas de points de terminaison, les limites mensuelles de données et les limitations de débit par destinataire sont calculés pour des dizaines, voire des milliers, d'appels par jour et par destinataire. Si votre cas d'utilisation concerne une API marketing publique qui doit traiter des millions de requêtes anonymes par seconde, vous aurez probablement besoin d'une passerelle API comme Kong, Apigee ou AWS API Gateway, placée devant un service que vous développez vous-même. La plateforme API complète ce modèle ; elle ne le remplace pas.
Questions fréquemment posées
Dois-je ouvrir des ports entrants dans mon pare-feu pour exposer ma base de données en tant qu'API ? +
Le destinataire peut-il voir mes identifiants SQL ou mes identifiants de base de données ? +
Comment révoquer l'accès API d'un partenaire ? +
401 CLÉ_RÉVOQUÉELes autres destinataires du même point de terminaison continuent de travailler avec leurs propres clés, et vous n'avez pas besoin de faire tourner le mot de passe de la base de données.Quelle est la différence entre les modes de réponse statique et en flux continu ? +
Longueur du contenuElle génère un seul corps de requête HTTP. Les limites par défaut sont de 8 Mo pour 100 000 lignes ; la limite maximale de la plateforme est de 50 Mo pour 1 million de lignes. Idéale pour les tableaux de bord, les requêtes portant sur moins de 10 000 lignes et les utilisateurs de curl. Streaming mode émet Transfer-Encoding: chunked Il transmet les lignes au fur et à mesure de leur production par l'agent. La limite par défaut est de 1 Go / 10 millions de lignes ; la limite maximale de la plateforme est de 50 Go / 100 millions de lignes. Idéal pour les flux n8n/Zapier, les pipelines analytiques et les exportations en masse. Vous choisissez le mode pour chaque point de terminaison ; le destinataire choisit le format de transmission (JSON, NDJSON, CSV ou trame LZ4) pour chaque appel.Comment décompresser les réponses aux trames LZ4 dans mon code ? +
04 22 4D 18), donc toutes les bibliothèques LZ4 courantes le gèrent nativement. En Python : lz4.frame.decompress(resp.content)Dans Node.js avec lz4js: LZ4.décompresserFrame(tampon). Dans Go avec github.com/pierrec/lz4/v4: lz4.NewReader(corps)Sur l'interface de ligne de commande : boucle ... | lz4 -d -Pour les points de terminaison de diffusion en continu, le corps de la réponse est une séquence de trames LZ4 concaténées. Transfer-Encoding: chunked — le même décodeur d'images traite de manière identique les entrées d'images uniques et d'images concaténées lorsqu'il est appelé dans une boucle de flux.Puis-je limiter un point de terminaison à des adresses IP ou des origines de navigateur spécifiques ? +
403 IP_NON_AUTORIS avant toute exécution de requête SQL. Par ailleurs, chaque point de terminaison possède une option facultative Liste d'origine autorisée CORS — le régler sur ["https://app.acme.com"] Si le point de terminaison est destiné à être appelé depuis l'interface d'un partenaire spécifique, vous pouvez l'indiquer. Sinon, désactivez-le complètement (comportement par défaut) pour les points de terminaison exclusivement serveur à serveur. Ces deux options sont modifiables depuis l'onglet Installation et prennent effet immédiatement.Comment l'utilisation de la plateforme API est-elle facturée ? +
Accept-Encoding: lz4), la facturation se fait sur les octets compressés ; sinon, elle se fait sur les octets non compressés. La même charge utile JSON via LZ4 est généralement facturée à 25-40 % de sa taille non compressée pour les lignes transactionnelles et à 10-20 % pour les charges de travail analytiques, car cela correspond à la quantité de données réellement transférées par le réseau de votre partenaire. L’environnement de test intégré au navigateur affiche les deux chiffres côte à côte. Compression HTTP standard (gzip) est une optimisation pure du transport et n'affecte pas la facturation.Que se passe-t-il si une requête tente d'écrire ou de supprimer des données ? +
VIOLATION EN LECTURE SEULE Avant même qu'elle n'atteigne votre base de données, le validateur en lecture seule de l'agent s'exécute sur votre réseau et n'autorise que les instructions SELECT. Pourquoi chaque point de terminaison est conçu pour être en lecture seule →Quelles bases de données SQL la plateforme API prend-elle en charge ? +
Puis-je voir ce que chaque destinataire a réellement demandé ? +
En quoi cela se compare-t-il à la création d'une API par moi-même avec Express, FastAPI ou PostgREST ? +
La plateforme API nécessite-t-elle un abonnement distinct en plus de Query Streams ? +
Commencer
Créez votre première API partagée en cinq minutes.
Inscrivez-vous gratuitement, installez l'agent réseau à côté de votre base de données, enregistrez une requête SQL et envoyez par e-mail à un destinataire une invitation à réclamer un lien magique. Les clés par destinataire, l'historique des modifications et la facturation compressée sont activés dès le départ.
Guides associés : Partagez des données de base de données en direct sans divulguer d'identifiants. | Partagez les résultats de votre requête en toute sécurité | Guides d'installation des connecteurs | Tous les guides du serveur MCP
Catégorie : Plateforme API
Mots-clés : plateforme API, API REST, partage de données en direct, API partenaire, clés par destinataire, conversion SQL vers API, API instantanée, API de streaming, NdJSON, compression LZ4, OpenAPI, PostgreSQL, MySQL, SQL Server, Snowflake
Méta-description : API REST instantanée pour les bases de données SQL populaires — statiques ou en flux continu, JSON/NDJSON/CSV/LZ4-frame, clés par destinataire, OpenAPI 3.1, aucune information d’identification partagée.

