100x·FDE Roadmap
On this page

Kit · Block 1 · Week 2 · The second interface: APIs

Kit

Every link, command and word you need this week, with one line on what each is for.

After the lessonNothing to install

How to use this

Nothing to install this week: the Request Builder runs in your browser. Section 1 is the path through the Request Builder. Section 2 is the links. Section 4 is for when you want the same requests in a terminal. Section 5 is the bridge to the next lesson, Building APIs and the backend: the Groq call in Python.

1Everything Here Can Be Done in the Browser

You can do the whole week in the Request Builder, with nothing to download. The only other site you visit is console.groq.com, to create a free key in step 8. Ten steps, in order:

StepWhat you do
Step 1 · The partsYour Round Three message, translated into a real HTTP request.
Step 2 · Read: your first GETRead from an echo machine, and watch a space become %20.
Step 3 · Create: POST a packageSend Aarav's workflow as JSON and find it in the reply.
Step 4 · Replay Round Three for realCreate a key on Aarav's service, then Create a diagnosis: 201.
Step 5 · Break it on purposeCause 404, 405, 401 and 400 one at a time, and read the hint each time.
Step 6 · Whose fault: every codeEight real requests, eight codes. Predict whose fault before you send.
Step 7 · Read real trafficOpen DevTools on the page and find all six parts of your own request.
Step 8 · Put a model behind itCreate a free Groq key and send Aarav's workflow to a model. Send it twice.
Step 9 · Find your key, and where it should liveSpot your key in plain text, then decide which box should hold it.
Step 10 · Design your APIList every request your own app needs. This goes into the practice set.

The terminal commands in section 4 and the bridge in section 5 are the same requests again, for when you want them outside the browser. They are optional this week.

2Links

LinkWhat it is for
Request BuilderSend real requests from your browser: the echo, GET, POST, Groq, Aarav, and every status code. Keeps your key in memory only.
The WireOptional deep dive: Morse, ASCII, TCP/IP, HTTP, REST, JSON. Why each part of a request exists.
console.groq.com/keysCreate your free Groq key, and revoke it if it leaks. Sign in with Google. Groq shows a key once.
Groq modelsWhich models exist today. Use openai/gpt-oss-120b.
Groq rate limitsHow many requests your account gets: 30 a minute and 1,000 a day for gpt-oss-120b on the free tier.
Groq deprecationsRetired models and their shutdown dates. Why llama-3.3-70b-versatile returns 404 since 16 Aug 2026.
__SITE__/aaravAarav's Diagnosis Service. The machine from Round Three, as a real API. Its doors are in section 3.
httpbin.orgA public echo machine: sends back whatever it receives. /get, /post, and /status/404 for any code. It does not reject broken JSON.
postman-echo.comA second echo machine, for when httpbin is slow or down.
hoppscotch.ioA free API client in the browser, with no install. The same four boxes as the Builder, with more options.
Chrome DevTools: Network panelThe official guide to the Network tab.
Reading the Network tab · Keys · TroubleshootingThe three guides for this lesson: find the parts, keep the key safe, fix the errors.

3Aarav's Doors

Base address: __SITE__/aarav. Every reply echoes back the parts the machine read, under you_sent. Every error names the part to fix.

CRUDMethodAddressKeyPackage inReply
ReadGET/aaravnonone200 the list of doors
CreatePOST/aarav/keysno{"name": "Riya"}201 your key
CreatePOST/aarav/diagnosesyes{"workflow": "..."}201 a diagnosis
ReadGET/aarav/diagnosesyesnone200 an empty list: no memory yet
Read, Update, DeleteGET PUT PATCH DELETE/aarav/diagnoses/{id}yesany404 nothing is stored
CreatePOST/aarav/workflowsyes{"workflow": "..."}201 an id, and a pointer to /diagnoses
ReadGET/aarav/workflowsyesnone200 an empty list
(practice)any/aarav/brokennonone500 their machine broke

The key goes in a header: Authorization: Bearer aarav_…. The machine checks the parts in the order of the list: address, then action, then key, then package. The first part that fails is the only error you get.

4The Same Requests in a Terminal

Optional. curl sends a request from the terminal and prints the reply. It is already installed on Mac and on Windows 10 and 11.

Your machine
Commands below switch to match

Windows: two things first

In PowerShell, type curl.exe, not curl; plain curl can run a different PowerShell command. PowerShell also mangles JSON typed inside a command, so save each package in a small file and send the file with --data "@file.json". Or install Git for Windows and use Git Bash, where the Mac commands work as written.

Read: GET from the echo

curl "https://httpbin.org/get?text=hello%20world"
curl.exe "https://httpbin.org/get?text=hello%20world"

Add -i after curl to see the status code and the reply headers as well as the package.

Create: POST to the echo

Terminal · POST httpbin
curl -X POST https://httpbin.org/post \
-H "Content-Type: application/json" \
-d '{"text": "I open Jira, read the tickets, write a report, post it on Slack."}'

Save this as text.json in the folder your terminal is in:

text.json
{"text": "I open Jira, read the tickets, write a report, post it on Slack."}
curl.exe -X POST https://httpbin.org/post -H "Content-Type: application/json" --data "@text.json"

Your text comes back at json.text in the reply.

Create a key at Aarav's

Terminal · POST /aarav/keys
curl -X POST __SITE__/aarav/keys \
-H "Content-Type: application/json" \
-d '{"name": "Riya"}'
name.json
{"name": "Riya"}
curl.exe -X POST __SITE__/aarav/keys -H "Content-Type: application/json" --data "@name.json"

