Skip to content

Quickstart

Learn how to verify YC companies and founders using YCVerify.

  1. Create an account at developer portal.

  2. Go to account profile -> API Keys, create a new API key. Save the API key as it won't be shown again.

  3. In this example, we will verify a new user signing up via a YC deal. We will use the following sample user data.

    {
      "companyName": "Stripe",
      "firstName": "Patrick",
      "lastName": "Collison",
      "emailAddress": "patrick@stripe.com"
    }
    
  4. Send a verification request.

    const request = require('request');
    
    const options = {
      method: 'POST',
      url: 'https://api.ycverify.com/v1/verify',
      headers: {
        'Content-Type': 'application/json',
        'Api-Key': 'YOUR-API-KEY'
      },
      body: {
        "companyName": "Stripe",
        "firstName": "Patrick",
        "lastName": "Collison",
        "emailAddress": "patrick@stripe.com"
      },
      json: true
    };
    
    request(options, function (error, response, body) {
      if (error) throw new Error(error);
    
      console.log(body);
    });
    
    <?php
    require_once 'HTTP/Request2.php';
    $request = new HTTP_Request2();
    $request->setUrl('https://api.ycverify.com/v1/verify');
    $request->setMethod(HTTP_Request2::METHOD_POST);
    $request->setConfig(array(
      'follow_redirects' => TRUE
    ));
    $request->setHeader(array(
      'Content-Type' => 'application/json',
      'Api-Key' => 'YOUR-API-KEY'
    ));
    $request->setBody('{\n  "companyName": "Stripe",\n  "firstName": "Patrick",\n  "lastName": "Collison",\n  "emailAddress": "patrick@stripe.com"\n}');
    try {
      $response = $request->send();
      if ($response->getStatus() == 200) {
        echo $response->getBody();
      }
      else {
        echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
        $response->getReasonPhrase();
      }
    }
    catch(HTTP_Request2_Exception $e) {
      echo 'Error: ' . $e->getMessage();
    }
    
    require "uri"
    require "json"
    require "net/http"
    
    url = URI("https://api.ycverify.com/v1/verify")
    
    https = Net::HTTP.new(url.host, url.port)
    https.use_ssl = true
    
    request = Net::HTTP::Post.new(url)
    request["Content-Type"] = "application/json"
    request["Api-Key"] = "YOUR-API-KEY"
    request.body = JSON.dump({
      "companyName": "Stripe",
      "firstName": "Patrick",
      "lastName": "Collison",
      "emailAddress": "patrick@stripe.com"
    })
    
    response = https.request(request)
    puts response.read_body
    
    import requests
    import json
    
    url = "https://api.ycverify.com/v1/verify"
    
    payload = json.dumps({
      "companyName": "Stripe",
      "firstName": "Patrick",
      "lastName": "Collison",
      "emailAddress": "patrick@stripe.com"
    })
    headers = {
      'Content-Type': 'application/json',
      'Api-Key': 'YOUR-API-KEY'
    }
    
    response = requests.request("POST", url, headers=headers, data=payload)
    
    print(response.json())
    
    package main
    
    import (
      "fmt"
      "strings"
      "net/http"
      "io/ioutil"
    )
    
    func main() {
    
      url := "https://api.ycverify.com/v1/verify"
      method := "POST"
    
      payload := strings.NewReader(`{
      "companyName": "Stripe",
      "firstName": "Patrick",
      "lastName": "Collison",
      "emailAddress": "patrick@stripe.com"
    }`)
    
      client := &http.Client {
      }
      req, err := http.NewRequest(method, url, payload)
    
      if err != nil {
        fmt.Println(err)
        return
      }
      req.Header.Add("Content-Type", "application/json")
      req.Header.Add("Api-Key", "YOUR-API-KEY")
    
      res, err := client.Do(req)
      if err != nil {
        fmt.Println(err)
        return
      }
      defer res.Body.Close()
    
      body, err := ioutil.ReadAll(res.Body)
      if err != nil {
        fmt.Println(err)
        return
      }
      fmt.Println(string(body))
    }
    
    Unirest.setTimeouts(0, 0);
    HttpResponse<String> response = Unirest.post("https://api.ycverify.com/v1/verify")
      .header("Content-Type", "application/json")
      .header("Api-Key", "YOUR-API-KEY")
      .body("{\"companyName\": \"Stripe\",\"firstName\": \"Patrick\",\"lastName\": \"Collison\",\"emailAddress\": \"patrick@stripe.com\"}")
      .asString();
    
    let parameters = "{\"companyName\": \"Stripe\",\"firstName\": \"Patrick\",\"lastName\": \"Collison\",\"emailAddress\": \"patrick@stripe.com\"}"
    let postData = parameters.data(using: .utf8)
    
    var request = URLRequest(url: URL(string: "https://api.ycverify.com/v1/verify")!,timeoutInterval: Double.infinity)
    request.addValue("application/json", forHTTPHeaderField: "Content-Type")
    request.addValue("YOUR-API-KEY", forHTTPHeaderField: "Api-Key")
    
    request.httpMethod = "POST"
    request.httpBody = postData
    
    let task = URLSession.shared.dataTask(with: request) { data, response, error in 
      guard let data = data else {
        print(String(describing: error))
        return
      }
      print(String(data: data, encoding: .utf8)!)
    }
    
    task.resume()
    
    #[tokio::main]
    async fn main() -> Result<(), Box<dyn std::error::Error>> {
        let client = reqwest::Client::builder()
            .build()?;
    
        let mut headers = reqwest::header::HeaderMap::new();
        headers.insert("Content-Type", "application/json".parse()?);
        headers.insert("Api-Key", "YOUR-API-KEY".parse()?);
    
        let data = r#"{
        "companyName": "Stripe",
        "firstName": "Patrick",
        "lastName": "Collison",
        "emailAddress": "patrick@stripe.com"
    }"#;
    
        let json: serde_json::Value = serde_json::from_str(&data)?;
    
        let request = client.request(reqwest::Method::POST, "https://api.ycverify.com/v1/verify")
            .headers(headers)
            .json(&json);
    
        let response = request.send().await?;
        let body = response.text().await?;
    
        println!("{}", body);
    
        Ok(())
    }
    
  5. The API returns the following JSON output - YC verified ✅

    {
      "isYC": true,
      "companyName": "Stripe",
      "companyYCUrl": "https://www.ycombinator.com/companies/stripe",
      "batch": "S09",
      "status": "Active",
      "firstName": "Patrick",
      "lastName": "Collison",
      "hnUsername": "pc"
    }
    
  6. Try it yourself in API playground.