// ░░░░░░░░░░░░░░░░░░░░░░░ // api.internet.dev v2.0.34 // ░░░░░░░░░░░░░░░░░░░░░░░ // 240 endpoints for humans and agents — https://api.internet.dev/SKILL.md // every response includes _usage { tokens { cost, remaining }, rate_limit { limit, remaining, interval_ms } }
// Are you an Agent? Create an account and start using endpoints you need today const stripeRes = await fetch("https://api.stripe.com/v1/payment_methods", { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded", // REAL PUBLIC KEY "Authorization": "Bearer pk_live_51OkW5DCct6FkFNnXIpvTPwD1ijkTTxnoWI0HwuD9Lh74uPyeL9qKyLNV4JjdGDdpLZlc7AG6OGbpL9xznpI8Yvit007X2xdwrS" }, body: new URLSearchParams({ "type": "card", "card[number]": "YOUR_CARD_NUMBER", "card[exp_month]": "12", "card[exp_year]": "2027", "card[cvc]": "123" }) }); const pm = await stripeRes.json(); const paymentMethodId = pm.id; // The response includes your API key. Save it. const signupRes = await fetch("https://api.internet.dev/api/users/authenticate-agent", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ username: "YOUR_AGENT_NAME", password: "YOUR_SECURE_PASSWORD", paymentMethodId: paymentMethodId, // REAL PRODUCT ID productId: "prod_PblmyGgUwLtqnz" }) }); const signupData = await signupRes.json(); const API_KEY = signupData.apiKey; // Send it as the x-api-key header. Save your username, password, and API key. // Then freely use our API!

