{"openapi":"3.1.0","info":{"title":"Limito Opportunity Data API","version":"1.0.0","description":"Canada-first, authenticated read-only access to maintained opportunity data. Website=interface; data/history=asset; API=distribution. Unknown facts remain unknown. Pilot access tiers do not grant redistribution rights or establish subscription pricing.","contact":{"email":"contact@limito.net"}},"servers":[{"url":"https://limito.net"}],"externalDocs":{"url":"https://limito.net/developers","description":"Developer guide and pilot access"},"paths":{"/api/v1/opportunities":{"get":{"operationId":"listOpportunities","summary":"Find public earning opportunities","description":"Records currently represent earning platforms, not individual vacancies. Invalid/unknown query parameters return 400. Results sort by factual review date descending, then id ascending.","security":[{"bearerAuth":[]}],"parameters":[{"name":"country","in":"query","description":"Confirmed resident eligibility. Country support does not imply every province is supported.","schema":{"type":"string","pattern":"^[A-Za-z]{2}$","examples":["CA"]}},{"name":"province","in":"query","description":"Requires country=CA. Only explicit regional coverage or evidenced all-region coverage matches; exclusions take precedence.","schema":{"type":"string","examples":["QC","CA-QC"]}},{"name":"remote","in":"query","description":"Remote availability. Unknown evidence does not match either boolean.","schema":{"type":"boolean"}},{"name":"verified","in":"query","description":"Fresh factual review within 14 days, without a later conflicting check or listing change. Unknown evidence does not match either boolean.","schema":{"type":"boolean"}},{"name":"degree_required","in":"query","description":"Whether a degree is explicitly required. Unknown evidence does not match either boolean.","schema":{"type":"boolean"}},{"name":"experience_required","in":"query","description":"Whether experience is explicitly required. Unknown evidence does not match either boolean.","schema":{"type":"boolean"}},{"name":"flexible","in":"query","description":"Explicitly flexible scheduling. Unknown evidence does not match either boolean.","schema":{"type":"boolean"}},{"name":"category","in":"query","description":"Primary earning category.","schema":{"type":"string","enum":["online","sell","local","host"]}},{"name":"checked_after","in":"query","description":"ISO date or timestamp. Uses the factual review date, not the most recent link check or copy edit.","schema":{"type":"string","examples":["2026-09-30"]}},{"name":"page","in":"query","description":"One-based page number.","schema":{"type":"integer","minimum":1,"maximum":1000000,"default":1}},{"name":"limit","in":"query","description":"Maximum records per page: free 10, developer 50, commercial 100.","schema":{"type":"integer","minimum":1,"maximum":100,"default":10}}],"responses":{"200":{"description":"Public opportunity data. Keep the evidence and verification dates with the result.","headers":{"X-RateLimit-Limit":{"description":"Daily request allowance.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests remaining today.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"UTC midnight reset as Unix seconds.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["data","pagination","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Opportunity"}},"pagination":{"$ref":"#/components/schemas/Pagination"},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"400":{"description":"Invalid filter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, invalid, expired or revoked key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient history access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Public opportunity not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request limit reached; obey Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Database unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/jobs":{"get":{"operationId":"listJobsAlias","summary":"Convenient alias for the earning-opportunity catalog","description":"Records currently represent earning platforms, not individual vacancies. Invalid/unknown query parameters return 400. Results sort by factual review date descending, then id ascending.","security":[{"bearerAuth":[]}],"parameters":[{"name":"country","in":"query","description":"Confirmed resident eligibility. Country support does not imply every province is supported.","schema":{"type":"string","pattern":"^[A-Za-z]{2}$","examples":["CA"]}},{"name":"province","in":"query","description":"Requires country=CA. Only explicit regional coverage or evidenced all-region coverage matches; exclusions take precedence.","schema":{"type":"string","examples":["QC","CA-QC"]}},{"name":"remote","in":"query","description":"Remote availability. Unknown evidence does not match either boolean.","schema":{"type":"boolean"}},{"name":"verified","in":"query","description":"Fresh factual review within 14 days, without a later conflicting check or listing change. Unknown evidence does not match either boolean.","schema":{"type":"boolean"}},{"name":"degree_required","in":"query","description":"Whether a degree is explicitly required. Unknown evidence does not match either boolean.","schema":{"type":"boolean"}},{"name":"experience_required","in":"query","description":"Whether experience is explicitly required. Unknown evidence does not match either boolean.","schema":{"type":"boolean"}},{"name":"flexible","in":"query","description":"Explicitly flexible scheduling. Unknown evidence does not match either boolean.","schema":{"type":"boolean"}},{"name":"category","in":"query","description":"Primary earning category.","schema":{"type":"string","enum":["online","sell","local","host"]}},{"name":"checked_after","in":"query","description":"ISO date or timestamp. Uses the factual review date, not the most recent link check or copy edit.","schema":{"type":"string","examples":["2026-09-30"]}},{"name":"page","in":"query","description":"One-based page number.","schema":{"type":"integer","minimum":1,"maximum":1000000,"default":1}},{"name":"limit","in":"query","description":"Maximum records per page: free 10, developer 50, commercial 100.","schema":{"type":"integer","minimum":1,"maximum":100,"default":10}}],"responses":{"200":{"description":"Public opportunity data. Keep the evidence and verification dates with the result.","headers":{"X-RateLimit-Limit":{"description":"Daily request allowance.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests remaining today.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"UTC midnight reset as Unix seconds.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["data","pagination","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Opportunity"}},"pagination":{"$ref":"#/components/schemas/Pagination"},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"400":{"description":"Invalid filter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, invalid, expired or revoked key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient history access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Public opportunity not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request limit reached; obey Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Database unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/opportunities/{id}":{"get":{"operationId":"getOpportunity","summary":"Get a public opportunity and its current recorded facts","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Public opportunity data. Keep the evidence and verification dates with the result.","headers":{"X-RateLimit-Limit":{"description":"Daily request allowance.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests remaining today.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"UTC midnight reset as Unix seconds.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["data","meta"],"properties":{"data":{"$ref":"#/components/schemas/Opportunity"},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"400":{"description":"Invalid filter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, invalid, expired or revoked key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient history access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Public opportunity not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request limit reached; obey Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Database unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/opportunities/{id}/history":{"get":{"operationId":"getVerificationHistory","summary":"Read append-only verification history","description":"Requires developer or commercial access. Link checks and factual reviews remain distinct. New corrections do not overwrite older events.","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"page","in":"query","description":"One-based page number.","schema":{"type":"integer","minimum":1,"maximum":1000000,"default":1}},{"name":"limit","in":"query","description":"Maximum records per page: free 10, developer 50, commercial 100.","schema":{"type":"integer","minimum":1,"maximum":100,"default":10}}],"responses":{"200":{"description":"Public opportunity data. Keep the evidence and verification dates with the result.","headers":{"X-RateLimit-Limit":{"description":"Daily request allowance.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests remaining today.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"UTC midnight reset as Unix seconds.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["data","pagination","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/VerificationEvent"}},"pagination":{"$ref":"#/components/schemas/Pagination"},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"400":{"description":"Invalid filter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, invalid, expired or revoked key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient history access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Public opportunity not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request limit reached; obey Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Database unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"Limito API key","description":"Send Authorization: Bearer limito_... . Keys are issued during the pilot; never include them in query strings or browser code."}},"schemas":{"CountryEligibility":{"type":"object","additionalProperties":false,"required":["country","status","allRegions","includedRegions","excludedRegions","sourceUrls","note"],"properties":{"country":{"type":"string","pattern":"^[A-Z]{2}$"},"status":{"enum":["eligible","ineligible","unknown"]},"allRegions":{"type":["boolean","null"],"description":"null means unknown; it never passes a true or false filter."},"includedRegions":{"type":"array","items":{"type":"string"}},"excludedRegions":{"type":"array","items":{"type":"string"}},"sourceUrls":{"type":"array","items":{"type":"string","format":"uri"}},"note":{"type":"string"}}},"Pay":{"type":"object","additionalProperties":false,"required":["minimum","maximum","currency","unit","sourceUrl"],"properties":{"minimum":{"type":"number","minimum":0},"maximum":{"type":"number","minimum":0},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"unit":{"enum":["hour","year","task","audio-minute"]},"sourceUrl":{"type":"string","format":"uri"}}},"Facts":{"type":"object","additionalProperties":false,"required":["countryEligibility","remote","degreeRequired","experienceRequired","flexibleSchedule","pay","languages","applicationStatus","applicationUrl","requirements","riskIndicators"],"properties":{"countryEligibility":{"type":"array","items":{"$ref":"#/components/schemas/CountryEligibility"}},"remote":{"type":["boolean","null"],"description":"null means unknown; it never passes a true or false filter."},"degreeRequired":{"type":["boolean","null"],"description":"null means unknown; it never passes a true or false filter."},"experienceRequired":{"type":["boolean","null"],"description":"null means unknown; it never passes a true or false filter."},"flexibleSchedule":{"type":["boolean","null"],"description":"null means unknown; it never passes a true or false filter."},"pay":{"anyOf":[{"$ref":"#/components/schemas/Pay"},{"type":"null"}]},"languages":{"type":"array","items":{"type":"string"},"description":"Recorded language requirements; an empty array means none have been recorded."},"applicationStatus":{"enum":["open","waitlist","closed","unknown"]},"applicationUrl":{"type":["string","null"],"format":"uri"},"requirements":{"type":"array","items":{"type":"string"}},"riskIndicators":{"type":"array","description":"Evidenced cautions. An empty list is not a safety guarantee.","items":{"type":"object","additionalProperties":false,"required":["code","note","sourceUrl"],"properties":{"code":{"type":"string"},"note":{"type":"string"},"sourceUrl":{"type":"string","format":"uri"}}}}}},"Verification":{"type":"object","additionalProperties":false,"required":["status","lastCheckedAt","freshUntil","firstCheckedAt","reviewCount","historyCount","changeCount","applicationLink"],"properties":{"status":{"enum":["verified","unverified","stale","needs-review"]},"lastCheckedAt":{"type":["string","null"],"format":"date-time"},"freshUntil":{"type":["string","null"],"format":"date-time"},"firstCheckedAt":{"type":["string","null"],"format":"date-time"},"reviewCount":{"type":"integer","minimum":0},"historyCount":{"type":"integer","minimum":0},"changeCount":{"type":"integer","minimum":0},"applicationLink":{"anyOf":[{"type":"object","additionalProperties":false,"required":["outcome","checkedAt"],"properties":{"outcome":{"enum":["verified","reachable","blocked","unreachable","closed","needs-review"]},"checkedAt":{"type":"string","format":"date-time"}}},{"type":"null"}]}}},"Opportunity":{"type":"object","additionalProperties":false,"required":["id","kind","company","applicationUrl","category","subcategory","summary","overview","startingCost","workModel","publishedAt","facts","verification","sources"],"properties":{"id":{"type":"string"},"kind":{"const":"earning-platform"},"company":{"type":"object","additionalProperties":false,"required":["name","website"],"properties":{"name":{"type":"string"},"website":{"type":"string","format":"uri"}}},"applicationUrl":{"type":"string","format":"uri"},"category":{"enum":["online","sell","local","host"]},"subcategory":{"type":["string","null"]},"summary":{"type":"string"},"overview":{"type":"string"},"startingCost":{"type":"string"},"workModel":{"type":"string"},"publishedAt":{"type":["string","null"],"format":"date-time"},"facts":{"$ref":"#/components/schemas/Facts"},"verification":{"$ref":"#/components/schemas/Verification"},"sources":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["url","checkedAt"],"properties":{"url":{"type":"string","format":"uri"},"checkedAt":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"},{"type":"null"}]}}}}}},"VerificationEvent":{"type":"object","additionalProperties":false,"required":["id","slug","checkedAt","checkType","outcome","sourceUrls","facts","note"],"properties":{"id":{"type":"string"},"slug":{"type":"string"},"checkedAt":{"type":"string","format":"date-time"},"checkType":{"enum":["review","application-link"]},"outcome":{"enum":["verified","reachable","blocked","unreachable","closed","needs-review"]},"sourceUrls":{"type":"array","items":{"type":"string","format":"uri"}},"facts":{"anyOf":[{"$ref":"#/components/schemas/Facts"},{"type":"null"}]},"note":{"type":"string"}}},"Pagination":{"type":"object","additionalProperties":false,"required":["page","limit","total","hasMore"],"properties":{"page":{"type":"integer"},"limit":{"type":"integer"},"total":{"type":"integer"},"hasMore":{"type":"boolean"},"next":{"type":["string","null"],"format":"uri"}}},"Meta":{"type":"object","additionalProperties":false,"required":["version","generatedAt","freshnessDays","kind","tier"],"properties":{"version":{"const":"1"},"generatedAt":{"type":"string","format":"date-time"},"freshnessDays":{"const":14},"kind":{"const":"earning-platform"},"tier":{"enum":["free","developer","commercial"]}}},"Error":{"type":"object","additionalProperties":false,"required":["error","documentation"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}},"documentation":{"type":"string","format":"uri"}}}}}}