Sedes
v1
REST API

Sedes API Documentation

Programmatic access to business formation, state data, compliance tracking, and AI-powered recommendations. Build formation flows into your product.

Authentication

All API requests require authentication via one of two methods:

API Key (recommended for server-to-server)

Pass your API key in the x-api-key header.

curl https://sedesra.com/api/v1/states \
  -H "x-api-key: sedes_live_YOUR_KEY_HERE"

Bearer Token (for logged-in users)

Pass a Firebase ID token in the Authorization header.

curl https://sedesra.com/api/v1/states \
  -H "Authorization: Bearer FIREBASE_ID_TOKEN"

Rate Limits

TierRate LimitPrice
Free100 calls/hour$0
Pro1,000 calls/hour$29/mo
Enterprise10,000 calls/hourContact us

Rate limits are enforced per API key on a rolling 1-hour window. Exceeding the limit returns HTTP 429.

Response Format

Success

{
  "success": true,
  "data": { ... },
  "meta": {
    "requestId": "uuid",
    "timestamp": "2026-04-07T..."
  }
}

Error

{
  "success": false,
  "error": {
    "code": "INVALID_STATE",
    "message": "State 'XX' is not valid"
  },
  "meta": {
    "requestId": "uuid",
    "timestamp": "2026-04-07T..."
  }
}

Endpoints

GET/api/v1/states

List all 50 states + DC with formation info.

Query Parameters

anonymous(boolean)Filter to states allowing anonymous LLCs.
noIncomeTax(boolean)Filter to states with no income tax.

Response

{
  "success": true,
  "data": {
    "states": [
      {
        "code": "WY",
        "name": "Wyoming",
        "llcFilingFee": 100,
        "annualReportFee": 60,
        "franchiseTax": null,
        "anonymousLlcAllowed": true,
        "memberDisclosure": false,
        "stateIncomeTax": false,
        "processingDays": 3
      }
    ],
    "count": 51
  },
  "meta": { "requestId": "...", "timestamp": "..." }
}
GET/api/v1/states/{code}

Get detailed info for a single state (filing fees, compliance, privacy, taxes, pros/cons).

Response

{
  "success": true,
  "data": {
    "code": "WY",
    "name": "Wyoming",
    "filing": { "llcFilingFee": 100, "corpFilingFee": 100, "standardDays": 3 },
    "compliance": { "annualReportFee": 60, "franchiseTax": null },
    "privacy": { "anonymousLlcAllowed": true, "memberDisclosure": false },
    "taxes": { "stateIncomeTax": false },
    "pros": ["No state income tax", "Strong asset protection"],
    "cons": ["May require foreign qualification in your home state"],
    "estimatedCosts": { "firstYearTotal": 309, "ongoingAnnual": 209 }
  }
}
POST/api/v1/recommend-state

Get AI-powered state recommendations ranked by score.

Request Body

{
  "businessType": "ecommerce",
  "homeState": "CA",
  "privacyLevel": 4,
  "budget": "low",
  "entityType": "llc",
  "assetProtection": true
}

Response

{
  "success": true,
  "data": {
    "recommendations": [
      {
        "stateCode": "WY",
        "stateName": "Wyoming",
        "score": 93,
        "reasons": ["Anonymous LLCs allowed", "No state income tax", "Strong asset protection"],
        "warnings": [],
        "costs": { "estimatedFirstYear": 309, "estimatedAnnual": 209 }
      }
    ]
  }
}
POST/api/v1/check-name

Check business name availability and format compliance.

Request Body

{
  "name": "Acme Ventures LLC",
  "state": "WY"
}

Response

{
  "success": true,
  "data": {
    "available": true,
    "name": "Acme Ventures LLC",
    "state": "WY",
    "issues": [],
    "suggestions": [],
    "requirements": ["Must include an LLC designator."]
  }
}
POST/api/v1/quote

Get an itemized formation quote with competitor comparison.

Request Body

{
  "state": "WY",
  "entityType": "llc",
  "addOns": ["nominee_organizer", "expedited_filing"]
}

Response

{
  "success": true,
  "data": {
    "quote": {
      "state": "WY",
      "entityType": "llc",
      "lineItems": [
        { "item": "WY LLC filing fee", "amount": 100, "recurring": false },
        { "item": "Sedes formation service", "amount": 29, "recurring": false }
      ],
      "totalDueNow": 179,
      "recurringCosts": [...],
      "estimatedAnnualCost": 209
    },
    "competitorComparison": [...]
  }
}
POST/api/v1/formations

