API Sathi docs
← All products

GST Enhanced

kyb

Enhanced GSTIN intelligence: taxpayer details, contacts, business nature PLUS the full GST return filing history (GSTR1 / GSTR3B / GSTR9 / GSTR9C) with filing dates, status, delayed flag and return-filing frequency. Use this to fetch a business’s GST returns.

POST /gw/v1/gst-enhanced-v1/SLA p95: 3000 ms

Authentication

Pass your key in the X-API-Key header. Use a test_ key against the sandbox and a live_ key in production. Send an optional Idempotency-Key header to safely retry — the same key returns the same response for 24h.

X-API-Key: live_xxxxxxxxxxxx

Request

Endpoint: POST https://apisathi.in/gw/v1/gst-enhanced-v1/

The trailing slash is required. /v1/gst-enhanced-v1/ works; /v1/gst-enhanced-v1 returns 404 Not Found. This applies to every product.

FieldTypeRequiredConstraints
gstinstringrequiredpattern: ^[0-9]{2}[A-Z]{5}[0-9]{4}[A-Z]{1}[0-9A-Z]{3}$ · 15-character GSTIN

Code snippets

curl -X POST https://apisathi.in/gw/v1/gst-enhanced-v1/ \
  -H "X-API-Key: $API_SATHI_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"gstin":"27AAACR5055K1Z7"}'

Response

FieldTypeRequiredConstraints
verifiedbooleanoptional
legal_namestringoptional
emailstringoptional
mobile_numberstringoptional
nature_of_core_businessstringoptional
aadhaar_verification_flagstringoptional
return_filing_frequencyobject[]optionalFiling frequency (Monthly/Quarterly) per quarter.
filing_statusobject[]optionalRecent GST return filings (GSTR1/3B/9/9C).
turnover_summaryobjectoptional
business_placesobject[]optional

Sample response

{
  "verified": true,
  "legal_name": "RELIANCE INDUSTRIES LIMITED",
  "email": "accounts@example.com",
  "mobile_number": "98XXXXXXXX",
  "nature_of_core_business": "Factory / Manufacturing, Retail Business",
  "aadhaar_verification_flag": "Yes",
  "return_filing_frequency": [
    {
      "fy": "2026-27",
      "qtr": "Apr-Jun",
      "frqncy": "Monthly"
    }
  ],
  "filing_status": [
    {
      "financial_year": "2026-2027",
      "tax_return_period": "June",
      "return_type": "GSTR1",
      "mode_of_filing": "ONLINE",
      "date_of_filing": "10/07/2026",
      "filing_status": "Filed",
      "is_delayed": false
    },
    {
      "financial_year": "2026-2027",
      "tax_return_period": "June",
      "return_type": "GSTR3B",
      "mode_of_filing": "ONLINE",
      "date_of_filing": "20/07/2026",
      "filing_status": "Filed",
      "is_delayed": false
    }
  ],
  "turnover_summary": {
    "slab": "Rs. 500 Cr. and above"
  },
  "business_places": [
    {
      "nature": "Principal Place of Business",
      "address": "..."
    }
  ]
}

Reading a 400

A schema rejection returns INVALID_REQUEST with a details array naming the exact field. Read it before guessing — it gives you the JSON path and what was wrong with it.

{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "Request body failed schema validation",
    "details": [
      { "path": "/callback_url",
        "message": "unexpected property 'callback_url' — this endpoint does not accept unknown fields" }
    ]
  }
}

Most endpoints reject unknown top-level fields outright, so an extra key you added for your own bookkeeping will fail the call. Enum errors list the accepted values, and a missing required field is named with its full path.

Error codes