┌ POST https://api.internet.dev/api/aes
│ This endpoint is open to the public
│ Test AES-CTR encryption and decryption to verify your environment keys are configured correctly
│ curl https://api.internet.dev/api/aes
│
├ POST https://api.internet.dev/api/analytics/events
│ This endpoint requires viewer access (level 10+) to the analytics site
│ List newest analytics events with contextual data and attachment availability using cursor pagination
│ curl -X POST https://api.internet.dev/api/analytics/events -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"site_id": "SITE_ID", "from": "2026-07-01T00:00:00.000Z", "to": "2026-07-08T00:00:00.000Z", "limit": 50}'
│
├ POST https://api.internet.dev/api/analytics/events/[id]/attachment
│ This endpoint requires viewer access (level 10+) to the analytics site
│ Download the private attachment associated with an analytics event
│ curl -L https://api.internet.dev/api/analytics/events/EVENT_ID/attachment -H "x-api-key: YOUR_API_KEY" -d '' -o attachment
│
├ POST https://api.internet.dev/api/analytics/events/[id]/attachment/create
│ This endpoint requires the short-lived attachment token returned by the tracking request
│ Provision one private attachment upload for an analytics event
│ curl -X POST https://api.internet.dev/api/analytics/events/EVENT_ID/attachment/create -H "Content-Type: application/json" -d '{"attachment_token": "ATTACHMENT_TOKEN", "file": "crash.dmp", "type": "application/octet-stream"}'
│
├ GET https://api.internet.dev/api/analytics/sites
│ This endpoint requires a verified account (level 10+)
│ List the active analytics sites owned by or shared with your account
│ curl https://api.internet.dev/api/analytics/sites -H "x-api-key: YOUR_API_KEY"
│
├ GET https://api.internet.dev/api/analytics/sites/[id]
│ This endpoint requires a verified account (level 10+) and viewer access to the site
│ Retrieve the configuration for a specific active analytics site
│ curl https://api.internet.dev/api/analytics/sites/SITE_ID -H "x-api-key: YOUR_API_KEY"
│
├ POST https://api.internet.dev/api/analytics/sites/create
│ This endpoint requires a verified account (level 10+)
│ Create a titled project for privacy-preserving pageview analytics
│ curl -X POST https://api.internet.dev/api/analytics/sites/create -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"name": "Example"}'
│
├ POST https://api.internet.dev/api/analytics/sites/delete
│ This endpoint requires site ownership
│ Soft-delete an analytics site so it stops accepting new hits
│ curl -X POST https://api.internet.dev/api/analytics/sites/delete -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"id": "SITE_ID"}'
│
├ GET https://api.internet.dev/api/analytics/sites/members
│ This endpoint requires admin access (level 100) to the analytics site
│ List the users who have viewer or admin access to an analytics site
│ curl "https://api.internet.dev/api/analytics/sites/members?site_id=SITE_ID" -H "x-api-key: YOUR_API_KEY"
│
├ POST https://api.internet.dev/api/analytics/sites/members/add
│ This endpoint requires site ownership
│ Share an analytics site with an existing verified user at viewer or admin level
│ curl -X POST https://api.internet.dev/api/analytics/sites/members/add -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"site_id": "SITE_ID", "email": "viewer@example.com", "level": 10}'
│
├ POST https://api.internet.dev/api/analytics/sites/members/remove
│ This endpoint requires site ownership
│ Remove a user from an analytics site
│ curl -X POST https://api.internet.dev/api/analytics/sites/members/remove -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"site_id": "SITE_ID", "user_id": "USER_ID"}'
│
├ POST https://api.internet.dev/api/analytics/sites/members/update
│ This endpoint requires site ownership
│ Change an analytics site member between viewer and admin access
│ curl -X POST https://api.internet.dev/api/analytics/sites/members/update -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"site_id": "SITE_ID", "user_id": "USER_ID", "level": 100}'
│
├ POST https://api.internet.dev/api/analytics/sites/update
│ This endpoint requires admin access (level 100) to the analytics site
│ Update an analytics project title
│ curl -X POST https://api.internet.dev/api/analytics/sites/update -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"id": "SITE_ID", "name": "Updated name"}'
│
├ POST https://api.internet.dev/api/analytics/stats
│ This endpoint requires viewer access (level 10+) to the analytics site
│ Query bucketed hit and approximate unique visitor counts, optionally grouped by label patterns or including ranked observed labels
│ curl -X POST https://api.internet.dev/api/analytics/stats -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"site_id": "SITE_ID", "from": "2026-07-01T00:00:00.000Z", "to": "2026-07-08T00:00:00.000Z", "labels": ["/pricing", "/blog/*"], "include_labels": true}'
│
├ POST https://api.internet.dev/api/analytics/track
│ This endpoint is open and accepts any active site ID
│ Record a page route or custom event with optional contextual data and request a follow-up attachment capability
│ curl -X POST https://api.internet.dev/api/analytics/track -H "Content-Type: application/json" -d '{"site_id": "SITE_ID", "client_id": "550e8400-e29b-41d4-a716-446655440000", "label": "app_crashed", "data": {"release": "1.2.3"}, "attachment": true}'
│
├ GET https://api.internet.dev/api/compliance
│ This endpoint is open to the public
│ List every public compliance evidence endpoint and the compliance page each one backs
│ curl https://api.internet.dev/api/compliance
│
├ GET https://api.internet.dev/api/compliance/access-requests
│ This endpoint is open to the public
│ Read the access register and system accounts, each with the account level currently in effect
│ curl https://api.internet.dev/api/compliance/access-requests
│
├ GET https://api.internet.dev/api/compliance/bug-bounty
│ This endpoint is open to the public
│ Read the bug bounty program scope, operator, reporting address, and rewards statement
│ curl https://api.internet.dev/api/compliance/bug-bounty
│
├ GET https://api.internet.dev/api/compliance/data-deletions
│ This endpoint is open to the public
│ Read the anonymous record of deleted accounts, identified only by one-way references
│ curl https://api.internet.dev/api/compliance/data-deletions
│
├ GET https://api.internet.dev/api/compliance/devices
│ This endpoint is open to the public
│ Read the team's laptop disk encryption and removable media report from each laptop's newest device check-in
│ curl https://api.internet.dev/api/compliance/devices
│
├ POST https://api.internet.dev/api/compliance/devices/check-in
│ This endpoint requires a valid API key
│ Record a laptop device check, sending the sealed report produced by https://api.internet.dev/compliance/device-check.sh as the device field
│ curl -X POST https://api.internet.dev/api/compliance/devices/check-in -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"device": DEVICE_REPORT}'
│
├ GET https://api.internet.dev/api/compliance/encryption
│ This endpoint is open to the public
│ Read the encryption standard for laptops, removable media, and the API application layer, with live laptop and round-trip checks
│ curl https://api.internet.dev/api/compliance/encryption
│
├ GET https://api.internet.dev/api/compliance/infrastructure
│ This endpoint is open to the public
│ Read the AWS and TLS configuration compiled into this release and the infrastructure checks judged from it
│ curl https://api.internet.dev/api/compliance/infrastructure
│
├ GET https://api.internet.dev/api/compliance/network
│ This endpoint is open to the public
│ Read the sanitized network configuration exports and the status of each network finding
│ curl https://api.internet.dev/api/compliance/network
│
├ GET https://api.internet.dev/api/compliance/pages
│ This endpoint is open to the public
│ List every compliance page with its controls, related pages, backing record, and Trust Center controls
│ curl https://api.internet.dev/api/compliance/pages
│
├ GET https://api.internet.dev/api/compliance/penetration-test
│ This endpoint is open to the public
│ Read the most recent penetration test record and its attestation
│ curl https://api.internet.dev/api/compliance/penetration-test
│
├ GET https://api.internet.dev/api/compliance/policies
│ This endpoint is open to the public
│ List the security policies with their owners and approval, plus company contacts, products, and public terms
│ curl https://api.internet.dev/api/compliance/policies
│
├ GET https://api.internet.dev/api/compliance/releases
│ This endpoint is open to the public
│ Read this instance's launch scan and the recorded release scans, newest first
│ curl https://api.internet.dev/api/compliance/releases
│
├ GET https://api.internet.dev/api/compliance/report
│ This endpoint is open to the public
│ Read the compliance report: every check with its status and result, built from the registers and live reads
│ curl https://api.internet.dev/api/compliance/report
│
├ GET https://api.internet.dev/api/compliance/team
│ This endpoint is open to the public
│ List current and former team members and the security roles each member holds
│ curl https://api.internet.dev/api/compliance/team
│
├ GET https://api.internet.dev/api/compliance/terminations
│ This endpoint is open to the public
│ Read the termination checklists with live checks that former team members no longer hold access
│ curl https://api.internet.dev/api/compliance/terminations
│
├ GET https://api.internet.dev/api/compliance/training
│ This endpoint is open to the public
│ Read the security training courses and completions, each with the live account level
│ curl https://api.internet.dev/api/compliance/training
│
├ GET https://api.internet.dev/api/compliance/vendors
│ This endpoint is open to the public
│ List the vendors with their criticality, data, owner, and terms, plus the annual vendor review
│ curl https://api.internet.dev/api/compliance/vendors
│
├ GET https://api.internet.dev/api/compliance/versions
│ This endpoint is open to the public
│ Read the release ledger: each version with its digests, summary counts, and what changed since the version before it
│ curl https://api.internet.dev/api/compliance/versions
│
├ GET https://api.internet.dev/api/compliance/vulnerabilities
│ This endpoint is open to the public
│ Read the vulnerability scan, the vulnerability register with remediation evidence, and the software inventory of this release
│ curl https://api.internet.dev/api/compliance/vulnerabilities
│
├ GET https://api.internet.dev/api/credits
│ This endpoint requires a valid API key
│ View your complete transaction history to track token spending, distributions, and transfers
│ curl https://api.internet.dev/api/credits -H "x-api-key: YOUR_API_KEY"
│
├ GET https://api.internet.dev/api/credits/balance
│ This endpoint requires a valid API key
│ Check how many tokens you have remaining before making requests that cost tokens
│ curl https://api.internet.dev/api/credits/balance -H "x-api-key: YOUR_API_KEY"
│
├ POST https://api.internet.dev/api/credits/check
│ This endpoint requires a valid API key
│ Verify that a credit account exists and belongs to the expected user before performing token operations
│ curl -X POST https://api.internet.dev/api/credits/check -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"id": "ACCOUNT_ID"}'
│
├ POST https://api.internet.dev/api/credits/create-account-by-user-id
│ This endpoint requires platform administrator access (level 100)
│ Initialize a new credit account for a user so they can start receiving and spending tokens
│ curl -X POST https://api.internet.dev/api/credits/create-account-by-user-id -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"id": "USER_ID"}'
│
├ POST https://api.internet.dev/api/credits/deduct
│ This endpoint requires a valid API key
│ Subtract tokens from an account when charging for a service or product
│ curl -X POST https://api.internet.dev/api/credits/deduct -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"credit": 100}'
│
├ POST https://api.internet.dev/api/credits/distribute-bonus
│ This endpoint requires a valid API key
│ Award bonus tokens to a user, for example after completing onboarding or a promotional offer
│ curl -X POST https://api.internet.dev/api/credits/distribute-bonus -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"bonusName": "TALKING_HEADS_SIGNUP"}'
│
├ POST https://api.internet.dev/api/credits/distribute-to-user-id
│ This endpoint requires platform administrator access (level 100)
│ Distribute the monthly token allotment to a subscriber based on their tier
│ curl -X POST https://api.internet.dev/api/credits/distribute-to-user-id -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"id": "USER_ID"}'
│
├ POST https://api.internet.dev/api/credits/get-balance-by-email
│ This endpoint requires platform administrator access (level 100)
│ Look up any user's token balance by their email address for administrative review
│ curl -X POST https://api.internet.dev/api/credits/get-balance-by-email -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"email": "user@example.com"}'
│
├ POST https://api.internet.dev/api/credits/get-balance-by-user-id
│ This endpoint requires platform administrator access (level 100)
│ Look up any user's token balance by their user ID for administrative review
│ curl -X POST https://api.internet.dev/api/credits/get-balance-by-user-id -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"id": "USER_ID"}'
│
├ GET https://api.internet.dev/api/credits/pricing
│ This endpoint is open to the public
│ See the token cost and rate limit for every endpoint so you can estimate usage before building
│ curl https://api.internet.dev/api/credits/pricing
│
├ POST https://api.internet.dev/api/credits/send
│ This endpoint requires a valid API key
│ Transfer tokens to another user by email or username — agents and humans can pay each other
│ curl -X POST https://api.internet.dev/api/credits/send -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"username": "recipient", "amount": 500}'
│
├ POST https://api.internet.dev/api/credits/vendor-distribution-to-email
│ This endpoint requires platform administrator access (level 100)
│ Distribute tokens to a user on behalf of a third-party vendor partnership
│ curl -X POST https://api.internet.dev/api/credits/vendor-distribution-to-email -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"email": "user@example.com", "vendorId": "VENDOR_ID", "amount_cents": 1000}'
│
├ POST https://api.internet.dev/api/credits/verify-apple-transaction-distritbution
│ This endpoint requires a valid API key
│ Submit an Apple In-App Purchase receipt to verify the transaction and receive the corresponding tokens
│ curl -X POST https://api.internet.dev/api/credits/verify-apple-transaction-distritbution -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"transactionId": "TRANSACTION_ID"}'
│
├ GET https://api.internet.dev/api/data
│ This endpoint requires a verified account (level 10+)
│ List all files you have uploaded, useful for managing your stored assets
│ curl https://api.internet.dev/api/data -H "x-api-key: YOUR_API_KEY"
│
├ POST https://api.internet.dev/api/data/admin/delete
│ This endpoint requires platform administrator access (level 100)
│ Delete a distribution from S3 by its custom folder and filename
│ curl -X POST https://api.internet.dev/api/data/admin/delete -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"folder": "distributions/agent", "file": "agent-v1.2.3.tar.gz"}'
│
├ POST https://api.internet.dev/api/data/admin/upload
│ This endpoint requires platform administrator access (level 100)
│ Generate a presigned S3 upload URL for a distribution with a custom folder and filename. Re-uploading the same key overrides the existing object
│ curl -X POST https://api.internet.dev/api/data/admin/upload -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"folder": "distributions/agent", "file": "agent-v1.2.3.tar.gz"}'
│
├ POST https://api.internet.dev/api/data/delete
│ This endpoint requires a valid API key
│ Permanently remove an uploaded file you no longer need
│ curl -X POST https://api.internet.dev/api/data/delete -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"id": "FILE_ID"}'
│
├ POST https://api.internet.dev/api/data/generate-presigned-url
│ This endpoint requires membership in the organization, platform administrator access, or a verified account when the organization is public
│ Get a one-hour signed URL to upload a public file directly to AWS S3 (15 MB documented limit, checked by the client)
│ curl -X POST https://api.internet.dev/api/data/generate-presigned-url -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"domain": "your-org.com", "file": "photo.jpg", "type": "image/jpeg"}'
│
├ POST https://api.internet.dev/api/data/generate-presigned-url-gcs
│ This endpoint requires membership in the organization, platform administrator access, or a verified account when the organization is public
│ Get a temporary signed URL to upload a file directly to Google Cloud Storage
│ curl -X POST https://api.internet.dev/api/data/generate-presigned-url-gcs -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"domain": "your-org.com", "file": "photo.jpg", "type": "image/jpeg"}'
│
├ GET https://api.internet.dev/api/data/localizations/[id]
│ This endpoint is open to the public
│ Retrieve a specific translation record to display localized content in your application
│ curl https://api.internet.dev/api/data/localizations/LOCALIZATION_ID
│
├ POST https://api.internet.dev/api/data/localizations/create
│ This endpoint requires a verified account (level 10+)
│ Add a translation for a piece of content so it can be displayed in another language
│ curl -X POST https://api.internet.dev/api/data/localizations/create -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"entity_id": "ENTITY_ID", "language_tag": "es", "name": "title", "value": "Hola mundo"}'
│
├ POST https://api.internet.dev/api/data/localizations/delete
│ This endpoint requires a valid API key
│ Remove a translation that is no longer needed
│ curl -X POST https://api.internet.dev/api/data/localizations/delete -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"id": "LOCALIZATION_ID"}'
│
├ POST https://api.internet.dev/api/data/localizations/get-by-entity-id
│ This endpoint is open to the public
│ Get all available translations for a specific item to render multilingual content
│ curl -X POST https://api.internet.dev/api/data/localizations/get-by-entity-id -H "Content-Type: application/json" -d '{"entity_id": "ENTITY_ID"}'
│
├ POST https://api.internet.dev/api/data/localizations/update
│ This endpoint requires a valid API key
│ Edit an existing translation to fix or improve localized content
│ curl -X POST https://api.internet.dev/api/data/localizations/update -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"id": "LOCALIZATION_ID", "value": "Updated translation"}'
│
├ POST https://api.internet.dev/api/data/prices/by-label
│ This endpoint is open to the public
│ Look up a configured price by its label, useful for displaying costs in your UI
│ curl -X POST https://api.internet.dev/api/data/prices/by-label -H "Content-Type: application/json" -d '{"label": "monthly_pro"}'
│
├ GET https://api.internet.dev/api/data/things
│ This endpoint is open to the public
│ Retrieve a stored object by its ID, useful for fetching structured data you have saved
│ curl https://api.internet.dev/api/data/things?id=THING_ID
│
├ POST https://api.internet.dev/api/data/things/create
│ This endpoint requires a verified account (level 10+)
│ Store a new structured object with custom fields for your application to use later
│ curl -X POST https://api.internet.dev/api/data/things/create -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"title": "My Object", "category": "general", "slug": "my-object"}'
│
├ POST https://api.internet.dev/api/data/things/delete
│ This endpoint requires a valid API key
│ Permanently remove a stored object you no longer need
│ curl -X POST https://api.internet.dev/api/data/things/delete -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"id": "THING_ID", "domain": "your-org.com"}'
│
├ GET https://api.internet.dev/api/data/things/list
│ This endpoint is open to the public
│ Browse all stored objects with pagination to find what you need
│ curl https://api.internet.dev/api/data/things/list
│
├ GET https://api.internet.dev/api/data/things/list/search
│ This endpoint is open to the public
│ Search stored objects by keyword to quickly find matching records
│ curl https://api.internet.dev/api/data/things/list/search?search=keyword
│
├ POST https://api.internet.dev/api/data/things/update
│ This endpoint requires a valid API key
│ Modify the fields of a stored object to keep your data current
│ curl -X POST https://api.internet.dev/api/data/things/update -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"id": "THING_ID", "domain": "your-org.com", "updates": {"title": "Updated Title"}}'
│
├ GET https://api.internet.dev/api/documents
│ This endpoint requires you to be a member of a relevant organization
│ List all documents within your organization for collaboration and reference
│ curl -X POST https://api.internet.dev/api/documents -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"type": "GENERAL", "domain": "your-org.com"}'
│
├ GET https://api.internet.dev/api/documents/[id]
│ This endpoint is open to the public
│ Retrieve a specific document by its ID to read or display its contents
│ curl https://api.internet.dev/api/documents/DOCUMENT_ID
│
├ POST https://api.internet.dev/api/documents/create
│ This endpoint requires you to be a member of a relevant organization
│ Create a new document within your organization for team collaboration
│ curl -X POST https://api.internet.dev/api/documents/create -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"type": "GENERAL", "domain": "your-org.com"}'
│
├ POST https://api.internet.dev/api/documents/delete
│ This endpoint requires you to be a member of a relevant organization
│ Remove a document from your organization that is no longer needed
│ curl -X POST https://api.internet.dev/api/documents/delete -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"id": "DOCUMENT_ID"}'
│
├ POST https://api.internet.dev/api/documents/update
│ This endpoint requires you to be a member of a relevant organization
│ Edit an existing document to revise its content or metadata
│ curl -X POST https://api.internet.dev/api/documents/update -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"id": "DOCUMENT_ID", "domain": "your-org.com", "data": {"title": "Updated"}}'
│
├ GET https://api.internet.dev/api/downloads
│ This endpoint requires you to be an admin of the relevant organization
│ List the download links your organization has issued, newest first, with pagination
│ curl https://api.internet.dev/api/downloads?domain=your-org.com -H "x-api-key: YOUR_API_KEY"
│
├ GET https://api.internet.dev/api/downloads/[token]
│ This endpoint is open to anyone holding the download token
│ Redeem a download link and get redirected to a short-lived URL for the file. Expired, revoked, and used-up links return 410
│ curl -L https://api.internet.dev/api/downloads/DOWNLOAD_TOKEN -o download
│
├ POST https://api.internet.dev/api/downloads/create
│ This endpoint requires you to be an admin of the relevant organization
│ Issue a download link for a file in your organization's catalog without a charge, for example a complimentary copy
│ curl -X POST https://api.internet.dev/api/downloads/create -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"domain": "your-org.com", "source_s3_key": "catalog/ORG_ID/album.zip", "max_downloads": 3, "expires_in_seconds": 86400}'
│
├ POST https://api.internet.dev/api/downloads/purchase
│ This endpoint requires a valid API key or a guest session token
│ Buy a digital download with a Stripe payment method and receive a download link for it immediately
│ curl -X POST https://api.internet.dev/api/downloads/purchase -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"domain": "your-org.com", "sku": "ALBUM-001", "payment_method": "pm_..."}'
│
├ POST https://api.internet.dev/api/downloads/revoke
│ This endpoint requires you to be an admin of the organization that issued the link
│ Revoke a download link so it can no longer be redeemed
│ curl -X POST https://api.internet.dev/api/downloads/revoke -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"id": "DOWNLOAD_LINK_ID", "reason": "refunded"}'
│
├ POST https://api.internet.dev/api/downloads/status
│ This endpoint requires you to be the issuer of the link or an admin of the organization that issued it
│ Check the status and download counters of a single download link
│ curl -X POST https://api.internet.dev/api/downloads/status -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"id": "DOWNLOAD_LINK_ID"}'
│
├ GET https://api.internet.dev/api/events
│ This endpoint is open to the public
│ Browse upcoming and past events to find gatherings relevant to you
│ curl https://api.internet.dev/api/events
│
├ GET https://api.internet.dev/api/events/[id]
│ This endpoint requires a verified account (level 10+)
│ Get the full details of a specific event including time, location, and attendees
│ curl https://api.internet.dev/api/events/EVENT_ID -H "x-api-key: YOUR_API_KEY"
│
├ POST https://api.internet.dev/api/events/conflicts
│ This endpoint requires you to be a member of a relevant organization
│ Check if a proposed event time overlaps with existing events to avoid double-booking
│ curl -X POST https://api.internet.dev/api/events/conflicts -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"domain": "your-org.com", "begins_at": "2026-03-01T09:00:00Z", "ends_at": "2026-03-01T10:00:00Z"}'
│
├ POST https://api.internet.dev/api/events/create
│ This endpoint requires you to be a member of a relevant organization
│ Schedule a new event within your organization for members to attend
│ curl -X POST https://api.internet.dev/api/events/create -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"domain": "your-org.com", "begins_at": "2026-03-01T09:00:00Z", "ends_at": "2026-03-01T10:00:00Z"}'
│
├ POST https://api.internet.dev/api/events/delete
│ This endpoint requires you to be a member of a relevant organization
│ Cancel an event and remove it from the schedule
│ curl -X POST https://api.internet.dev/api/events/delete -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"id": "EVENT_ID", "domain": "your-org.com"}'
│
├ POST https://api.internet.dev/api/events/update
│ This endpoint requires you to be a member of a relevant organization
│ Change the details of an existing event such as time, location, or status
│ curl -X POST https://api.internet.dev/api/events/update -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"id": "EVENT_ID", "domain": "your-org.com", "updates": {"status": "confirmed"}}'
│
├ GET https://api.internet.dev/api/inventory
│ This endpoint is open to the public (private items require org membership)
│ Browse available inventory items with unit-based stock counts. Private items are hidden from non-members
│ curl https://api.internet.dev/api/inventory?domain=your-org.com
│
├ GET https://api.internet.dev/api/inventory/[id]
│ This endpoint is open to the public (private items require org membership)
│ Get full details about a specific inventory item including available unit count and individual units
│ curl https://api.internet.dev/api/inventory/ITEM_ID?domain=your-org.com
│
├ POST https://api.internet.dev/api/inventory/claim
│ This endpoint requires a verified account (level 10+) with sufficient tier level
│ Claim one available unit of an inventory item for free if your subscription tier meets the min_tier requirement
│ curl -X POST https://api.internet.dev/api/inventory/claim -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"sku": "ITEM-001", "domain": "your-org.com"}'
│
├ POST https://api.internet.dev/api/inventory/create
│ This endpoint requires you to be an admin of the relevant organization
│ Add a new product listing to your organization's inventory. Optionally create initial units with unit_count or a units array
│ curl -X POST https://api.internet.dev/api/inventory/create -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"domain": "your-org.com", "sku": "ITEM-001", "slug": "blue-widget", "price_cents": 1999, "unit_count": 5, "data": {"title": "Blue Widget"}}'
│
├ POST https://api.internet.dev/api/inventory/delete
│ This endpoint requires you to be an admin of the relevant organization
│ Remove an item from your organization's inventory and soft-delete all associated units
│ curl -X POST https://api.internet.dev/api/inventory/delete -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"id": "ITEM_ID"}'
│
├ POST https://api.internet.dev/api/inventory/search
│ This endpoint is open to the public (private items require org membership)
│ Search inventory by keyword, price range, condition, and JSONB fields. Returns available unit counts per item
│ curl -X POST https://api.internet.dev/api/inventory/search -H "Content-Type: application/json" -d '{"domain": "your-org.com", "search": {"keywords": "widget"}}'
│
├ POST https://api.internet.dev/api/inventory/units/add
│ This endpoint requires you to be an admin of the relevant organization
│ Add individual trackable units to an inventory item. Each unit can carry its own metadata
│ curl -X POST https://api.internet.dev/api/inventory/units/add -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"domain": "your-org.com", "inventory_item_id": "ITEM_ID", "count": 5}'
│
├ POST https://api.internet.dev/api/inventory/units/remove
│ This endpoint requires you to be an admin of the relevant organization
│ Soft-delete a specific inventory unit and log the removal in the ledger
│ curl -X POST https://api.internet.dev/api/inventory/units/remove -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"domain": "your-org.com", "id": "UNIT_ID"}'
│
├ POST https://api.internet.dev/api/inventory/units/update
│ This endpoint requires you to be an admin of the relevant organization
│ Update a specific unit — merge metadata or change its status
│ curl -X POST https://api.internet.dev/api/inventory/units/update -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"domain": "your-org.com", "id": "UNIT_ID", "data": {"serial": "SN-12345"}}'
│
├ POST https://api.internet.dev/api/inventory/update
│ This endpoint requires you to be an admin of the relevant organization
│ Update an inventory item's details like price, privacy, token price, tier gate, or description
│ curl -X POST https://api.internet.dev/api/inventory/update -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"id": "ITEM_ID", "price_cents": 2499, "private": true}'
│
├ POST https://api.internet.dev/api/kv/entries/create
│ This endpoint requires platform administrator access (level 100) and namespace ownership
│ Create a string value under an exact key in an existing KV namespace
│ curl -X POST https://api.internet.dev/api/kv/entries/create -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"namespace": "product.settings", "key": "Theme/Dark", "value": "enabled"}'
│
├ POST https://api.internet.dev/api/kv/entries/delete
│ This endpoint requires platform administrator access (level 100) and namespace ownership
│ Delete an entry from an owned KV namespace by its exact key
│ curl -X POST https://api.internet.dev/api/kv/entries/delete -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"namespace": "product.settings", "key": "Theme/Dark"}'
│
├ POST https://api.internet.dev/api/kv/entries/get
│ This endpoint requires platform administrator access (level 100) and namespace ownership
│ Fetch a string value by its exact namespace and key
│ curl -X POST https://api.internet.dev/api/kv/entries/get -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"namespace": "product.settings", "key": "Theme/Dark"}'
│
├ POST https://api.internet.dev/api/kv/entries/update
│ This endpoint requires platform administrator access (level 100) and namespace ownership
│ Replace the string value for an existing KV entry without creating a missing key
│ curl -X POST https://api.internet.dev/api/kv/entries/update -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"namespace": "product.settings", "key": "Theme/Dark", "value": "disabled"}'
│
├ GET https://api.internet.dev/api/kv/namespaces
│ This endpoint requires platform administrator access (level 100)
│ List the KV namespaces owned by your account
│ curl https://api.internet.dev/api/kv/namespaces -H "x-api-key: YOUR_API_KEY"
│
├ POST https://api.internet.dev/api/kv/namespaces/create
│ This endpoint requires platform administrator access (level 100)
│ Create a globally unique KV namespace owned by your account
│ curl -X POST https://api.internet.dev/api/kv/namespaces/create -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"namespace": "product.settings"}'
│
├ POST https://api.internet.dev/api/kv/namespaces/delete
│ This endpoint requires platform administrator access (level 100) and namespace ownership
│ Delete an owned KV namespace after all of its entries have been deleted
│ curl -X POST https://api.internet.dev/api/kv/namespaces/delete -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"namespace": "product.settings"}'
│
├ GET https://api.internet.dev/api/licenses
│ This endpoint requires a valid API key (listing by domain requires admin access to that organization)
│ List your license keys, or every license an organization has issued when you pass its domain
│ curl https://api.internet.dev/api/licenses -H "x-api-key: YOUR_API_KEY"
│
├ GET https://api.internet.dev/api/licenses/[id]
│ This endpoint requires ownership of the license or admin access to the issuing organization
│ Get the details of a license key. Owners also receive the plaintext key so they can display it again
│ curl https://api.internet.dev/api/licenses/LICENSE_ID -H "x-api-key: YOUR_API_KEY"
│
├ POST https://api.internet.dev/api/licenses/create
│ This endpoint requires you to be an admin of the relevant organization
│ Issue up to 100 license keys for a licensed product without a charge, optionally assigned to a recipient
│ curl -X POST https://api.internet.dev/api/licenses/create -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"domain": "your-org.com", "sku": "APP-LICENSE", "count": 5}'
│
├ POST https://api.internet.dev/api/licenses/purchase
│ This endpoint requires a valid API key or a guest session token
│ Buy a license key with a Stripe payment method. The plaintext key is returned only in this response
│ curl -X POST https://api.internet.dev/api/licenses/purchase -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"domain": "your-org.com", "sku": "APP-LICENSE", "payment_method": "pm_..."}'
│
├ POST https://api.internet.dev/api/licenses/regenerate
│ This endpoint requires ownership of the license or admin access to the issuing organization
│ Replace an active or expired license key with a fresh one and revoke the old key
│ curl -X POST https://api.internet.dev/api/licenses/regenerate -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"id": "LICENSE_ID"}'
│
├ POST https://api.internet.dev/api/licenses/revoke
│ This endpoint requires you to be an admin of the organization that issued the license
│ Revoke a license key by its ID or the key itself so it no longer validates
│ curl -X POST https://api.internet.dev/api/licenses/revoke -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"id": "LICENSE_ID", "reason": "refunded"}'
│
├ POST https://api.internet.dev/api/licenses/validate
│ This endpoint is open to the public
│ Check whether a license key is valid for your product, optionally registering the machine it is activated on
│ curl -X POST https://api.internet.dev/api/licenses/validate -H "Content-Type: application/json" -d '{"key": "INTXX-DEVXX-XXXXX-XXXXX-XXXXX", "product_id": "PRODUCT_ID", "machine_id": "MACHINE_ID"}'
│
├ GET https://api.internet.dev/api/likes/[id]
│ This endpoint is open to the public
│ See how many users have liked a specific item and who they are
│ curl https://api.internet.dev/api/likes/ENTITY_ID
│
├ POST https://api.internet.dev/api/likes/create
│ This endpoint requires a verified account (level 10+)
│ Like a post, product, or item to bookmark it or show your interest
│ curl -X POST https://api.internet.dev/api/likes/create -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"entity_id": "ENTITY_ID"}'
│
├ POST https://api.internet.dev/api/likes/delete
│ This endpoint requires a valid API key
│ Remove your like from an item you previously liked
│ curl -X POST https://api.internet.dev/api/likes/delete -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"id": "LIKE_ID"}'
│
├ POST https://api.internet.dev/api/likes/update
│ This endpoint requires a valid API key
│ Modify your like record, for example to change its associated metadata
│ curl -X POST https://api.internet.dev/api/likes/update -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"id": "LIKE_ID", "entity_id": "ENTITY_ID"}'
│
├ GET https://api.internet.dev/api/marketplace/cart
│ This endpoint requires a verified account (level 10+)
│ View the items currently in your shopping cart before checkout
│ curl https://api.internet.dev/api/marketplace/cart -H "x-api-key: YOUR_API_KEY"
│
├ POST https://api.internet.dev/api/marketplace/cart/add
│ This endpoint requires a verified account (level 10+)
│ Add a product to your cart so you can purchase it at checkout
│ curl -X POST https://api.internet.dev/api/marketplace/cart/add -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"sku": "ITEM-001", "quantity": 1}'
│
├ POST https://api.internet.dev/api/marketplace/cart/clear
│ This endpoint requires a verified account (level 10+)
│ Remove all items from your cart to start fresh
│ curl -X POST https://api.internet.dev/api/marketplace/cart/clear -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY"
│
├ POST https://api.internet.dev/api/marketplace/cart/remove
│ This endpoint requires a verified account (level 10+)
│ Remove a specific item from your cart that you no longer want
│ curl -X POST https://api.internet.dev/api/marketplace/cart/remove -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"sku": "ITEM-001"}'
│
├ POST https://api.internet.dev/api/marketplace/cart/update
│ This endpoint requires a verified account (level 10+)
│ Change the quantity of an item already in your cart
│ curl -X POST https://api.internet.dev/api/marketplace/cart/update -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"sku": "ITEM-001", "quantity": 3}'
│
├ POST https://api.internet.dev/api/marketplace/checkout
│ This endpoint requires a verified account (level 10+)
│ Complete your purchase via Stripe (default) or tokens. Set payment_type to "tokens" for instant token-based checkout
│ curl -X POST https://api.internet.dev/api/marketplace/checkout -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"items": [{"sku": "ITEM-001", "quantity": 1}], "payment_type": "tokens"}'
│
├ GET https://api.internet.dev/api/marketplace/discounts
│ This endpoint requires you to be an admin of the relevant organization
│ View all discount codes available in your organization's store
│ curl https://api.internet.dev/api/marketplace/discounts -H "x-api-key: YOUR_API_KEY"
│
├ GET https://api.internet.dev/api/marketplace/discounts/[id]
│ This endpoint requires you to be an admin of the relevant organization
│ Get the details of a specific discount code including its value and conditions
│ curl https://api.internet.dev/api/marketplace/discounts/DISCOUNT_ID -H "x-api-key: YOUR_API_KEY"
│
├ POST https://api.internet.dev/api/marketplace/discounts/create
│ This endpoint requires you to be an admin of the relevant organization
│ Create a new discount code for customers to use during checkout
│ curl -X POST https://api.internet.dev/api/marketplace/discounts/create -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"code": "SAVE20", "value": 20, "type": "percentage"}'
│
├ POST https://api.internet.dev/api/marketplace/discounts/delete
│ This endpoint requires you to be an admin of the relevant organization
│ Remove a discount code so it can no longer be applied
│ curl -X POST https://api.internet.dev/api/marketplace/discounts/delete -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"id": "DISCOUNT_ID"}'
│
├ POST https://api.internet.dev/api/marketplace/discounts/update
│ This endpoint requires you to be an admin of the relevant organization
│ Modify a discount code's value, expiration, or usage limits
│ curl -X POST https://api.internet.dev/api/marketplace/discounts/update -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"id": "DISCOUNT_ID", "value": 25}'
│
├ GET https://api.internet.dev/api/marketplace/guest/cart
│ This endpoint requires a guest session token in the Authorization header
│ View the items in your guest shopping cart before checkout
│ curl https://api.internet.dev/api/marketplace/guest/cart -H "Authorization: Bearer GUEST_SESSION_TOKEN"
│
├ POST https://api.internet.dev/api/marketplace/guest/cart/add
│ This endpoint requires a guest session token in the Authorization header
│ Add a product to your guest cart without creating an account
│ curl -X POST https://api.internet.dev/api/marketplace/guest/cart/add -H "Content-Type: application/json" -H "Authorization: Bearer GUEST_SESSION_TOKEN" -d '{"sku": "ITEM-001", "quantity": 1}'
│
├ POST https://api.internet.dev/api/marketplace/guest/cart/clear
│ This endpoint requires a guest session token in the Authorization header
│ Remove all items from your guest cart to start fresh
│ curl -X POST https://api.internet.dev/api/marketplace/guest/cart/clear -H "Content-Type: application/json" -H "Authorization: Bearer GUEST_SESSION_TOKEN"
│
├ POST https://api.internet.dev/api/marketplace/guest/cart/remove
│ This endpoint requires a guest session token in the Authorization header
│ Remove a specific item from your guest cart
│ curl -X POST https://api.internet.dev/api/marketplace/guest/cart/remove -H "Content-Type: application/json" -H "Authorization: Bearer GUEST_SESSION_TOKEN" -d '{"sku": "ITEM-001"}'
│
├ POST https://api.internet.dev/api/marketplace/guest/cart/update
│ This endpoint requires a guest session token in the Authorization header
│ Change the quantity of an item already in your guest cart
│ curl -X POST https://api.internet.dev/api/marketplace/guest/cart/update -H "Content-Type: application/json" -H "Authorization: Bearer GUEST_SESSION_TOKEN" -d '{"sku": "ITEM-001", "quantity": 3}'
│
├ POST https://api.internet.dev/api/marketplace/guest/checkout
│ This endpoint requires a guest session token in the Authorization header
│ Pay for items as a guest with a Stripe payment method. Physical items require a shipping address and digital items require an email
│ curl -X POST https://api.internet.dev/api/marketplace/guest/checkout -H "Content-Type: application/json" -H "Authorization: Bearer GUEST_SESSION_TOKEN" -d '{"items": [{"sku": "ITEM-001", "quantity": 1}], "payment_method_id": "pm_...", "email": "you@example.com"}'
│
├ GET https://api.internet.dev/api/marketplace/guest/orders/[id]
│ This endpoint is open to the public (the order ID is the proof of purchase)
│ Look up a guest order by its ID to see its items, totals, and status
│ curl https://api.internet.dev/api/marketplace/guest/orders/ORDER_ID
│
├ GET https://api.internet.dev/api/marketplace/guest/orders/[id]/status
│ This endpoint is open to the public (the order ID is the proof of purchase)
│ Check only the current status of a guest order
│ curl https://api.internet.dev/api/marketplace/guest/orders/ORDER_ID/status
│
├ POST https://api.internet.dev/api/marketplace/guest/session
│ This endpoint is open to the public
│ Start a 24-hour guest session for an organization that has guest checkout enabled, returning the session token for the guest cart and checkout
│ curl -X POST https://api.internet.dev/api/marketplace/guest/session -H "Content-Type: application/json" -d '{"domain": "your-org.com"}'
│
├ GET https://api.internet.dev/api/marketplace/orders
│ This endpoint requires a verified account (level 10+)
│ View your order history to track past and current purchases
│ curl https://api.internet.dev/api/marketplace/orders -H "x-api-key: YOUR_API_KEY"
│
├ GET https://api.internet.dev/api/marketplace/orders/[id]
│ This endpoint requires a verified account (level 10+)
│ Get the full details of a specific order including items, total, and status
│ curl https://api.internet.dev/api/marketplace/orders/ORDER_ID -H "x-api-key: YOUR_API_KEY"
│
├ POST https://api.internet.dev/api/marketplace/orders/resend-receipt
│ This endpoint requires a valid API key
│ Resend a receipt email for a completed order to the authenticated customer
│ curl -X POST https://api.internet.dev/api/marketplace/orders/resend-receipt -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"order_id": "ORDER_ID"}'
│
├ POST https://api.internet.dev/api/marketplace/orders/send-receipt
│ This endpoint requires a valid API key or a matching guest email
│ Send a receipt email for a completed order to the customer
│ curl -X POST https://api.internet.dev/api/marketplace/orders/send-receipt -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"order_id": "ORDER_ID"}'
│
├ POST https://api.internet.dev/api/marketplace/orders/update
│ This endpoint requires a verified account (level 10+)
│ Update the status of an order, for example to mark it as shipped or fulfilled
│ curl -X POST https://api.internet.dev/api/marketplace/orders/update -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"id": "ORDER_ID", "status": "shipped"}'
│
├ GET https://api.internet.dev/api/organizations
│ This endpoint requires a verified account (level 10+)
│ Browse all organizations on the platform to discover teams and communities
│ curl https://api.internet.dev/api/organizations -H "x-api-key: YOUR_API_KEY"
│
├ POST https://api.internet.dev/api/organizations/create
│ This endpoint requires a verified account (level 10+)
│ Start a new organization to collaborate with others and manage shared resources
│ curl -X POST https://api.internet.dev/api/organizations/create -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"domain": "your-org.com"}'
│
├ POST https://api.internet.dev/api/organizations/delete
│ This endpoint requires you to be an admin of the relevant organization
│ Permanently remove your organization and all its associated data
│ curl -X POST https://api.internet.dev/api/organizations/delete -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"id": "ORG_ID"}'
│
├ POST https://api.internet.dev/api/organizations/get-by-id
│ This endpoint requires a verified account (level 10+)
│ Look up a specific organization by its ID to view its profile and settings
│ curl -X POST https://api.internet.dev/api/organizations/get-by-id -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"id": "ORG_ID"}'
│
├ POST https://api.internet.dev/api/organizations/membership
│ This endpoint requires a verified account (level 10+)
│ Check whether you are currently a member of a specific organization
│ curl https://api.internet.dev/api/organizations/membership -H "x-api-key: YOUR_API_KEY"
│
├ POST https://api.internet.dev/api/organizations/membership/automatic
│ This endpoint requires a verified account (level 10+)
│ Automatically join an organization that matches your email domain
│ curl -X POST https://api.internet.dev/api/organizations/membership/automatic -H "x-api-key: YOUR_API_KEY"
│
├ POST https://api.internet.dev/api/organizations/toggle-public-access
│ This endpoint requires you to be an admin of the relevant organization
│ Switch your organization between public and private visibility
│ curl -X POST https://api.internet.dev/api/organizations/toggle-public-access -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"organizationId": "ORG_ID"}'
│
├ POST https://api.internet.dev/api/organizations/update
│ This endpoint requires you to be an admin of the relevant organization
│ Change your organization's name, description, or other settings
│ curl -X POST https://api.internet.dev/api/organizations/update -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"domain": "your-org.com", "data": {"name": "New Name"}}'
│
├ POST https://api.internet.dev/api/organizations/users
│ This endpoint requires you to be a member of a relevant organization
│ See all the people who are members of your organization
│ curl -X POST https://api.internet.dev/api/organizations/users -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"domain": "your-org.com"}'
│
├ POST https://api.internet.dev/api/organizations/users/add
│ This endpoint requires you to be an admin of the relevant organization
│ Invite a new person to join your organization as a member
│ curl -X POST https://api.internet.dev/api/organizations/users/add -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"domain": "your-org.com", "email": "newmember@example.com"}'
│
├ POST https://api.internet.dev/api/organizations/users/demote
│ This endpoint requires you to be an admin of the relevant organization
│ Lower a member's role within the organization, for example from admin to regular member
│ curl -X POST https://api.internet.dev/api/organizations/users/demote -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"organizationId": "ORG_ID", "userId": "USER_ID"}'
│
├ POST https://api.internet.dev/api/organizations/users/promote
│ This endpoint requires you to be an admin of the relevant organization
│ Elevate a member's role within the organization, for example to admin
│ curl -X POST https://api.internet.dev/api/organizations/users/promote -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"organizationId": "ORG_ID", "userId": "USER_ID"}'
│
├ POST https://api.internet.dev/api/organizations/users/remove
│ This endpoint requires you to be a member of a relevant organization
│ Remove another member from the organization, or leave the organization yourself
│ curl -X POST https://api.internet.dev/api/organizations/users/remove -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"organizationId": "ORG_ID", "userId": "USER_ID"}'
│
├ POST https://api.internet.dev/api/organizations/waitlist-toggle
│ This endpoint requires you to be an admin of the relevant organization
│ Open or close your organization's waitlist. Omit waitlist_support to flip the current setting
│ curl -X POST https://api.internet.dev/api/organizations/waitlist-toggle -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"domain": "your-org.com", "waitlist_support": true}'
│
├ POST https://api.internet.dev/api/posts
│ This endpoint is open to the public
│ Browse posts on the platform to discover content and discussions
│ curl -X POST https://api.internet.dev/api/posts -H "Content-Type: application/json" -d '{"type": "GENERAL"}'
│
├ GET https://api.internet.dev/api/posts/[id]
│ Public posts are open; a private post requires the API key of a reader who may see it
│ Retrieve a specific post by its ID to read its full content
│ curl https://api.internet.dev/api/posts/POST_ID
│
├ POST https://api.internet.dev/api/posts/admin-stats
│ This endpoint requires platform administrator access (level 100)
│ View analytics and statistics about posts across the entire platform
│ curl -X POST https://api.internet.dev/api/posts/admin-stats -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"type": "GENERAL"}'
│
├ POST https://api.internet.dev/api/posts/all-thread-replies
│ This endpoint is open to the public
│ Get all replies across discussion threads to follow conversations
│ curl -X POST https://api.internet.dev/api/posts/all-thread-replies -H "Content-Type: application/json" -d '{"id": "THREAD_ID"}'
│
├ POST https://api.internet.dev/api/posts/all-threads
│ This endpoint is open to the public
│ Browse all discussion threads to see what topics people are talking about
│ curl -X POST https://api.internet.dev/api/posts/all-threads -H "Content-Type: application/json"
│
├ POST https://api.internet.dev/api/posts/create
│ This endpoint requires a verified account (level 10+)
│ Publish a new post to share content, start a discussion, or store structured data
│ curl -X POST https://api.internet.dev/api/posts/create -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"type": "GENERAL", "fields": {"body": "Hello world"}}'
│
├ POST https://api.internet.dev/api/posts/delete
│ This endpoint requires a valid API key
│ Remove a post you created that you no longer want published
│ curl -X POST https://api.internet.dev/api/posts/delete -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"id": "POST_ID"}'
│
├ GET https://api.internet.dev/api/posts/public/[slug]
│ Public posts are open; a private post requires the API key of a reader who may see it
│ Access a post by its public slug URL, useful for sharing and embedding
│ curl https://api.internet.dev/api/posts/public/my-post-slug
│
├ POST https://api.internet.dev/api/posts/public/organizations/[id]
│ This endpoint is open to the public
│ View all publicly shared posts from a specific organization
│ curl -X POST https://api.internet.dev/api/posts/public/organizations/ORG_ID -H "Content-Type: application/json" -d '{"organization_id": "ORG_ID"}'
│
├ GET https://api.internet.dev/api/posts/reception/[id]
│ This endpoint is open for public posts; a private post requires the API key of someone who can read it
│ See daily visits, referring domains, and discovered backlinks for a post with reception tracking enabled
│ curl https://api.internet.dev/api/posts/reception/POST_ID
│
├ POST https://api.internet.dev/api/posts/update
│ This endpoint requires a verified account (level 10+)
│ Edit a post you created to change its content, type, or metadata
│ curl -X POST https://api.internet.dev/api/posts/update -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"id": "POST_ID", "updates": {"data": {"body": "Updated content"}}}'
│
├ POST https://api.internet.dev/api/public-access/add-domain
│ This endpoint requires a verified internet.dev or vmax.ai account (level 10+)
│ Grant vmax.ai access to every verified account on a partner domain and return the updated list
│ curl -X POST https://api.internet.dev/api/public-access/add-domain -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"domain": "example.com"}'
│
├ POST https://api.internet.dev/api/public-access/list
│ This endpoint requires a verified internet.dev or vmax.ai account (level 10+)
│ List the partner domains with vmax.ai access, along with the two permanent admin domains
│ curl -X POST https://api.internet.dev/api/public-access/list -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY"
│
├ POST https://api.internet.dev/api/public-access/remove-domain
│ This endpoint requires a verified internet.dev or vmax.ai account (level 10+)
│ Remove a partner domain from vmax.ai access while keeping its accounts and individual waitlist approvals
│ curl -X POST https://api.internet.dev/api/public-access/remove-domain -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"domain": "example.com"}'
│
├ POST https://api.internet.dev/api/public-access/status
│ This endpoint requires a valid API key
│ Check whether your account is admitted to vmax.ai and whether it can preview team posts, with the reason
│ curl -X POST https://api.internet.dev/api/public-access/status -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY"
│
├ GET https://api.internet.dev/api/slides
│ Verified account; lists your personal decks or authorized organization decks.
│ List slide decks.
│ curl 'https://api.internet.dev/api/slides' -H "x-api-key: YOUR_API_KEY"
│
├ GET https://api.internet.dev/api/slides/[id]
│ Verified account with deck access.
│ Read a deck and its current version.
│ curl 'https://api.internet.dev/api/slides/DECK_UUID' -H "x-api-key: YOUR_API_KEY"
│
├ GET https://api.internet.dev/api/slides/assets/[id]
│ Deck editor, or an organization viewer for a current visible image.
│ Read image status and a temporary URL.
│ curl 'https://api.internet.dev/api/slides/assets/ASSET_UUID?deck_id=DECK_UUID' -H "x-api-key: YOUR_API_KEY"
│
├ POST https://api.internet.dev/api/slides/assets/complete
│ Deck editor.
│ Validate an uploaded image through a background job.
│ curl -X POST 'https://api.internet.dev/api/slides/assets/complete' -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"deck_id":"DECK_UUID","asset_id":"ASSET_UUID","idempotency_key":"image-complete-001"}'
│
├ POST https://api.internet.dev/api/slides/assets/create
│ Deck editor.
│ Reserve a private image upload.
│ curl -X POST 'https://api.internet.dev/api/slides/assets/create' -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"deck_id":"DECK_UUID","file":"chart.png","type":"image/png","size":1024,"sha256":"SHA256_HEX","idempotency_key":"image-001"}'
│
├ POST https://api.internet.dev/api/slides/assets/delete
│ Deck editor.
│ Delete an image unreferenced by retained content.
│ curl -X POST 'https://api.internet.dev/api/slides/assets/delete' -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"deck_id":"DECK_UUID","asset_id":"ASSET_UUID","idempotency_key":"image-delete-001"}'
│
├ GET https://api.internet.dev/api/slides/capabilities
│ Public.
│ Read available slide formats, fonts, templates, and limits.
│ curl 'https://api.internet.dev/api/slides/capabilities'
│
├ POST https://api.internet.dev/api/slides/create
│ Verified account; organization member when domain is supplied.
│ Create a personal or organization deck from Markdown, JSON, or a template.
│ curl -X POST 'https://api.internet.dev/api/slides/create' -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"markdown":"# Quarterly review\nResults","idempotency_key":"review-create-001"}'
│
├ POST https://api.internet.dev/api/slides/delete
│ Personal owner, organization admin, or platform admin.
│ Delete a deck and revoke its publications.
│ curl -X POST 'https://api.internet.dev/api/slides/delete' -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"id":"DECK_UUID","expected_version":2,"idempotency_key":"review-delete-003"}'
│
├ POST https://api.internet.dev/api/slides/exports/create
│ Deck editor.
│ Queue a specific revision for HTML, PDF, or PNG rendering.
│ curl -X POST 'https://api.internet.dev/api/slides/exports/create' -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"deck_id":"DECK_UUID","revision_id":"REVISION_UUID","format":"pdf","idempotency_key":"export-001"}'
│
├ GET https://api.internet.dev/api/slides/jobs/[id]
│ Deck editor.
│ Poll a render or image job and obtain completed artifacts.
│ curl 'https://api.internet.dev/api/slides/jobs/JOB_UUID?deck_id=DECK_UUID' -H "x-api-key: YOUR_API_KEY"
│
├ POST https://api.internet.dev/api/slides/jobs/cancel
│ Authorized job requester or deck manager.
│ Cancel pending work.
│ curl -X POST 'https://api.internet.dev/api/slides/jobs/cancel' -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"deck_id":"DECK_UUID","job_id":"JOB_UUID","idempotency_key":"cancel-001"}'
│
├ POST https://api.internet.dev/api/slides/present
│ Public; deck presentation key in the body.
│ Read the current saved revision as audience content when the key matches data.presentation_key.
│ curl -X POST 'https://api.internet.dev/api/slides/present' -H "Content-Type: application/json" -d '{"id":"DECK_UUID","key":"PRESENTATION_KEY"}'
│
├ GET https://api.internet.dev/api/slides/public/[id]
│ Public; active publication only.
│ Read published audience content without notes or hidden slides.
│ curl 'https://api.internet.dev/api/slides/public/PUBLICATION_UUID'
│
├ POST https://api.internet.dev/api/slides/publish
│ Personal owner, organization admin, or platform admin.
│ Publish a successfully rendered audience revision.
│ curl -X POST 'https://api.internet.dev/api/slides/publish' -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"deck_id":"DECK_UUID","revision_id":"REVISION_UUID","expected_version":2,"idempotency_key":"publish-001"}'
│
├ GET https://api.internet.dev/api/slides/revisions
│ Deck editor.
│ List retained deck revisions.
│ curl 'https://api.internet.dev/api/slides/revisions?deck_id=DECK_UUID' -H "x-api-key: YOUR_API_KEY"
│
├ GET https://api.internet.dev/api/slides/revisions/[id]
│ Deck editor.
│ Read a retained content revision.
│ curl 'https://api.internet.dev/api/slides/revisions/REVISION_UUID?deck_id=DECK_UUID' -H "x-api-key: YOUR_API_KEY"
│
├ POST https://api.internet.dev/api/slides/revisions/restore
│ Deck editor.
│ Restore retained content as a new revision.
│ curl -X POST 'https://api.internet.dev/api/slides/revisions/restore' -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"deck_id":"DECK_UUID","revision_id":"REVISION_UUID","expected_version":2,"idempotency_key":"restore-001"}'
│
├ POST https://api.internet.dev/api/slides/unpublish
│ Personal owner, organization admin, or platform admin.
│ Revoke the active public revision.
│ curl -X POST 'https://api.internet.dev/api/slides/unpublish' -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"deck_id":"DECK_UUID","expected_version":3,"idempotency_key":"unpublish-001"}'
│
├ POST https://api.internet.dev/api/slides/update
│ Deck editor.
│ Save a version-checked deck update.
│ curl -X POST 'https://api.internet.dev/api/slides/update' -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"id":"DECK_UUID","expected_version":1,"markdown":"# Updated review","idempotency_key":"review-update-002"}'
│
├ GET https://api.internet.dev/api/status
│ This endpoint is open to the public
│ Check if the API server is running and all services are operational
│ curl https://api.internet.dev/api/status
│
├ GET https://api.internet.dev/api/status/deploys
│ This endpoint is open to the public
│ See the recent Render deploys of a published service, read when this release was built: internet-apis (default), www-users-garden, terminalgraph, or www-internet-v3
│ curl https://api.internet.dev/api/status/deploys?service=internet-apis
│
├ POST https://api.internet.dev/api/telemetry/events
│ This endpoint is open to the public (an optional API key attributes events to your account)
│ Send a batch of up to 25 telemetry events from an app, game, or website. Events are deduplicated on event_id
│ curl -X POST https://api.internet.dev/api/telemetry/events -H "Content-Type: application/json" -d '{"product_id": "terminal_graph", "client_id": "INSTALLATION_ID", "events": [{"event_id": "EVENT_ID", "event_name": "app_opened", "occurred_at": "2026-11-05T18:00:00Z", "data": {"app_version": "1.2.0"}}]}'
│
├ POST https://api.internet.dev/api/telemetry/metrics/daily
│ This endpoint requires platform administrator access (level 100)
│ Query daily active users for a product over a date range, broken down by sign-in state and app version
│ curl -X POST https://api.internet.dev/api/telemetry/metrics/daily -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"product_id": "terminal_graph", "from": "2026-10-01", "to": "2026-10-31"}'
│
├ POST https://api.internet.dev/api/telemetry/metrics/query
│ This endpoint requires platform administrator access (level 100)
│ Count telemetry events or unique clients over a date range, optionally filtered, bucketed by day, and grouped by event name or a data property
│ curl -X POST https://api.internet.dev/api/telemetry/metrics/query -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"product_id": "terminal_graph", "from": "2026-10-01", "to": "2026-10-31", "bucket": "day", "dimension": "event_name", "metric": "unique_clients"}'
│
├ POST https://api.internet.dev/api/telemetry/metrics/usage
│ This endpoint requires platform administrator access (level 100)
│ See daily active users and average and median session minutes for a product, measured from app heartbeats
│ curl -X POST https://api.internet.dev/api/telemetry/metrics/usage -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"product_id": "terminal_graph", "from": "2026-10-01", "to": "2026-10-31"}'
│
├ POST https://api.internet.dev/api/telemetry/metrics/users
│ This endpoint requires platform administrator access (level 100)
│ List one activity profile per client active in a date range, most recently seen first
│ curl -X POST https://api.internet.dev/api/telemetry/metrics/users -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"product_id": "terminal_graph", "from": "2026-10-01", "to": "2026-10-31", "attributes": ["app_version"]}'
│
├ POST https://api.internet.dev/api/telemetry/subscriptions/summary
│ This endpoint requires platform administrator access (level 100)
│ See subscription checkouts started and completed in a date range, and the current breakdown of subscription statuses
│ curl -X POST https://api.internet.dev/api/telemetry/subscriptions/summary -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"product_id": "terminal_graph", "from": "2026-10-01", "to": "2026-10-31"}'
│
├ GET https://api.internet.dev/api/users
│ This endpoint requires platform administrator access (level 100)
│ List every user registered on the platform for administrative review
│ curl https://api.internet.dev/api/users -H "x-api-key: YOUR_API_KEY"
│
├ POST https://api.internet.dev/api/users/authenticate
│ This endpoint is open to the public
│ Sign in with your email and password, or create a new account if you don't have one
│ curl -X POST https://api.internet.dev/api/users/authenticate -H "Content-Type: application/json" -d '{"email": "you@example.com", "password": "your-password"}'
│
├ POST https://api.internet.dev/api/users/authenticate-agent
│ This endpoint is open to the public
│ Create a paid agent account in one step with a Stripe payment method and start using the API immediately
│ curl -X POST https://api.internet.dev/api/users/authenticate-agent -H "Content-Type: application/json" -d '{"username": "MY_AGENT", "password": "secure-password", "paymentMethodId": "pm_...", "productId": "prod_PblmyGgUwLtqnz"}'
│
├ POST https://api.internet.dev/api/users/authenticate-apple-client
│ This endpoint is open to the public
│ Sign in from a native app with a verified Sign in with Apple identity token, creating an account on first use and returning its API key
│ curl -X POST https://api.internet.dev/api/users/authenticate-apple-client -H "Content-Type: application/json" -d '{"identity_token": "APPLE_IDENTITY_TOKEN"}'
│
├ POST https://api.internet.dev/api/users/authenticate-interstitial
│ This endpoint is open to the public
│ Sign in or sign up with email and password for a first-party app, returning a one-time code and the URL to redirect to
│ curl -X POST https://api.internet.dev/api/users/authenticate-interstitial -H "Content-Type: application/json" -d '{"domain": "REDIRECT_TXT_DEV", "email": "you@example.com", "password": "your-password"}'
│
├ POST https://api.internet.dev/api/users/authenticate-token
│ This endpoint is open to the public
│ Exchange an encrypted OAuth token from auth.internet.dev for your API key
│ curl -X POST https://api.internet.dev/api/users/authenticate-token -H "Content-Type: application/json" -d '{"token": "ENCRYPTED_HEX_TOKEN"}'
│
├ POST https://api.internet.dev/api/users/delete
│ This endpoint requires a valid API key
│ Permanently delete your user account and all associated data
│ curl -X POST https://api.internet.dev/api/users/delete -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"id": "USER_ID"}'
│
├ POST https://api.internet.dev/api/users/exchange-interstitial
│ This endpoint is open to the public
│ Redeem the one-time code from authenticate-interstitial within 30 minutes for your session API key
│ curl -X POST https://api.internet.dev/api/users/exchange-interstitial -H "Content-Type: application/json" -d '{"code": "INTERSTITIAL_CODE"}'
│
├ POST https://api.internet.dev/api/users/get-by-id
│ This endpoint requires platform administrator access (level 100)
│ Look up any user's full profile by their ID for administrative purposes
│ curl -X POST https://api.internet.dev/api/users/get-by-id -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"id": "USER_ID"}'
│
├ GET https://api.internet.dev/api/users/list-by-source
│ This endpoint requires platform administrator access (level 100)
│ Filter the user list by signup source to understand where users are coming from
│ curl -X POST https://api.internet.dev/api/users/list-by-source -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"source": "ios"}'
│
├ GET https://api.internet.dev/api/users/office
│ This endpoint requires platform administrator access (level 100)
│ View all workspace applications submitted by users seeking office access
│ curl https://api.internet.dev/api/users/office -H "x-api-key: YOUR_API_KEY"
│
├ POST https://api.internet.dev/api/users/office/apply
│ This endpoint requires a verified account (level 10+)
│ Submit an application to request access to a physical workspace
│ curl -X POST https://api.internet.dev/api/users/office/apply -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY"
│
├ POST https://api.internet.dev/api/users/office/delete
│ This endpoint requires platform administrator access (level 100)
│ Remove a workspace application from the system
│ curl -X POST https://api.internet.dev/api/users/office/delete -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"id": "APPLICATION_ID"}'
│
├ POST https://api.internet.dev/api/users/office/status
│ This endpoint requires a verified account (level 10+)
│ Check the current status of your workspace access application
│ curl https://api.internet.dev/api/users/office/status -H "x-api-key: YOUR_API_KEY"
│
├ POST https://api.internet.dev/api/users/office/update
│ This endpoint requires platform administrator access (level 100)
│ Modify the details or status of a workspace application
│ curl -X POST https://api.internet.dev/api/users/office/update -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"id": "APPLICATION_ID", "updates": {"status": "approved"}}'
│
├ POST https://api.internet.dev/api/users/public/get-by-id
│ This endpoint is open to the public
│ Look up a user's public profile by their ID without needing authentication
│ curl -X POST https://api.internet.dev/api/users/public/get-by-id -H "Content-Type: application/json" -d '{"id": "USER_ID"}'
│
├ POST https://api.internet.dev/api/users/public/get-by-username
│ This endpoint is open to the public
│ Look up a user's public profile by their username without needing authentication
│ curl -X POST https://api.internet.dev/api/users/public/get-by-username -H "Content-Type: application/json" -d '{"username": "johndoe"}'
│
├ POST https://api.internet.dev/api/users/regenerate-key
│ This endpoint is open to the public
│ Generate a fresh API key if your current one is lost or compromised
│ curl -X POST https://api.internet.dev/api/users/regenerate-key -H "x-api-key: YOUR_API_KEY"
│
├ POST https://api.internet.dev/api/users/reset-password
│ This endpoint is open to the public
│ Request a password reset email when you've forgotten your password
│ curl -X POST https://api.internet.dev/api/users/reset-password -H "Content-Type: application/json" -d '{"email": "you@example.com"}'
│
├ POST https://api.internet.dev/api/users/sms/remove
│ This endpoint requires a valid API key
│ Remove your saved phone number and stop all further texts to it
│ curl -X POST https://api.internet.dev/api/users/sms/remove -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY"
│
├ POST https://api.internet.dev/api/users/sms/request-consent
│ This endpoint requires a verified account (level 10+)
│ Text the consent prompt once to your saved phone number. Reply YES to confirm
│ curl -X POST https://api.internet.dev/api/users/sms/request-consent -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"phone": "+14155550123", "requestId": "550e8400-e29b-41d4-a716-446655440000", "requestConsent": true, "consentVersion": "2026-10-02"}'
│
├ POST https://api.internet.dev/api/users/sms/save
│ This endpoint requires a verified account (level 10+)
│ Save the phone number for Users Garden texts, including its country code. Changing the number clears consent
│ curl -X POST https://api.internet.dev/api/users/sms/save -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"phone": "+14155550123"}'
│
├ POST https://api.internet.dev/api/users/sms/status
│ This endpoint requires a valid API key
│ See your saved phone number, its consent status, and whether texting is available
│ curl -X POST https://api.internet.dev/api/users/sms/status -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY"
│
├ GET https://api.internet.dev/api/users/subscriptions
│ This endpoint is open to the public
│ View available subscription plans and pricing tiers
│ curl https://api.internet.dev/api/users/subscriptions
│
├ POST https://api.internet.dev/api/users/subscriptions/check
│ This endpoint requires a valid API key
│ Verify whether your subscription is currently active and in good standing
│ curl -X POST https://api.internet.dev/api/users/subscriptions/check -H "x-api-key: YOUR_API_KEY"
│
├ POST https://api.internet.dev/api/users/subscriptions/get-by-user-id
│ This endpoint requires a valid API key
│ Retrieve subscription details for a specific user account
│ curl -X POST https://api.internet.dev/api/users/subscriptions/get-by-user-id -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"id": "USER_ID"}'
│
├ POST https://api.internet.dev/api/users/subscriptions/get-current-invoices
│ This endpoint requires a valid API key
│ View your billing history and download invoices from Stripe
│ curl -X POST https://api.internet.dev/api/users/subscriptions/get-current-invoices -H "x-api-key: YOUR_API_KEY"
│
├ POST https://api.internet.dev/api/users/subscriptions/subscribe
│ This endpoint requires a valid API key
│ Create a Stripe Checkout session in subscription mode for the given product
│ curl -X POST https://api.internet.dev/api/users/subscriptions/subscribe -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"productId": "prod_xxx", "successUrl": "https://example.com/success", "cancelUrl": "https://example.com"}'
│
├ POST https://api.internet.dev/api/users/subscriptions/unsubscribe
│ This endpoint requires a valid API key
│ Cancel your subscription and return to the free tier
│ curl -X POST https://api.internet.dev/api/users/subscriptions/unsubscribe -H "x-api-key: YOUR_API_KEY"
│
├ POST https://api.internet.dev/api/users/update
│ This endpoint requires a valid API key, and the id must be your own user id unless you are a platform administrator (level 100)
│ Update the free-form data object on a user profile (name, bio, per-app settings). The updates object IS the data payload: its top-level keys are shallow-merged into the existing data object, so send only the keys you own and every other key survives. Pass forcePush: true to replace the whole data object instead
│ curl -X POST https://api.internet.dev/api/users/update -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"id": "USER_ID", "updates": {"name": "New Name", "my_app_settings": {"theme": "dark"}}}'
│
├ POST https://api.internet.dev/api/users/update-viewer-password
│ This endpoint requires a valid API key
│ Change your current password to a new one for security
│ curl -X POST https://api.internet.dev/api/users/update-viewer-password -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"password": "new-secure-password"}'
│
├ POST https://api.internet.dev/api/users/update-viewer-username
│ This endpoint requires a valid API key
│ Change your username to a new one that isn't already taken
│ curl -X POST https://api.internet.dev/api/users/update-viewer-username -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"username": "new-username"}'
│
├ POST https://api.internet.dev/api/users/verify
│ This endpoint is open to the public
│ Confirm your email address using the verification code sent to your inbox
│ curl -X POST https://api.internet.dev/api/users/verify -H "Content-Type: application/json" -d '{"code": "VERIFICATION_CODE"}'
│
├ POST https://api.internet.dev/api/users/verify-check-by-id
│ This endpoint requires platform administrator access (level 100)
│ Check whether a specific user has verified their email address
│ curl -X POST https://api.internet.dev/api/users/verify-check-by-id -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"id": "USER_ID"}'
│
├ POST https://api.internet.dev/api/users/verify-resend
│ This endpoint requires a valid API key
│ Request another verification email if the original didn't arrive
│ curl -X POST https://api.internet.dev/api/users/verify-resend -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"email": "you@example.com"}'
│
├ GET https://api.internet.dev/api/users/viewer
│ This endpoint requires a valid API key
│ Retrieve your own profile and account details using your API key
│ curl https://api.internet.dev/api/users/viewer -H "x-api-key: YOUR_API_KEY"
│
├ POST https://api.internet.dev/api/users/viewer/generate-add-payment-method-url
│ This endpoint requires a valid API key
│ Get a Stripe billing portal link to add or update your payment method
│ curl -X POST https://api.internet.dev/api/users/viewer/generate-add-payment-method-url -H "x-api-key: YOUR_API_KEY"
│
├ GET https://api.internet.dev/api/users/viewer/get-current-payment-method
│ This endpoint requires a valid API key
│ See the payment method currently on file for your account
│ curl https://api.internet.dev/api/users/viewer/get-current-payment-method -H "x-api-key: YOUR_API_KEY"
│
├ GET https://api.internet.dev/api/users/viewer/likes
│ This endpoint requires a verified account (level 10+)
│ View all the items you have liked across the platform
│ curl https://api.internet.dev/api/users/viewer/likes -H "x-api-key: YOUR_API_KEY"
│
├ GET https://api.internet.dev/api/users/viewer/organizations
│ This endpoint requires a verified account (level 10+)
│ See which organizations you belong to and your role in each
│ curl https://api.internet.dev/api/users/viewer/organizations -H "x-api-key: YOUR_API_KEY"
│
├ POST https://api.internet.dev/api/users/viewer/pay-provider-amount-cents
│ This endpoint requires a valid API key
│ Make a one-time payment of a specific amount through Stripe
│ curl -X POST https://api.internet.dev/api/users/viewer/pay-provider-amount-cents -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"amount_cents": 999}'
│
├ POST https://api.internet.dev/api/waitlist/accept-all
│ This endpoint requires you to be an admin of the relevant organization
│ Accept every pending entry on your organization's waitlist, creating an account for each
│ curl -X POST https://api.internet.dev/api/waitlist/accept-all -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"domain": "your-org.com"}'
│
├ POST https://api.internet.dev/api/waitlist/accept-by-email
│ This endpoint requires a verified account (level 10+) on the organization's email domain, or admin access to the organization
│ Accept one waitlisted email, creating or reusing its account
│ curl -X POST https://api.internet.dev/api/waitlist/accept-by-email -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"domain": "your-org.com", "email": "person@example.com"}'
│
├ POST https://api.internet.dev/api/waitlist/add
│ This endpoint is open to the public
│ Join an organization's waitlist with your email. The response is the same whether or not the email was already on it
│ curl -X POST https://api.internet.dev/api/waitlist/add -H "Content-Type: application/json" -d '{"domain": "your-org.com", "email": "you@example.com"}'
│
├ GET https://api.internet.dev/api/waitlist/list-by-domain
│ This endpoint requires a verified account (level 10+) on the organization's email domain, or admin access to the organization
│ List an organization's waitlist entries and whether each has been accepted, newest first, with pagination
│ curl "https://api.internet.dev/api/waitlist/list-by-domain?domain=your-org.com&limit=50" -H "x-api-key: YOUR_API_KEY"
│
├ POST https://api.internet.dev/api/waitlist/revoke-by-email
│ This endpoint requires a verified account (level 10+) on the organization's email domain, or admin access to the organization
│ Return an accepted waitlist entry to pending while keeping its account
│ curl -X POST https://api.internet.dev/api/waitlist/revoke-by-email -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"domain": "your-org.com", "email": "person@example.com"}'
│
└ POST https://api.internet.dev/api/waitlist/status
This endpoint requires a valid API key (checking another email requires an account on the organization's email domain or admin access to the organization)
Check whether you, or another email, are on an organization's waitlist and have been accepted
curl -X POST https://api.internet.dev/api/waitlist/status -H "Content-Type: application/json" -H "x-api-key: YOUR_API_KEY" -d '{"domain": "your-org.com"}'