For the complete documentation index, see llms.txt.

Snell's Law Calculator API

science 1 credit / call v2026-04-22

Refraction angles, indices, critical angle, and Brewster angle from Snell's law with a built-in material library.

One POST adds Snell's Law Calculator to your app, site, workflow, or agent — formula, validation, edge cases, and docs already handled.

prefer a UI? Open the Snell's Law Calculator on miniwebtool.com →

Start free — get a key → 1,000 credits · no card · 30 seconds

Endpoint

POST · 1cr
POST https://api.miniwebtool.com/v1/tools/snell-s-law-calculator/run

Request body

Field Type Req.
solve_for
theta2 | theta1 | n1 | n2 | critical
str
material_1
vacuum | air | water_ice | water | seawater | ethanol | acetone | olive_oil | glycerin | honey | fused_silica | acrylic | crown_glass | quartz_crystal | amber | emerald | polycarbonate | flint_glass | fiber_core | fiber_cladding | ruby | sapphire | cubic_zirconia | diamond | moissanite | custom
str
n1_custom
Refractive index (material_1=custom)
float | None
material_2
vacuum | air | water_ice | water | seawater | ethanol | acetone | olive_oil | glycerin | honey | fused_silica | acrylic | crown_glass | quartz_crystal | amber | emerald | polycarbonate | flint_glass | fiber_core | fiber_cladding | ruby | sapphire | cubic_zirconia | diamond | moissanite | custom
str
n2_custom
Refractive index (material_2=custom)
float | None
theta1_deg
Angle of incidence in degrees
float | None
theta2_deg
Angle of refraction in degrees
float | None
wavelength_nm
Vacuum wavelength for in-medium wavelengths
float

Cost & access

  • 1 credit per successful call — failed calls refund.
  • Starts on: Free.
  • Max payload: 65536 bytes.
  • Privacy mode: hash_only
  • Available on: free, starter, pro, business, scale

Response envelope

{
  "request_id": "01K...",
  "tool": "snell-s-law-calculator",
  "tool_version": "2026-04-22",
  "credits_used": 1,
  "result": { ... }
}

Try it

Stored only in this browser tab. Playground test key is prefilled and only works on this page. Get a live key →
theta2 | theta1 | n1 | n2 | critical
vacuum | air | water_ice | water | seawater | ethanol | acetone | olive_oil | glycerin | honey | fused_silica | acrylic | crown_glass | quartz_crystal | amber | emerald | polycarbonate | flint_glass | fiber_core | fiber_cladding | ruby | sapphire | cubic_zirconia | diamond | moissanite | custom
Refractive index (material_1=custom)
vacuum | air | water_ice | water | seawater | ethanol | acetone | olive_oil | glycerin | honey | fused_silica | acrylic | crown_glass | quartz_crystal | amber | emerald | polycarbonate | flint_glass | fiber_core | fiber_cladding | ruby | sapphire | cubic_zirconia | diamond | moissanite | custom
Refractive index (material_2=custom)
Angle of incidence in degrees
Angle of refraction in degrees
Vacuum wavelength for in-medium wavelengths

Get your own key

1,000 free calls/mo · no card · key arrives by email

One verification click, then your key + a ready-to-run request. No card, no spam.

Code examples

curl -X POST https://api.miniwebtool.com/v1/tools/snell-s-law-calculator/run \
  -H 'Authorization: Bearer mwt_live_YOUR_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"solve_for":"theta2","material_1":"air","material_2":"water","theta1_deg":30}'
import requests

resp = requests.post(
    'https://api.miniwebtool.com/v1/tools/snell-s-law-calculator/run',
    headers={'Authorization': 'Bearer mwt_live_YOUR_KEY'},
    json={'solve_for': 'theta2', 'material_1': 'air', 'material_2': 'water', 'theta1_deg': 30},
)
resp.raise_for_status()
data = resp.json()
print(data)
const resp = await fetch(
  'https://api.miniwebtool.com/v1/tools/snell-s-law-calculator/run',
  {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer mwt_live_YOUR_KEY',
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({"solve_for":"theta2","material_1":"air","material_2":"water","theta1_deg":30}),
  }
);
const data = await resp.json();
console.log(data);
<?php
$ch = curl_init('https://api.miniwebtool.com/v1/tools/snell-s-law-calculator/run');
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer mwt_live_YOUR_KEY',
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode([
    'solve_for' => 'theta2',
    'material_1' => 'air',
    'material_2' => 'water',
    'theta1_deg' => 30
]),
]);
$resp = curl_exec($ch);
curl_close($ch);
print_r(json_decode($resp, true));
require 'net/http'
require 'json'
require 'uri'