CodeHTTPWhen
INVALID_INPUT422The request was rejected as invalid — either it failed OUR schema validation (malformed input; not charged), or the upstream source rejected the value you sent. NOTE: an identifier that is well-formed but simply has NO RECORD is no longer an error — it returns 200 with `verified: false` and is charged (see the result-code table below). FIX the input before retrying; retrying the same value will fail again.
INVALID_API_KEY401Missing, malformed, or revoked X-API-Key.
OUT_OF_SCOPE403API key is not scoped for this product.
INSUFFICIENT_BALANCE402Wallet balance is below the per-call sale price. Recharge and retry.
RATE_LIMITED429Per-key RPS or RPM limit exceeded. Back off and retry after the Retry-After header.
PRODUCT_DEPRECATED410This API has been retired and is no longer available. Stop calling it — it will not return. Check the catalog for the current equivalent.
ROUTER_NO_VENDOR503No healthy vendor is currently available for this product. Transient — safe to retry after a short backoff. Not charged.
VENDOR_AUTH_FAILED502Upstream vendor rejected our credentials (our config issue). Not charged.
VENDOR_ERROR502A genuine transient upstream error (the source was briefly unavailable). Safe to RETRY after a short backoff. Not charged. NOTE: this is NOT for bad input — invalid values return 422 INVALID_INPUT, not 502.
TIMEOUT504Upstream vendor did not respond within the SLA window. Safe to retry after a short backoff. Not charged.
result_code 101 — match found200The record was found. `verified: true`. Charged.
result_code 102 — invalid input200The source rejected the identifier as invalid. `verified: false`. Charged — the source billed us for the lookup. Do not retry the same value.
result_code 103 — no record found200The lookup ran and matched nothing. `verified: false`. Charged. This is a definitive answer, NOT an outage — do not retry.
result_code 106 — multiple records200More than one record matched. `verified: false`. Charged. Narrow the input to disambiguate.
result_code 104 / 105 — source failure502The upstream source failed or returned something unreadable. Returned as VENDOR_ERROR and NOT charged. This is the only case worth retrying, with backoff.

OpenAPI 3.1

Generated from this product's request/response JSON Schemas.

