Send Feedback
Skip to content

Kurl Quickstart

This page demonstrates how to load Kurl and perform basic sync and async requests against public and authenticated endpoints.

Setup

Ensure your cloud credentials are set as environment variables, for example:

export AWS_ACCESS_KEY_ID="… "
export AWS_SECRET_ACCESS_KEY="…"
export AWS_SESSION_TOKEN="… "

Basic usage

  1. To make synchronous calls, use these details in your KDB-X session:

    q).kurl:use`kx.kurl  // load in the module
    q) info:`AccessKeyId`SecretAccessKey`Token!(getenv`AWS_ACCESS_KEY_ID;getenv`AWS_SECRET_ACCESS_KEY;getenv`AWS_SESSION_TOKEN)
    q).kurl.sync ("https://kx-mybucket.s3.us-east-2.amazonaws.com/test_data/data.csv";`GET;::)  // sync calls fails as you have not registered
    403i
    "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Error><Code>AccessDenied</Code><Message>Access Denied..
    q).kurl.register (`aws_cred;"*amazonaws.com";"";info)  // register
    q).kurl.sync ("https://kx-mybucket.s3.us-east-2.amazonaws.com/test_data/data.csv";`GET;::)  // successful sync call
    200i
    "sym,price,size\nFDP,1.2,100\n"
    
  2. To make asynchronous calls:

    q) .kurl.async ("https://kx-mybucket.s3.us-east-2.amazonaws.com/test_data/data.csv";`GET;``callback!(`;{.debug.x:x}))
    .debug.x
    200i
    "sym,price,size\nFDP,1.2,100\n"
    
  3. For public datasets (no authentication required):

    .kurl:use`kx.kurl
    .kurl.sync ("https://api.census.gov/data/2020/dec/pl?get=NAME,P1_001N&for=state:*"; `GET; ::)
    200i
    "[[\"NAME\",\"P1_001N\",\"state\"],\n[\"Pennsylvania\",\"13002700\",\"42\"],\n[\"California\",\"395..
    

Next steps

  • Take a look at the Kurl examples for a deeper understanding of how it works.