logo-darkPipe0

Query Postgres

Run a read-only SQL query against your own PostgreSQL database and return the rows.

ProviderBilling ModeCredentials
Cost per page
Docs
P
PostgreSQL
Per Search
User

1.00 credits

1 page = 100 records; 200 results = 2 pages

Output Fields

Dynamic output fields

This search's output columns are determined at run time and depend on the data source, so they aren't known ahead of time. Enable config.field_definitions.enabled to receive the columns alongside your results in the response field_definitions.

Code Example

const options = {
  method: 'POST',
  headers: {'content-type': 'application/json', authorization: 'Bearer <TOKEN>'},
  body: JSON.stringify({
    search: {
      search_id: 'query:postgres@1',
      connector: {strategy: 'first'},
      config: {
        query: 'SELECT id, name, email FROM contacts ORDER BY id',
        limit: 100,
        page_number: 1
      }
    }
  })
};

fetch('https://api.pipe0.com/v1/search/run', options)
  .then(res => res.json())
  .then(res => console.log(res))
  .catch(err => console.error(err));
import requests

url = "https://api.pipe0.com/v1/search/run"

payload = { "search": {
        "search_id": "query:postgres@1",
        "connector": { "strategy": "first" },
        "config": {
            "query": "SELECT id, name, email FROM contacts ORDER BY id",
            "limit": 100,
            "page_number": 1
        }
    } }
headers = {
    "content-type": "application/json",
    "authorization": "Bearer <TOKEN>"
}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
curl --request POST \
     --url https://api.pipe0.com/v1/search/run \
     --header 'authorization: Bearer <TOKEN>' \
     --header 'content-type: application/json' \
     --data '
{
  "search": {
    "search_id": "query:postgres@1",
    "connector": {
      "strategy": "first"
    },
    "config": {
      "query": "SELECT id, name, email FROM contacts ORDER BY id",
      "limit": 100,
      "page_number": 1
    }
  }
}
'
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://api.pipe0.com/v1/search/run"

	payload := strings.NewReader("{\"search\":{\"search_id\":\"query:postgres@1\",\"connector\":{\"strategy\":\"first\"},\"config\":{\"query\":\"SELECT id, name, email FROM contacts ORDER BY id\",\"limit\":100,\"page_number\":1}}}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("content-type", "application/json")
	req.Header.Add("authorization", "Bearer <TOKEN>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(string(body))

}
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.pipe0.com/v1/search/run', [
  'body' => '{"search":{"search_id":"query:postgres@1","connector":{"strategy":"first"},"config":{"query":"SELECT id, name, email FROM contacts ORDER BY id","limit":100,"page_number":1}}}',
  'headers' => [
    'authorization' => 'Bearer <TOKEN>',
    'content-type' => 'application/json',
  ],
]);

echo $response->getBody();
POST /v1/search/run HTTP/1.1
Content-Type: application/json
Authorization: Bearer <TOKEN>
Host: api.pipe0.com
Content-Length: 174

{"search":{"search_id":"query:postgres@1","connector":{"strategy":"first"},"config":{"query":"SELECT id, name, email FROM contacts ORDER BY id","limit":100,"page_number":1}}}