{
  "openapi": "3.1.0",
  "info": {
    "title": "API Sathi — GST Enhanced",
    "version": "1.0.0",
    "description": "Enhanced GSTIN intelligence: taxpayer details, contacts, business nature PLUS the full GST return filing history (GSTR1 / GSTR3B / GSTR9 / GSTR9C) with filing dates, status, delayed flag and return-filing frequency. Use this to fetch a business’s GST returns."
  },
  "servers": [
    {
      "url": "https://apisathi.in/gw/v1"
    }
  ],
  "components": {
    "securitySchemes": {
      "ApiKeyAuth": {
        "type": "apiKey",
        "in": "header",
        "name": "X-API-Key",
        "description": "Your live or test key, e.g. `live_xxxxxxxxxxxx`."
      }
    }
  },
  "paths": {
    "/gst-enhanced-v1": {
      "post": {
        "operationId": "gstEnhancedV1",
        "tags": [
          "kyb"
        ],
        "summary": "GST Enhanced",
        "description": "Enhanced GSTIN intelligence: taxpayer details, contacts, business nature PLUS the full GST return filing history (GSTR1 / GSTR3B / GSTR9 / GSTR9C) with filing dates, status, delayed flag and return-filing frequency. Use this to fetch a business’s GST returns.",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Optional. Same key returns the same response for 24h."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "gstin"
                ],
                "properties": {
                  "gstin": {
                    "type": "string",
                    "description": "15-character GSTIN",
                    "pattern": "^[0-9]{2}[A-Z]{5}[0-9]{4}[A-Z]{1}[0-9A-Z]{3}$"
                  }
                }
              },
              "example": {
                "gstin": "27AAACR5055K1Z7"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful, normalized response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "verified": {
                      "type": "boolean"
                    },
                    "legal_name": {
                      "type": "string"
                    },
                    "email": {
                      "type": "string"
                    },
                    "mobile_number": {
                      "type": "string"
                    },
                    "nature_of_core_business": {
                      "type": "string"
                    },
                    "aadhaar_verification_flag": {
                      "type": "string"
                    },
                    "return_filing_frequency": {
                      "type": "array",
                      "description": "Filing frequency (Monthly/Quarterly) per quarter.",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      }
                    },
                    "filing_status": {
                      "type": "array",
                      "description": "Recent GST return filings (GSTR1/3B/9/9C).",
                      "items": {
                        "type": "object",
                        "properties": {
                          "financial_year": {
                            "type": "string"
                          },
                          "tax_return_period": {
                            "type": "string"
                          },
                          "return_type": {
                            "type": "string"
                          },
                          "mode_of_filing": {
                            "type": "string"
                          },
                          "date_of_filing": {
                            "type": "string"
                          },
                          "filing_status": {
                            "type": "string"
                          },
                          "is_delayed": {
                            "type": "boolean"
                          }
                        },
                        "additionalProperties": true
                      }
                    },
                    "turnover_summary": {
                      "type": "object",
                      "additionalProperties": true
                    },
                    "business_places": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      }
                    }
                  }
                },
                "example": {
                  "verified": true,
                  "legal_name": "RELIANCE INDUSTRIES LIMITED",
                  "email": "accounts@example.com",
                  "mobile_number": "98XXXXXXXX",
                  "nature_of_core_business": "Factory / Manufacturing, Retail Business",
                  "aadhaar_verification_flag": "Yes",
                  "return_filing_frequency": [
                    {
                      "fy": "2026-27",
                      "qtr": "Apr-Jun",
                      "frqncy": "Monthly"
                    }
                  ],
                  "filing_status": [
                    {
                      "financial_year": "2026-2027",
                      "tax_return_period": "June",
                      "return_type": "GSTR1",
                      "mode_of_filing": "ONLINE",
                      "date_of_filing": "10/07/2026",
                      "filing_status": "Filed",
                      "is_delayed": false
                    },
                    {
                      "financial_year": "2026-2027",
                      "tax_return_period": "June",
                      "return_type": "GSTR3B",
                      "mode_of_filing": "ONLINE",
                      "date_of_filing": "20/07/2026",
                      "filing_status": "Filed",
                      "is_delayed": false
                    }
                  ],
                  "turnover_summary": {
                    "slab": "Rs. 500 Cr. and above"
                  },
                  "business_places": [
                    {
                      "nature": "Principal Place of Business",
                      "address": "..."
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing, malformed, or revoked X-API-Key.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "object",
                      "properties": {
                        "code": {
                          "type": "string"
                        },
                        "message": {
                          "type": "string"
                        },
                        "call_id": {
                          "type": "string"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Wallet balance is below the per-call sale price. Recharge and retry.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "object",
                      "properties": {
                        "code": {
                          "type": "string"
                        },
                        "message": {
                          "type": "string"
                        },
                        "call_id": {
                          "type": "string"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "API key is not scoped for this product.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "object",
                      "properties": {
                        "code": {
                          "type": "string"
                        },
                        "message": {
                          "type": "string"
                        },
                        "call_id": {
                          "type": "string"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "410": {
            "description": "This API has been retired and is no longer available. Stop calling it — it will not return. Check the catalog for the current equivalent.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "object",
                      "properties": {
                        "code": {
                          "type": "string"
                        },
                        "message": {
                          "type": "string"
                        },
                        "call_id": {
                          "type": "string"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "The request was rejected as invalid — either it failed OUR schema validation (malformed input; not charged), or the upstream source rejected the value you sent. NOTE: an identifier that is well-formed but simply has NO RECORD is no longer an error — it returns 200 with `verified: false` and is charged (see the result-code table below). FIX the input before retrying; retrying the same value will fail again.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "object",
                      "properties": {
                        "code": {
                          "type": "string"
                        },
                        "message": {
                          "type": "string"
                        },
                        "call_id": {
                          "type": "string"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Per-key RPS or RPM limit exceeded. Back off and retry after the Retry-After header.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "object",
                      "properties": {
                        "code": {
                          "type": "string"
                        },
                        "message": {
                          "type": "string"
                        },
                        "call_id": {
                          "type": "string"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "502": {
            "description": "Upstream vendor rejected our credentials (our config issue). Not charged.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "object",
                      "properties": {
                        "code": {
                          "type": "string"
                        },
                        "message": {
                          "type": "string"
                        },
                        "call_id": {
                          "type": "string"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "No healthy vendor is currently available for this product. Transient — safe to retry after a short backoff. Not charged.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "object",
                      "properties": {
                        "code": {
                          "type": "string"
                        },
                        "message": {
                          "type": "string"
                        },
                        "call_id": {
                          "type": "string"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "504": {
            "description": "Upstream vendor did not respond within the SLA window. Safe to retry after a short backoff. Not charged.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "object",
                      "properties": {
                        "code": {
                          "type": "string"
                        },
                        "message": {
                          "type": "string"
                        },
                        "call_id": {
                          "type": "string"
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}