Start a new business formation. Creates a Business and Order in Firestore.

Request Body

{
  "state": "WY",
  "entityType": "llc",
  "businessName": "Acme Ventures LLC",
  "managementType": "member-managed",
  "members": [{ "name": "Jane Doe", "role": "member", "ownershipPercent": 100 }],
  "purpose": "Any lawful purpose.",
  "privacyLevel": "enhanced",
  "tier": "launch"
}

Response

{
  "success": true,
  "data": {
    "formationId": "abc123",
    "orderId": "ord456",
    "paymentUrl": "/checkout?orderId=ord456",
    "estimatedCompletionDate": "2026-04-17",
    "status": "pending_payment"
  }
}
GET/api/v1/formations/{id}

Check the status of a formation including documents and compliance items.

Response

{
  "success": true,
  "data": {
    "formationId": "abc123",
    "businessName": "Acme Ventures LLC",
    "status": "active",
    "filingStatus": "completed",
    "documents": [...],
    "complianceItems": [...]
  }
}
GET/api/v1/formations/{id}/documents

List all documents generated for a formation.

Response

{
  "success": true,
  "data": {
    "formationId": "abc123",
    "documents": [
      { "type": "operating_agreement", "name": "Operating Agreement", "status": "completed" }
    ],
    "expectedDocuments": [...]
  }
}
GET/api/v1/compliance/{businessId}

Get all compliance requirements and upcoming deadlines for a business.

Response

{
  "success": true,
  "data": {
    "businessId": "abc123",
    "upcomingItems": [...],
    "recurringRequirements": [
      { "type": "annual_report", "frequency": "annual", "estimatedCost": 60 }
    ]
  }
}
POST/api/v1/compliance/requirements

Get compliance requirements for any state/entity type (no business needed).

Request Body

{
  "state": "WY",
  "entityType": "llc"
}

Response

{
  "success": true,
  "data": {
    "state": "WY",
    "requirements": [
      {
        "type": "annual_report",
        "title": "Annual Report",
        "frequency": "annual",
        "estimatedCost": 60,
        "required": true
      }
    ],
    "estimatedAnnualCost": 209
  }
}
POST/api/v1/keys

Create a new API key (requires Bearer token auth).

Request Body

{
  "name": "My Production Key"
}

Response

{
  "success": true,
  "data": {
    "id": "key123",
    "key": "sedes_live_aBcDeFgHiJkLmNoPqRsTuVwXyZ",
    "name": "My Production Key",
    "tier": "free",
    "rateLimit": 100,
    "note": "Save this key now. It will not be shown again."
  }
}

Code Examples

curl

# Get state recommendations
curl -X POST https://sedesra.com/api/v1/recommend-state \
  -H "x-api-key: sedes_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "entityType": "llc",
    "homeState": "CA",
    "privacyLevel": 4,
    "budget": "low",
    "assetProtection": true
  }'

JavaScript / TypeScript

const API_KEY = "sedes_live_YOUR_KEY";
const BASE = "https://sedesra.com/api/v1";

// Get all states with no income tax
const res = await fetch(`${BASE}/states?noIncomeTax=true`, {
  headers: { "x-api-key": API_KEY },
});
const { data } = await res.json();
console.log(data.states);

// Get a formation quote
const quote = await fetch(`${BASE}/quote`, {
  method: "POST",
  headers: {
    "x-api-key": API_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    state: "WY",
    entityType: "llc",
    addOns: ["expedited_filing"],
  }),
});
const { data: quoteData } = await quote.json();
console.log(`Total: $${quoteData.quote.totalDueNow}`);

Python

import requests

API_KEY = "sedes_live_YOUR_KEY"
BASE = "https://sedesra.com/api/v1"
headers = {"x-api-key": API_KEY, "Content-Type": "application/json"}

# Check name availability
resp = requests.post(BASE + "/check-name", headers=headers, json={
    "name": "Acme Ventures LLC",
    "state": "WY",
})
data = resp.json()["data"]
print("Available:", data["available"])

# Get compliance requirements before forming
resp = requests.post(BASE + "/compliance/requirements", headers=headers, json={
    "state": "WY",
    "entityType": "llc",
})
reqs = resp.json()["data"]
print("Annual cost: $" + str(reqs["estimatedAnnualCost"]))
for req in reqs["requirements"]:
    print("  -", req["title"] + ":", req["frequency"])

Ready to integrate?

Create your API key and start building business formation into your product in minutes.

Get Your API Key