The reply is 201 with your key. Put it in an environment variable for this terminal session, so it never appears inside a command:

export AARAV_KEY="paste-your-aarav-key-here"
$env:AARAV_KEY="paste-your-aarav-key-here"

Create a diagnosis

Terminal · POST /aarav/diagnoses
curl -X POST __SITE__/aarav/diagnoses \
-H "Authorization: Bearer $AARAV_KEY" \
-H "Content-Type: application/json" \
-d '{"workflow": "I open Jira, read the week'"'"'s tickets, write a status report and post it on Slack. About 90 minutes."}'
workflow.json
{"workflow": "I open Jira, read the week's tickets, write a status report and post it on Slack. About 90 minutes."}
curl.exe -X POST __SITE__/aarav/diagnoses -H "Authorization: Bearer $env:AARAV_KEY" -H "Content-Type: application/json" --data "@workflow.json"

Run it twice. The same diagnosis comes back both times: this machine follows rules.

Create a reply from Groq

export GROQ_API_KEY="paste-your-groq-key-here"
$env:GROQ_API_KEY="paste-your-groq-key-here"
Terminal · POST Groq chat completions
curl https://api.groq.com/openai/v1/chat/completions \
-H "Authorization: Bearer $GROQ_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "openai/gpt-oss-120b", "messages": [{"role": "user", "content": "I open Jira, read the week'"'"'s tickets, write a status report and post it on Slack. About 90 minutes. Diagnose this workflow: repeated pattern, bottleneck, first AI step."}]}'
groq.json
{"model": "openai/gpt-oss-120b", "messages": [{"role": "user", "content": "I open Jira, read the week's tickets, write a status report and post it on Slack. About 90 minutes. Diagnose this workflow: repeated pattern, bottleneck, first AI step."}]}
curl.exe https://api.groq.com/openai/v1/chat/completions -H "Authorization: Bearer $env:GROQ_API_KEY" -H "Content-Type: application/json" --data "@groq.json"

Run it twice. Different words come back each time. The door is deterministic; what comes through it is probabilistic. The text is at choices[0].message.content.

An environment variable set this way lasts until you close the terminal. Do not paste keys into commands you share, and do not post your terminal history.

Every code on demand

Command (Mac; on Windows use curl.exe)You get
curl -i https://httpbin.org/status/404404 nothing at that address
curl -i https://httpbin.org/status/429429 too many requests
curl -i https://api.groq.com/openai/v1/models401 no key: a real 401 from Groq
curl -i -X DELETE __SITE__/aarav/diagnoses405 this door does not take Delete
curl -i __SITE__/aarav/broken500 their machine broke

5Bridge to Building APIs and the Backend

The Groq call in Python

The same request as the curl command, in Python. In the next lesson this moves inside a FastAPI backend, which is where the key belongs. Install the library once with pip install requests (Mac: pip3), and set GROQ_API_KEY as above before you run it.

groq_call.py
import os
import requests
response = requests.post(
"https://api.groq.com/openai/v1/chat/completions",address
headers={"Authorization": "Bearer " + os.environ["GROQ_API_KEY"]},key
json={package
"model": "openai/gpt-oss-120b",package
"messages": [{"role": "user", "content": "I open Jira, read the week's tickets, write a status report and post it on Slack. Diagnose this workflow."}],package
},package
)
print(response.status_code)code
print(response.json()["choices"][0]["message"]["content"])reply package
AddressAction: requests.post is POSTKeyPackageCode

The action is in the function name: requests.post. Passing json= turns the dictionary into JSON and adds Content-Type: application/json for you. os.environ reads the key from the environment, so it never sits in the file.

6Words You Will Meet

APIThe interface between two machines: the agreed way one asks and the other answers.
EndpointOne door of an API: an address plus the actions it takes. /aarav/diagnoses is one.
URLThe full address: the rules (https://), the machine, the path, and any query.
PathThe door on the machine: the part after the domain, such as /diagnoses.
Query stringExtra details on the address after a ?, such as ?text=hello. Spaces become %20.
MethodHow the action is spelled on the wire: GET, POST, PUT, PATCH, DELETE.
CRUDCreate, Read, Update, Delete: the four actions. Create is POST, Read is GET, Update is PUT or PATCH, Delete is DELETE.
HeaderA line written on the envelope, not inside the letter. The machine reads it without opening the package.
AuthorizationThe header that carries the key.
BearerThe word before the key. Whoever bears this key gets in.
BodyThe package inside the request or reply.
JSONA text format, not a language: keys and values in curly braces. Every language and tool can read it.
Status codeThe three-digit number at the top of every reply. It says what happened.
2xx · 4xx · 5xx2xx it worked. 4xx you sent something wrong. 5xx their machine failed.
RequestWhat you send: address, action, key, package.
ResponseWhat comes back: a code and a package.
Rate limitHow many requests an account may send per minute or day. Past it: 429.
CORSThe browser's rule that a page may only call another site if that site allows it.
HTTPSHTTP inside a sealed envelope. Nobody between you and the machine can read the key.
StreamA reply sent in many small pieces as it is written, so words appear one by one.
ModelThe program that reads text and writes text back. Here, gpt-oss-120b, running on Groq's machines.
Open-weightA model whose trained numbers are published, so anyone can run it. Groq serves many.
LPUGroq's own chip for running models fast. Groq with a q, not Grok.
BackendThe machine behind your UI. It holds the keys, calls the model, and will store the data.

Address, action, key, package. Code, package.Companion pages: reading the Network tab · keys · troubleshooting