uri = URI('https://api.miniwebtool.com/v1/tools/snell-s-law-calculator/run')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = (uri.scheme == 'https')

req = Net::HTTP::Post.new(uri)
req['Authorization'] = 'Bearer mwt_live_YOUR_KEY'
req['Content-Type'] = 'application/json'
req.body = {
  'solve_for' => 'theta2',
  'material_1' => 'air',
  'material_2' => 'water',
  'theta1_deg' => 30
}.to_json

resp = http.request(req)
puts JSON.parse(resp.body).inspect
package main

import (
  "bytes"
  "encoding/json"
  "fmt"
  "io"
  "net/http"
)

func main() {
  body, _ := json.Marshal(map[string]interface{}{
    "solve_for": "theta2",
    "material_1": "air",
    "material_2": "water",
    "theta1_deg": 30,
  })
  req, _ := http.NewRequest("POST", "https://api.miniwebtool.com/v1/tools/snell-s-law-calculator/run", bytes.NewReader(body))
  req.Header.Set("Authorization", "Bearer mwt_live_YOUR_KEY")
  req.Header.Set("Content-Type", "application/json")

  resp, err := http.DefaultClient.Do(req)
  if err != nil { panic(err) }
  defer resp.Body.Close()
  out, _ := io.ReadAll(resp.Body)
  fmt.Println(string(out))
}
import java.net.URI;
import java.net.http.*;

var client = HttpClient.newHttpClient();
var req = HttpRequest.newBuilder()
    .uri(URI.create("https://api.miniwebtool.com/v1/tools/snell-s-law-calculator/run"))
    .header("Authorization", "Bearer mwt_live_YOUR_KEY")
    .header("Content-Type", "application/json")
    .POST(HttpRequest.BodyPublishers.ofString("{\"solve_for\":\"theta2\",\"material_1\":\"air\",\"material_2\":\"water\",\"theta1_deg\":30}"))
    .build();

var resp = client.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(resp.body());
how-to call snell-s-law-calculator
  1. Get an API key
    Get an API key. Sign up free for a bearer token. 1,000 credits/month, no card.
  2. Assemble the JSON body
    Required fields: . See the Request body table above for the full schema.
  3. POST to https://api.miniwebtool.com/v1/tools/snell-s-law-calculator/run
    Headers: Authorization: Bearer <key> and Content-Type: application/json. Copy-paste snippets in 7 languages are under Code examples.
  4. Parse the response
    Envelope: {request_id, tool, tool_version, credits_used, result}. The typed output lives in result.
faq frequently asked
What does the Snell's Law Calculator API do?+

Refraction angles, indices, critical angle, and Brewster angle from Snell's law with a built-in material library. Use it to add this utility without rebuilding formulas, validation, examples, and documentation.

How much does one call to Snell's Law Calculator cost?+

1 credit per successful call. Failed calls (validation errors, 5xx) don't bill.

What parameters does the Snell's Law Calculator API require?+

Required fields: (none). Full schema at /v1/openapi.json.

Is the Snell's Law Calculator API deterministic?+

Yes — same input, same output, forever. Tool version 2026-04-22; output shape is stable within a major version.

Can an AI agent call the Snell's Law Calculator API?+

Yes. Connect to https://api.miniwebtool.com/v1/mcp over the Model Context Protocol. The agent discovers `snell-s-law-calculator` with its JSON Schema automatically, so the model can plan while MiniWebtool handles the exact tool result.

What format does the API return?+

JSON with a stable envelope: `{request_id, tool, tool_version, credits_used, result}`. Errors are RFC 7807 `application/problem+json`.

mcp use from an AI agent

Every endpoint on this site is also exposed via the Model Context Protocol at https://api.miniwebtool.com/v1/mcp. Claude, Cursor, and any MCP-capable agent can discover this tool (snell-s-law-calculator) and its JSON Schema automatically — no client codegen.

# List tools the agent can call
curl -s https://api.miniwebtool.com/v1/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' \
 | jq '.result.tools[] | select(.name=="snell-s-law-calculator")'
see-also related science tools